Como saber se já existe o registro?
Olá, tenho um IBDataSet, e estou em modo Insert, inserindo um registro, por exemplo, queria verificar se o campo NOME, já consta no DataSet antes de dar o Post, tem como fazer isso? Pois se eu usar o Locate, ele perde o ponteiro insert, ou não?
Desde já agradeço.
[]s
Desde já agradeço.
[]s
Titanius
Curtidas 0
Respostas
Emerson Nascimento
08/12/2005
sim, perde o ponteiro e sai do modo de edicao/insercao.
sugiro que você tenha uma query separada, somente para pesquisa.
eu faço isso nos meus sistemas: sempre tenho um ClientDataset_Geral onde eu faço essas pesquisas.
sugiro que você tenha uma query separada, somente para pesquisa.
eu faço isso nos meus sistemas: sempre tenho um ClientDataset_Geral onde eu faço essas pesquisas.
GOSTEI 0
Adriano Santos
08/12/2005
Cara existem diversas formas de se fazer isso.
Vc pode, por exemplo, colocar um novo TQuery e fazer uma pesquisa separada, algo como:
Mas, reforçando...existem diversas formas de se fazer isso.
Vc pode, por exemplo, colocar um novo TQuery e fazer uma pesquisa separada, algo como:
with MeuQueryPesquisa do begin Close; Sql.Clear; Sql.Add(´SELECT NOME FROM TABELA WHERE NOME = :MINHAVARIAVEL´); ParamByName(´MINHAVARIAVEL´).AsString := MinhaVariavel; Open; if not IsEmpty then begin ShowMessage(´Este nome já existe na base.´); Close; end else begin //Seus comandos de Inclusão; Close; end; end;
Mas, reforçando...existem diversas formas de se fazer isso.
GOSTEI 0
Wiltonfenix
08/12/2005
É verdade, existem muitas formas. Mas o uso de uma Query para pesquisar na minha opinião é a melhor. Porque vc não move o ponteiro na sua tabela e com isso não perde o estado atual dela.
GOSTEI 0
Titanius
08/12/2005
valeu pessoal.. no caso terei que ter uma tabela de memoria, ja q ainda os dados nao foram comitados.. a query buscaria no banco, mas enquanto ele esta adicionando eu verificaria numa tabela de memoria...
obrigado.
obrigado.
GOSTEI 0
Edilcimar
08/12/2005
também pode colocar um bookmark no registro, pesquisar e depois voltar ao bookmark
GOSTEI 0
Titanius
08/12/2005
Isso nao faria eu perder o ponteiro de insercao nao?
GOSTEI 0
Thomaz_prg
08/12/2005
Mas mesmo usando um Bookmark, quando ele movimentar o ponteiro, o registro sairá do status de edição e dará o post automaticamente.
GOSTEI 0
Edilcimar
08/12/2005
ele teria que fazer o teste antes de inserir
GOSTEI 0
Adriano Santos
08/12/2005
Mas mesmo usando um Bookmark, quando ele movimentar o ponteiro, o registro sairá do status de edição e dará o post automaticamente.
Corretíssimo. Se o cara está em modo de edição e fizer qualquer movimentação os eventos de Post da tabela serão acionados perdendo então o ponteiro. A melhor alternativa continua sendo criar uma pesquisa paralela. Você só precisa inserir um novo componente Query e fazê-la.
GOSTEI 0
Wiltonfenix
08/12/2005
Por estes problemas de movimentação de ponteiro é que um TQuery é a melhor opção. Além de ser muito mais rápido também.
GOSTEI 0
Replicante
08/12/2005
Pq não usa o evento ´beforeInsert´ do ´ClientDataSet´? De preferencia usando o ´FindKey´, que faz a busca baseado nos indices do ´dataset´. Se já houver a pessoa, só mandar ´abort´ direto, nem vai chegar a inserir nada no ´dataset´.
GOSTEI 0
Caninha51
08/12/2005
...queria verificar se o campo NOME, já consta no DataSet antes de dar o Post...
Não esqueça dos homónimos! :D
GOSTEI 0