DBEdit 2 locate

12/08/2004

oii pessoal como vão?? estou um pequeno problema
vejam: tenho uma tabela!! com produtos cadastrados!! quero q quando eu for cadastrar outro produto e cadastrar o mesmo nome, não aceite e apareçe um showmessage ou messagedlg(´Esse nome ja esta Cadastrado´) ja tentei de tudo q é geito e não estou conseguindo vcs poderiam me dar uma informação???


alguem pode me ajduar

tom.e@bol.com.br

fico muito grato


Everton Tom

Respostas

12/08/2004

Guibas

if table.locate(´campo´,dbedit,[]) then
begin
showmessage(´ja tem´);
end;

ou use sql se tiver usando query!


Responder Citar

12/08/2004

Everton Tom

if FDM.TB_CadFuncionario.locate(´Nome´,DbEdit2.Text,[]) then
begin
showmessage(´ja tem´);

tipo toda vez q vou escrever um nome ele apareçe a mensagen!! sera q foi porq eu coloquei no event exit?


Responder Citar

12/08/2004

Guibas

se ele ta aparecendo a msg é pq tem esse registro :)


Responder Citar

12/08/2004

Everton Tom

o interessante q apareçe até se eu n escrever nada :)


Responder Citar

12/08/2004

Dpbraz

Provavelmente você associou seu dbedit para mesma tabela que você está tentando dar o locate. Com isso o que acontece: Quando você dá um insert na tabela, será incluído um novo registro. Quando você der um locate, o ponteiro desta tabela será movimentado e assim o registro será gravado. Com isso tudo que você digitar neste dbedit será dados como ´já têm´. Para isso use um outro objeto table (com o mesmo tablename) para dar o locate.

Danie


Responder Citar

12/08/2004

Everton Tom

Resumindo eu terei que criar outra tabela? igual a minha original? e colocar o if table.locate(´campo´,dbedit2.text,[]) then
begin
showmessage(´ja tem´);
end;
nela ou na original? colocarei esse codigo no beforepost dela?


Responder Citar

12/08/2004

Everton Tom

eu tou trabalhando com Data Mudule muda alguma coisa?


Responder Citar

12/08/2004

Guibas

trabalhar com datamodule não muda em nada... rapaz veja se colocando 2 table pra msm tabela funcina e faça a pesquisa na que não está em modo de edição....


Responder Citar

12/08/2004

Rpelisson

Galera, só uma dica que eu peguei do pessoal da borland e adotamos nos sistemas todos da empresa...

abolir o locate

utilizem o findkey

memso q o campo nao seja chave.. vc define ele como indexfieldname antes de abrir a tabela e localiza pelo findkey.. é 1000 vezes mais rapido q o locate....

criar duas tabelas pode ser a solução, mas também você pode criar uma rotina para ler e gravar esse produto por edit text normal.. sem estar pelo dbedit direto... vai utilizar um pouco mais de programação, mas vc consegue tratar mais fácil....

[]´s


Responder Citar

12/08/2004

Everton Tom

Galera Tou sendo grato a vcs que me ajudaram na resolução deste problema!! sou muito grato meu e-mail é tom.e@bol.com.br sou de Criciuma precisando de alguma coisa tambem estarei ai tambem no forum p/ poder ajudar em tudo!!!

a vcs [b:010a6cacfe]Guibas, Dpbraz rpelisson[/b:010a6cacfe] muito obrigado vlw galera!!!!


Responder Citar

12/08/2004

Macario

olá programador boa tarde.


Você pode fazer desta forma:


No botão Novo(ou incluir) você apenas prepara a tela para a inclusão dos dados. Ao invés de já disparar um Table.Append (ou Insert).

Ai no evento OnExit de um TEdit(ou TMaskEdit) você usa o seguinte

Table1.IndexFiledName := nome_do_campo;
if not (Table1.FindKey(edit1.text)) then
Table1.Append
else
begin
ShowMessage(´Este nome já esta em uso´);
exit;
end;


Qualquer duvida estamos aqui.


Responder Citar

12/08/2004

Everton Tom

opa!! amigo achei muito boa sua citação mais tenhu uma duvida!! veja esta parte q vc escreveu:

No botão Novo(ou incluir) você apenas prepara a tela para a inclusão dos dados. Ao invés de já disparar um Table.Append (ou Insert).

como assim? e se eu tiver usando DBNavigator????


olá programador boa tarde. Você pode fazer desta forma: No botão Novo(ou incluir) você apenas prepara a tela para a inclusão dos dados. Ao invés de já disparar um Table.Append (ou Insert). Ai no evento OnExit de um TEdit(ou TMaskEdit) você usa o seguinte Table1.IndexFiledName := nome_do_campo; if not (Table1.FindKey(edit1.text)) then Table1.Append else begin ShowMessage(´Este nome já esta em uso´); exit; end; Qualquer duvida estamos aqui.
[b:7b003e2b6f][/b:7b003e2b6f]


Responder Citar

12/08/2004

Macario

neste caso voce teria que ter os campos como chave primaria, para quando desse um Table.Post o proprio banco nao aceitaria o nome

Tente não usar muito os componentes DataWare, pois como voce vê
eles não sao muito flexiveis.


Responder Citar

27/05/2005

Anjinho Loiro

Como fazer para localizar dentro de uma Table, um registro que terá seu código digitado num edit.
Aliás, são dois tipos de localização:

Código = Procura exatamente o que for digitado.
Nome = Procura por parciais do nome do cliente.

Os códigos serão colocados no evento OnClick de botoões dentro do formulário e os dados a serem localizados serão digitados dentro de edits.

Se puder me mandar um exemplo, ficarei muito agradecida.


polisuporte@hotmail.com

Bjs...


Responder Citar

27/05/2005

Anjinho Loiro

Como fazer para localizar dentro de uma Table, um registro que terá seu código digitado num edit.
Aliás, são dois tipos de localização:

Código = Procura exatamente o que for digitado.
Nome = Procura por parciais do nome do cliente.

Os códigos serão colocados no evento OnClick de botoões dentro do formulário e os dados a serem localizados serão digitados dentro de edits.

Se puder me mandar um exemplo, ficarei muito agradecida.


polisuporte@hotmail.com

Bjs...


Responder Citar