Pirambu! Postado Janeiro 29, 2007 Denunciar Share Postado Janeiro 29, 2007 preciso verificar um valor na tabela antes de adicionar, para não haver duplicidade, na tabela já existe duas key. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Janeiro 29, 2007 Denunciar Share Postado Janeiro 29, 2007 Para ajudar com o exemplo, informe o nome das duas Keys e para cada uma, os campos que fazem parte dela na ordem em que estão definidos na chave. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Janeiro 30, 2007 Autor Denunciar Share Postado Janeiro 30, 2007 na tabela PARADOX estar assim:codigo1 / + / *codped / I / *Quantidade / No campo grifado é o que eu quero controlar, assim, eu tenho um pedido com vários itens, então na tabela fica assimcodigo1 - codped - quantidade1 - 15 - 120 2 - 15 - 1353 - 15 - 34mais quando eu for lançar outro pedido, deve verificar se o pedido que estar sendo informado já estar na tabela. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Janeiro 30, 2007 Denunciar Share Postado Janeiro 30, 2007 na tabela PARADOX estar assim:codigo1 / + / *codped / I / *Quantidade / No campo grifado é o que eu quero controlar, assim, eu tenho um pedido com vários itens, então na tabela fica assimcodigo1 - codped - quantidade1 - 15 - 120 2 - 15 - 1353 - 15 - 34mais quando eu for lançar outro pedido, deve verificar se o pedido que estar sendo informado já estar na tabela.Pirambu!, nestes casos, a melhor opção seria você ter seu índice com esta sequência: CodPed, Codigo1; pois facilita muitos processos, principalmente se você liga a tabela de itens à de pedidos, via MasterSource - aonde você lança o pedido, e a partir dele, lança os itens. Não teria como você estar lançando um item para um pedido que não existe.De qualquer modo, partindo da estrutura que você mostrou aqui, na minha opnião, você teria que utilizar uma query para veficar a existencia do pedido. Porque via FindKey, você terá que utilizar os campos existentes na chave, tipo: FindKey(VarArrayOf([Codigo1, CodPed])), ou seja, você tem que informar um código do item, que eventualmente pode nem existir (por ter sido excluído) - o que não garante uma resposta correta.Com a chave no formato "correto", você poderia utilizar FindKey apenas no primeiro campo CodPed: FindKey(CodPed); que, se não estou enganado, já funcionaria.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Janeiro 31, 2007 Autor Denunciar Share Postado Janeiro 31, 2007 Micheus, eu até pensei em usar o FindKey, mais pensava que só funcionava se a tabela tiver-se apenas uma chave primaria ( * ), conseguir usar uma query onde faço a consulta do codped assim With query1 do begin close; sql.clear; sql.add('select codped'); sql.add('from tabela1'); sql.add('where codped = :ID'); params.parambyname('ID').values := StrToInt(Dbedit1.text); open; if query1.IsEmpty then ... mais deve ter uma maneira mais simples. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Janeiro 31, 2007 Denunciar Share Postado Janeiro 31, 2007 Pirambu!, como mensionei antes, funcionaria bem com o FindKey caso você tivesse a ordem dos campos alterada no seu índice primário. Mas há outras opções sim, você pode:- criar um índice secundário, onde o primeiro campo do índice seja seu CodPed e seleciná-lo ele via propriedade IndexFieldNames ou IndexName;- o mais fácil para a situação atual, seria utilizar a função Locate deste modo: Locate('CodPed', StrToInt(Dbedit1.text), []); - assim você faz uma busca pelo campo exato.Não utilizando a query, o ideal seria mesmo utilizar índices.Quanto a "uma maneira mais simples", acredito que você pudesse manter um componente TQuery exclusivo para esta função. Então, você adiciona o SQL na respectiva propriedade do componente e no seu código teria apenas:With Query1 do begin Close; Params.ParamByName('ID').Values := StrToInt(Dbedit1.text); Open; end; if query1.IsEmpty thennâo é nada complicado e é a melhor forma de verificar a existência de dados no banco (utilizar Query)Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Pirambu!
preciso verificar um valor na tabela antes de adicionar, para não haver duplicidade, na tabela já existe duas key.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.