Ir para conteúdo
Fórum Script Brasil

Micheus

Veteranos
  • Total de itens

    3.189
  • Registro em

  • Última visita

Tudo que Micheus postou

  1. Micheus

    Ação No Menu

    se você já adicionou o componente TMenu e definiu suas opções em design-time, basta que você, no editor do menu, selecione a opção desejada e na janela Object inspect acesse a guia Events do item do menu. você deve encontrar o evento Click - é só dar dois clicks e no editor, escrever o código que mostrará o form chamado (com Show ou ShowModal).
  2. Allanrf, você deveria ter algo como: tbTroca.First; while not tbTroca.EOF do begin tbTemporaria.Append; tbTemporariaPRECO.value := tbTrocaPreco.value / tbTrocaQTDE.value; tbTemporariaTOTAL.value := tbresultadoQTDE.value *tbTemporariaPRECO.value; tbTemporaria.Post; tbTroca.Next; end; mas me parece que este TOTAL seria exatamente o valor contido em preço, já que preço está recebendo o valor unitário, quando você divide por QTD. E de onde é este tbresultado?
  3. Emulandron, sugiro que baixe e instale um componente chamado LinkLabel (freeware). Download (ref Torry's Delphi)
  4. Vivendo&Aprendendo, você tentou utilizar o evento FSCommand? Este artigo é voltado a VB mas pode ser facilmente adaptado ao Delphi, talvez ele possa lhe ser útil => Macromedia Flash and VB: A Potent Combination (Mindfire Solutions)
  5. para isto, basta que o dataset que você utiliza para fazer a busca, esteja vinculado ao DBGrid.
  6. Vivendo&Aprendendo, voce pode utilizar o mesmo conceito da sua consulta - parametrização. Na tabela ItensSaida (Detail), você parametriza (filtra na where) o campo de ligação com Saidas. Algo assim: select * from ItensSaida where CodSaida = :CodSaida depois você vincula ela via propriedade DataSource ao seu ADOQuery Saidas (Master). Importante você utilizar o nome do parâmetro igual ao nome do campo na tabela Master. Do contrário não funciona. Mas como você perceberá, o conceito é exatamente o mesmo de "MasterSource, MasterField". Vai uma dica: NUNCA utilize o * na cláusula SELECT, a menos que você realmente queira retornar todos os campos da sua tabela. Imagine você precisar de uns 5 campos de uma tabela com uns 30, sendo muitos deles varchar, e tendo a tabela centenas de registros. :blink: Voce vai fazer trafegar na rede mais informação do que seria necessário, então para piorar (nem tanto), coloque ai umas 20 maquinas fazendo este tipo de consulta.
  7. Micheus

    Dbgrid

    sllc, dê uma olhada neste post e veja se avança.
  8. estes pares de campos por acaso não seriam a "mesma" coisa? É normal que se tenha apenas um campo como identificador (seja nomeado ID... ou COD...), a menos que você utilize um identificador do seu banco de dados e um outro código que seja proveniente de outra fonte (tipo um fornecedor ou cliente). Ainda assim, se justificaria se o mesmo puder duplicar, já que o principal objetivo desde identificado é identificar unicamente um registro na sua tabela (é parte do processo de normalização do banco).
  9. José Rodrigo, voce pode também dar uma olhada deste post em diante, com algumas explicações sobre este assunto.
  10. Micheus

    Insert No Interbase

    Guilherme, o que pode estar errado é este "COMMIT WORK". A "comitação" é feita através da sua transação (componente IBTransaction).Observe, inclusive, que você já está fazendo isto antes de passar o novo insert, quando utiliza a linha: DM.IBTransaction1.CommitRetaining; Esta transação, muito provavelmente, deve estar associada ao seu componente "qryManutencao" (propriedade Transaction), e é justamente este comando que você deverá executar, caso sua inserção não falhe. Mas também, parece-me estar faltando os parênteses da cláusula VALUES -> values ( valor_1, valor_2, ..., valor_n) Abraços
  11. Não. Você pode preparar uma instalação de seu programa de modo a incluir o BDE também. Na seção Tutoriais & Dicas tem dois tópicos que podem ser útieis: - Como usar o Install Shield - Instalando o BDE e também este post: codigo para gerar chaves de registro, quando instalar arquivos do BDE na mão; Outra opção é baixar um instalador da net. No Baixaki tem um para um BDE compacto a versão 5.2 (não testei) Abraços p.s. "Assim deu certo. outra duvida", se você é CristianoCarvalho, tente logar-se como tal, ou utilize um nick que não pareça uma resposta. ;)
  12. samuelsjn, se é assim, acho que se esgotaram minhas sugestões. :( Mas vão alguns comentários sobre o código que você postou inicialmente: 1) acho que seria interessante chamar o procedimento no OnShow, ao invés de no OnActivate; 2) lstitmItem.ListView.Refresh; - esta linha ao final do seu procedimento não é apropriada. Se seu dataset QueryAuxiliar não contiver dados, a variável lstitmItem será nula (ou lixo) e poderá resultar em erro. Se realmente for necessário forçar a atualização, melhor seria você utilizar o proprio ListView -> lstvwDados.Refresh; Abraços
  13. este comentário foi porque, se eu não me engano (faz um tempão que não mexo com SQLServer) quando era executado um comando como DELETE FROM (com vários registros), a trigger era chamada apenas uma vez para todos os excluídos e não uma vez para cada uma das linhas eliminadas.Mas pelo seu comentário, falei besteira. Obrigado pela correção. ;)
  14. Micheus

    Fgets

    FelipeZVM, aparentemente você não está alocando espaço para a variável string que passa para a função. Lembrando que ser o tamanho da string a ser lida é 50, o espaço que deverá ser reservado (alocado) é de 50+1.
  15. CristianoCarvalho este erro indica que o identificador não está declarado. Mas, sabendo que esta é uma função disponível no Delphi, vê-se que faltou você adicionar na cláusula USES a unit SysUtils. Já ShowMessage está declarado na unit Dialogs. Para descobrir em que unit uma procedure, variável, objeto, enfim "qualquer coisa" do Delphi basta que você posicione o cursor sobre a palavra e tecle F1. No texto do help, inicialmente há uma descrição sobre o item em questão, seguido pela Unit onde o mesmo aparece, sintax de uso e outras descrições.
  16. maxm.ro, você não deixou claro o que faz em seu código quando a condição IF é satisfeita, então, assumindo que o processamento sobre o arquivo (importação) ocorra apenas no ELSE, fica conveniente e logicamente mais correto que "DM.ADOQryCadastro.append;" seja chamado neste ponto, pois apenas neste momento você atribui valores e "posta" o resultado. Devo concordar com o Micheus, porque eu tambem não gosto, sendo assim vai outra modificação para voce, sem que seja necessario ler o arquivo inteiro duas vezes: Jhonas, se você concorda comigo neste ponto, então vai entender que eu não posso concordar com você. Observe que ao utilizar o componente TStringList e carregando o arquivo via método LoadFromFile para obter Count (representando a quantidade de linhas no arquivo) você obrigatoriamente está fazendo uma leitura do arquivo. Daí, ao eliminar o objeto e utilizar o procedimento com AssignFile, Reset, ..., como anteriormente, voce está fazendo a segunda leitura. Talvez você até tenha pensado certo, mas não lembrou de ajustar o código. O correto em sua colocação, seria justamente utilizar as linhas já carregadas no StringList para proceder com a importação. Neste caso, sim, teríamos apenas uma leitura: procedure TForm1.Button5Click(Sender: TObject); var Entrada : String; cont : integer; Lista: TStringList; begin Lista := TStringList.Create; try Lista.LoadFromFile('C:\Documents and Settings\lanhouse\Meus documentos\MAX\Banco de Dados\3271_20070912\3271_20070910_Cadastro.txt'); Progressbar1.Max := Lista.Count; //valor max do Progressbar em função do numero de linhas do arquivo DM.ADOQryCadastro.open; // abre a table DM.ADOQryCadastro.First; // aponta para o primeiro registro cont := 0; while cont < Lista.Count do begin entrada := Lista.Strings[cont]; Inc(cont); Progressbar1.position := cont; Edit4.Text := Copy(Entrada,01,07); if (Edit4.Text = 'RESPOND') or (Edit4.Text = 'RENOVAD') then begin end else begin DM.ADOQryCadastro.append; DM.ADOQryCadastroNumCadastroUnico.Value := StrToInt(copy(Entrada,01,07)); DM.ADOQryCadastroCodTipoPessoa.Value:= StrToInt(copy(Entrada,08,01)); DM.ADOQryCadastroCPF_CNPJ.Value := Copy(Entrada,19,14); DM.ADOQryCadastroNomeCliente.Value := Copy(Entrada,33,50); DM.ADOQryCadastro.post; // salva end; end; finally Lista.Free; end; Progressbar1.position := 0; end;
  17. samuelsjn, dando uma olhada melhor numa tela que eu utilizo o ListView, me ocorreu que talvez va não tenha definido em design-time o nome das colunas. No código, o que você faz é inserir os dados referentes as colunas e que serão mostrados no "grid" (eu também faço deste modo). Então, acho que talvez você não tenha criado as colunas em design-time via propriedade Columns (tem um botãozinho com "..."). A primeira coluna definida será aquela em que aparecerá o seu "lstitmItem.Caption", as demais correspondem a cada "lstitmItem.SubItems.Add". Não seria isto que está faltando?
  18. Sim, Fiz assim mas dá erro no A: With QryPraA do Begin Close; Sql.Clear; Sql.Add ('Select P.Aluno, P.Instrutor, P.Data, P.Horario, P.Categoria, P.Aluno From Praticas P,' +'Instrutores I Where P.Aluno=' + TxtMat.Text + 'AND P.Categoria= 'A' AND P.Status=1 AND I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario'); Open; end; quando você quizer colocar um string no seu SQL deste modo, você deve colocar duas vezes as áspas simples: 'AND P.Categoria= ''A'' AND P.Status=1 AND I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario'); ou usar a função QuotedStr (se não me engano), que fará a mesma coisa. 'AND P.Categoria= ' +QuotedStr('A') + ' AND P.Status=1 AND I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario');
  19. Pois então, robinhocne, não seria o caso de você incluir o campo Categoria na cláusula WHERE, e passá-la como parâmetro?
  20. Allanrf, não sei se entendi direito sua dúvida mas veja se seria algo assim:- você tem uma tela onde o usuário digita em um TEdit o numero do cupom fiscal (vamos supor que seja EdNumCupon); - quando o usuário clicar em um botão para executar a ação, você gera o nome do arquivo a procurar; - verifica se o arquivo existe num diretório "H:\mov03" e existindo faz algo. procedure TForm1.BtnAcaoClick(Sender :TObject); var FileName :string; begin FileName := 'H:\mov03\' + EdNumCupon.Text +'.txt'; if FileExists(FileName) then begin // faz alguma coisa aqui com o arquivo end; end;
  21. maxm.ro, se você observar o post do Jhonas, vai ver que ele colocou antes do seu código alterado, o código de uma função para retornar o número de linhas do arquivo sendo importado (function QuantasLin). Particularmente não gosto deste procedimento porque implica que você lerá o arquivo completo 2 vezes. Mas, como não tenho condições de lhe ajudar com o ".NET", a opção funciona. Abraços
  22. Micheus

    Ado

    eder lucio, pela passagem grifada acima e pela mensagem no seu código, devo lhe chamar a atenção para o fato de voce estar utilizando o termo erradamente. O que você deseja é: "excluir REGISTROS do banco de dados", não o arquivo. Também em banco de dados, ainda que fosse referente ao seu "arquivo" clientes, você estaria falando na TABELA clientes. É importante utilizar os termos corretos para que todos possamos nos entender a cerca do que falamos. apenas completando, para não gerar confusão ao colega eder lucio, este caso pressupõe que o registro em questão esteja "selecinado" (posicionado) adequadamente no dataset AdoQuery. Este método da classe TDataSet elimina apenas o registro corrente, ou seja, apenas o atual (somente 1 registro). Se fosse o caso de remover vários registros com uma mesma condição, seria necessário chamá-lo "n" vezes. Por exemplo, eliminar todos os pagamentos do cliente 335 (vamos supor que ele tenha mais que um pagamento realizado): 1) Utilizando o método Delete do DataSet: Adoquery1.SQL.Clear; Adoquery1.SQL.add('SELECT * FROM PAGTOS WHERE COD_CLIENTE = 335'); Adoquery1.Open; where not Adoquery1.EOF do Adoquery1.Delete; Adoquery1.Close; 2) Utilizando a instrução DELETE do SQL: Adoquery1.SQL.Clear; Adoquery1.SQL.add('DELETE FROM PAGTOS WHERE COD_CLIENTE = 335'); Adoquery1.ExecSQL;Nestes casos, este último método seria preferível ao primeiro. Observe também, que o Close só é utilizado quando executado o Open. O uso de instruções SQL que requerem sua execução via ExecSQL, não "abrem" o dataset. Abraços
  23. é esqueci do detalhe do ".NET".Eu não tenho como verificar isto. Você poderia tentar olhar no help (procurando por filesize) para ver de onde você poderia "importar" a função - caso ela ainda exista para a plataforma ".NET". Eu acredito que ainda haja um meio de você saber o tamanho de um arquivo.
  24. samuelsjn, então verifique se a propriedade ViewStyle está definida com outro valor que não seja vsReport, porque é apenas neste estilo que o header das colulas são mostrados.
×
×
  • Criar Novo...