Ir para conteúdo
Fórum Script Brasil

Duduh_Capixaba

Membros
  • Total de itens

    258
  • Registro em

  • Última visita

Tudo que Duduh_Capixaba postou

  1. Cara, no Excel tem uma forma de você gravar sua planilha em formato texto. A partir daí acho que fica mais fácil seu trabalho. Aqui mesmo no fórum você acha "n" formas de importar txt para vários bancos de dados diferentes. Abraço!
  2. Propriedade "IndexFieldNames" da tabela. Basta digitar o nome do campo que você deseja ordenar. Se você desejar usar mais de um campo como ordenação, por exemplo, primeiro campo: NOME, segundo campo: DATA_NASC, basta separar o nome dos campos por um ";" (ponto-e-vírgula, sem as aspas). Ficaria: NOME;DATA_NASC. Tenta aí e dpois posta. Abraço!
  3. Resolvido pessoal! Encontrei a propriedade que eu queria. Vou deixar postado caso alguém precise: A propriedade é a "Modified" da Table, no meu caso, tbTable.Modified. Ela indica se a tabela sofreu alguma alteração, com isso você pode controlar se que postar ou cancelar uma edição da tabela, por exemplo. Este é meu código verdadeiro (uma parte dele): begin . . . tbTable.Open; tbTable.First; ProgressBar1.Max := tbTable.RecordCount; while not tbTable.Eof do begin tbTable.Edit; if tbTable.FieldByName('ECF1').Value > ' ' then begin if tbTable.FieldByName('ECF1').Value = AL01E then tbTable.FieldByName('ECF1').Value := AL01D . . . end; if tbTable.FieldByName('ECF2').Value > ' ' then begin if tbTable.FieldByName('ECF2').Value = AL01E then tbTable.FieldByName('ECF2').Value := AL01D . . . end; if tbTable.FieldByName('ECF3').Value > ' ' then begin if tbTable.FieldByName('ECF3').Value = AL01E then tbTable.FieldByName('ECF3').Value := AL01D . . . end; if tbTable.FieldByName('ECF4').Value > ' ' then begin if tbTable.FieldByName('ECF4').Value = AL01E then tbTable.FieldByName('ECF4').Value := AL01D . . . end; if tbTable.Modified then tbTable.Post else tbTable.Cancel; tbTable.Next; ProgressBar1.Position := ProgressBar1.Position + 1; end; //end while . . . end; Agora posso controlar quando quero postar e quando quero cancelar a edição da tabela, sem uso de variáveis, como eu estava fazendo antes. Obrigado pela ajuda aê, e espero que essa dica possa ajudar mais alguém. Abraço!
  4. Olá! Na verdade eu já estou com meu programa rodando assim, do jeito que você descreveu, só que ao invés de comparar com a variável, eu comparo o campo novamente, assim: var Aux : String begin if tbTable.Fields[1].Value = '' then begin Aux := tbTable.Fields[1].Value; tbTable.Edit; tbTable.Fields[1].Value := variável; end; if tbTable.Fields[1].Value = Aux then tbTable.Cancel; else tbTable.Post; end; Só que estou usando muitas variáveis string. Gostaria de tirá-las e usar algum comando da própria tbTable, se isto for possível. Obrigado pela resposta, abraço!
  5. Olá pessoal! Eu tenho um código em loop onde vários campos recebem dados dependendo se ele já possui valores. Isso não vem muito ao caso, o importante é que preciso saber quando um campo recebe dados, exemplo: if tbTable.Fields[1].Value = '' then begin tbTable.Edit; tbTable.Fields[1].Value := variável; tbTable.Post; end; Eu gostaria que antes da linha "tbTable.Post" eu soubesse se o campo "Fields[1]" recebeu a variável. Eu poderia muito bem colocar uma outra variável do tipo boolean após a linha "tbTable.Fields[1].Value := variável" como uma verificação, mas vi uma propriedade da tabela chamada OnChange e gostaria de usá-la, ao invés de criar uma nova variável. Pois o programa é muito mais complexo do que este pequeno trecho, e eu teria que implementar várias variáveis de verificação. Espero ter sido claro.
  6. Acho que o seu maior problema é a estrutura da base de dados. Será que não seria melhor você tentar modificar essa base de dados?! Tente colocar um "_" (underline) entre o nome e os sobrenomes, por exemplo. Acho que assim vai ficar mais fácil pra importar.
  7. Pois é Jhonas, tb achei estranho o fato de o meu código retornar uma msg de erro, pois no help do Delphi está bem claro que o código deveria funcionar daquela maneira. O seu código funciona sim, eu mesmo já havia feito dessa forma, só que usando o EOF. Mas tudo bem, só queria saber o porque do meu código não funcionar. Eu resolvi o problema colocando um ADOQuery no projeto e esvaziando a tabela via SQL, que eu acho que é mais rápido do que um loop. Obrigado pela resposta, abraço!
  8. Olá moçada! Tenho um ADOTable com vários registros. Como eu faço pra limpar, esvaziar, deletar todos os registros dessa tabela? Tentei usar o comando Tabela.DeleteRecords, que está na ajuda do Delphi, mas me retorna o seguinte erro: "Operação não permitida neste contexto". Meu código está assim: Tabela.Open; Tabela.DeleteRecords; Tabela.Close; Tentei vários outros códigos, mas não obtive sucesso. Peço a ajuda de vocês. Vlw!
  9. Perfeito Micheus! Obrigado a você e ao José Luiz. Todas as duas funções resolveram meu problema. Abraço! Obs: Tópico resolvido
  10. Testei os dois métodos e eles funcionaram! A função do José Luiz é boa, mas ignora campos nulos e tive que fazer umas modificações no código. A função do Micheus tb é boa, mas está alinhando o texto à direita, sendo que preciso dele alinhado à esquerda. Tentei trocar o comando "RightStr" para "LeftStr", mas não funcionou. As colunas são criadas, mas sem texto... Com a modificação, só aparecem um monte de espaços vazios. Vou continuar tentando, mas vocês já me deram um grande empurrão. Obrigado! ---------------------------------------------------------------------------------------------- Edição: Só pra dizer que a função do José Luiz funcionou como eu queria. Para que ela passe a enxergar os campos nulos, basta mudar a seguinte linha: if length ( mTEXTO ) > 0 then begin para: if length ( mTEXTO ) >= 0 then begin Pronto, só isso. Estou usando ela, mas gostaria que o Micheus me ajudasse a modificar a função dele tb. Abraço!
  11. Opa, vlw moçada! Vou testar os dois métodos e assim que tiver um resultado posto aqui. Micheus, eu estava procurando pela palavra "colunado", por isso não encontrei esse tópico. Obrigado!
  12. Olá pessoal! Como já deu pra perceber no título, eu consigo exportar os dados da minha base de dados para um arquivo texto, isso é fácil. Exportar os dados separados com ";" (ponto e vírgula) ou qualquer outro caracter eu já consegui. Mas meu caso é diferente, e não encontrei nada relacionado com isso aqui no fórum. Vamos lá: Tenho que criar um arquivo txt, com os dados dos clientes do meu sistema, no seguinte layout: Campo ----- Início ----- Tamanho ----- Tipo de Dado ---------------------------------------------------------------------- Código ----- 001 ----- 15 ----- Alfanumérico Nome ----- 016 ----- 40 ----- Alfanumérico CPFCGC ----- 107 ----- 20 ----- Numérico Endereço ----- 127 ----- 40 ----- Alfanumérico Bairro ----- 167 ----- 15 ----- Alfanumérico Cidade ----- 182 ----- 15 ----- Alfanumérico UF ----- 197 ----- 02 ----- Alfanumérico CEP ----- 199 ----- 08 ----- Numérico Fone ----- 207 ----- 20 ----- Alfanumérico Ou seja, o arquivo texto deve ser montado por colunas. Cada uma começa em um determinado ponto do arquivo e tem um determinado tamanho. Mas não sei como contar espaços dentro de um txt. Alguém tem alguma idéia de algum comando que eu possa mover o cursor dentro do arquivo? Esse é o código que eu uso para exportar com ponto e vírgula: procedure TForm1.Button2Click(Sender: TObject); var F: TextFile; begin AssignFile(F, NomeArq); Rewrite(F); Table1.Open; Table1.First; while not Table1.Eof do begin Writeln(F, Table1.Fields[0].AsString + ';' + Table1.Fields[1].AsString + ';' + Table1.Fields[2].AsString + ';' + Table1.Fields[3].AsString + ';' + Table1.Fields[4].AsString + ';' + Table1.Fields[5].AsString + ';' + Table1.Fields[6].AsString + ';' + Table1.Fields[7].AsString + ';' + Table1.Fields[8].AsString); Table1.Next; end; CloseFile(F); end;
  13. Talvez exista um modo de se acrescentar linhas em objetos Grid, mas eu não sei como. Mas ainda acho que o caminho é esse mesmo. Vou fazer alguns testes e dpois deixo aqui o que eu conseguir. Outra coisa...qual seria a finalidade dessa tabela? Tipo, você vai usar os dados dela pra quê? Ela vai ficar permanente no programa, ou é temporária?
  14. Não seria o caso de você trabalhar com um Grid de sua preferência, só alterando algumas configurações até chegar ao que você precisa? Se não me engano, com alguns ajustes nas propriedades do DBGrid você consegue esse resultado.
  15. Vamos pegar como base o caso do banco de dados Paradox para Firebird. Essa base Firebird já existiria, ou seu programa vai criá-la de acordo com a estrutura da base Paradox?
  16. Estranho ter dado erro, aqui comigo deu certo. O Refresh serve para atualizar a imagem a cada posição nova que ela recebe. Assim, a imagem aparece "andando" pelo seu Form. Sem o refresh, sua imagem vai aparecer na última posição de uma vez só. Sendo assim, o código não teria sentido, e seria apenas assim: "Image1.Left := Última posição", sem a necessidade do comando For.
  17. Tente isso: procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin for i := 8 to 544 do begin Image1.Left := i; Image1.Refresh; end; end; No caso, eu coloquei no evento Click de um Button, mas você pode colocar no evento OnActivate do seu Form. Os números que a variável "i" recebe vão depender do tamanho do seu Form. Outra coisa bacana que você pode fazer é colocar um comando Sleep, pra figura percorrer o Form mais lentamente. Não abuse dos milisegundos, coloque algo em torno de 10 a 20 milisegundos. Espero que te resolva. Abraço!
  18. Olá Rafael! Sua pergunta está muita vaga, especifique melhor. Por exemplo: qual objeto você está usando (ícones podem ser adicionados em vários objetos do Delphi)? Em que situação você quer mover este objeto? Ao clique de um botão, ao mover o mouse, na abertura do Form... Explique um pouco melhor o que você pretende fazer em seu projeto pra podermos ajudar. Abraço!
  19. Hummmmm...agora estou entendendo o que você quer, Jhonatas! Uma tela Splash. Nossa, se tivesse explicado desde o início, não precisaria de tantas voltas. Tenho um projeto aqui onde eu uso uma. O código é o seguinte: program Sistema; uses Forms, SysUtils, UMenuPrin in 'UMenuPrin.pas' {frmMenuPrin}, USplash in 'USplash.pas' {frmSplash}, UDM in 'UDM.pas' {DM: TDataModule}, ULogin in 'ULogin.pas' {frmLogin}, UCadPadrao in 'UCadPadrao.pas' {frmCadPadrao}, UCadCliente in 'UCadCliente.pas' {frmCadCliente}, UCadForn in 'UCadForn.pas' {frmCadFornecedor}, UCadFunc in 'UCadFunc.pas' {frmCadFuncionario}, UCadCateg in 'UCadCateg.pas' {frmCadCategoria}, UCadProd in 'UCadProd.pas' {frmCadProd}; {$R *.res} begin Application.Initialize; Application.CreateForm(TfrmLogin, frmLogin); Application.CreateForm(TfrmMenuPrin, frmMenuPrin); Application.CreateForm(TDM, DM); Application.CreateForm(TFrmSplash, FrmSplash); FrmSplash.Show; //exibe a tela FrmSplash FrmSplash.Refresh; // dá um refresh na tela Sleep(2000); // (aguarda 02 segundos) - inclua a unit "SysUtils" na cláusula Uses. FrmSplash.Release; // Elimina a tela da memória. FrmSplash := nil; // anula a referência ao ponteiro do objeto. Application.CreateForm(TfrmCadPadrao, frmCadPadrao); Application.CreateForm(TfrmCadProd, frmCadProd); Application.Run; end. A parte que te interessa são as 5 linhas abaixo do "Application.CreateForm(TFrmSplash, FrmSplash)", onde FrmSplash é o nome do frame que você quer mostrar na inicialização do projeto. Veja se te resolve assim.
  20. Olha, pelo pouco que eu conheço do comando Sleep, acho que não dá não. Acho que esse comando não retorna nada, e pelo que entendi dele, enquanto ele é executado, nada acontece na aplicação, o programa se congela durante o período que você configura o Sleep. Então, creio eu, que dessa forma não funcionaria. Mas deixo em aberto para outras pessoas responderem essa sua dúvida. Flws!
  21. Bem, um tanto "diferente" essa janela de log que você quer fazer, mas, vamos lá! Um exemplo simples: em um form qualquer, adicione um objeto Label e um TTimer. Inclua o código: procedure TForm1.FormCreate(Sender: TObject); begin Tempo := 10; Label1.Caption := IntToStr(Tempo); end; procedure TForm1.Timer1Timer(Sender: TObject); begin Tempo := Tempo - 1; Label1.Caption := IntToStr(Tempo); if Tempo = -1 then begin Self.Release; Self.Close; end end; Onde "Tempo" é uma variável Integer, que você deve declarar dentro da Unit. Esse exemplo mostra o form por 10 segundos, sendo que o tempo aparece sendo decrescido no Label. Ao término dos 10 segundos, o form se fecha. Agora use sua criatividade para incrementar o form.
  22. Você terá que "escolher" uma formatação padrão para a sua aplicação. Segue código: RichEdit1.Font.Size := 20; RichEdit1.Font.Name := Times New Roman'; RichEdit1.Font.Style := RichEdit1.Font.Style + [fsBold]; //coloca em negrito RichEdit1.Font.Style := RichEdit1.Font.Style + [fsItalic]; //coloca em itálico RichEdit1.Font.Size := 8; RichEdit1.Font.Name := 'Arial'; RichEdit1.Font.Style := RichEdit1.Font.Style - [fsBold]; //tira o negrito Você pode editar toda a formatação do texto, basta chamar o comando "Font" e sua respectiva propriedade. Agora é com você!
  23. Acho que sua necessidade é saber como funciona o objeto TTimer. Sabendo operar os objetos, você consegue desenvolver qualquer aplicação. Detalhe melhor qual sua necessidade nesse projeto pra podermos dar alguns exemplos do TTimer.
  24. O "X" é referente a um inteiro, no caso, o número do campo. Lembrando que a contagem começa do 0 (zero). Então, sua primeira coluna seria o "Fields(0)".
  25. Tente assim: Private Sub Combo1_Click() Text1.Text = Combo1.Text End Sub Ou então assim: Private Sub Combo1_Click() Text1.Text = rs.Fields(x).Value End Sub
×
×
  • Criar Novo...