Fórum duvida basica #321363

15/05/2006

0

problema eh o seguinte estou desenvolvendo um sistema com paradox 7 e preciso checar se o codigo de entrada do cliente existe antes que o dbnavigator permita a inclusao no banco de dados pois o mesmo dah erro caso tenha codigo = cadastrado .. estou tentando usar quase a mesma string de procura + para verificar na table se existe e nao estou conseguindo a maneira que eu estou tentando eh

--
var Codigo:String;
begin
Codigo := DBEdit1.text;
Codigo:= ´´;
if TableClientes.Locate(´CODentrada´, Codigo ,
[loCaseInsensitive, loPartialKey]) then
ShowMessage(´Código já existente!´);
soh que ele nao esta verificando nada aguardo ansioso grato


Dmer

Dmer

Responder

Posts

15/05/2006

Rjun

Você não especifiou que problemas você está tendo.


Responder

Gostei + 0

15/05/2006

Dmer

desculpe-me se eu nao me expressei corretamente apenas que eu setei esse codigo dessa forma para ele verificar a entrada de dados e se o codigo existir no .db ele nao deixar adicionar no banco de dados novamente pois senao dah um erro critico e o programa teria que ser fechado


Responder

Gostei + 0

15/05/2006

Dmer

desculpe-me se eu nao me expressei corretamente apenas que eu setei esse codigo dessa forma para ele verificar a entrada de dados e se o codigo existir no .db ele nao deixar adicionar no banco de dados novamente pois senao dah um erro critico e o programa teria que ser fechado resumindo eu preciso de uma string para verificar uma table dentro do .db se ele jah existe caso existir nao deixar adicionar novamente para nao dar o erro



Responder

Gostei + 0

15/05/2006

Rjun

Você quer verificar se um determinado código já existe ou não? É isso? Eu não entendi muito bem o que você tá fazendo nessa parte?

Codigo := DBEdit1.text; 
Codigo := ´´; 


Você tem um form, e nesse form vários Edits ou DBEdits? Eles estão ligados aos campos da sua tabela? Se você está inserindo os registros direto na tabela e quer dar um POST se o LOCATE retornar false então isso não vai dar certo. Você precisa dar o LOCATE em uma tabela auxiliar.


Responder

Gostei + 0

15/05/2006

Dmer

basicamente o que eu estou tentando fazer eh o seguinte .. um if para checar antes que o usuario possa poastar na database ele checar no DB se jah existe 1 cadastro com esse codigo .. caso houver ele nao deixar insirir na database pois dah um erro -> key violation quando acontece que existe 1 codigo = no .db
a funcao que eu puz para ele checar se jah existe esse codigo cadastrado foi
procedure TFormClientes.TableClientesAfterPost(DataSet: TDataSet);
var Codigo:String;
begin
Codigo := DBEdit1.text;
if TableClientes.Locate(´CODentrada´, Codigo ,
[loCaseInsensitive, loPartialKey]) then
ShowMessage(´Matrícula já existente!´);
end;

--
minha ideia aqui seria defini uma variavel e dentro dessa variavel eu puz o que o usuario digitou no DBEDIT1.text certo ..com esse dados ele consultar o tableclientes .. e procurar na table COdentrada pelo o que o cliente digitou caso encontre ele nao deixar inserir o record para nao dar esse erro de key violation .. acho que agora fui claro grato e desculpe-me


Responder

Gostei + 0

15/05/2006

Rjun

Vamos lá. Você pos esse código dentro do evento AfterPost. Eu não tenho como testar isso agora, mas acho que você deveria colocar a verificação no evento BeforePost. Outra coisa, voce esta dando o locate na mesma tabela. Você precisa usar outra tabela para isso.


Responder

Gostei + 0

15/05/2006

Dmer

o motivo eh que eu comecei a programar tem 1 semana .. voce poderia me explicar entao que outra tabela seria essa ? + facil seria me de 1 exemplo de procura dos dados que o cliente inseriu na variavel .. contra o database para verificacao como ficaria esse if .. ? e sobre estar no lugar errado isso agente concerta apos o string estiver correto


Responder

Gostei + 0

15/05/2006

Paullsoftware

O que o nosso amigo Rjun está querendo lhe dizer é que para fazer esse tipo de consulta vc deve realizar a pesquisa em uma outra tabela/query auxiliar por exemplo:

Tenho uma tabela com o nome TbClientes que faz o cadastro dos clientes e uma QyClientes que faz a consulta então seria mais/menos assim:

var
 Codigo:Integer;
begin
 Codigo := StrToInt(EditCodigo.Text);
With QyClientes do
 begin
 Close;
 Sql.text := ´Select * From Clientes Where Codigo=:Codigo´;
 ParamByName(´Codigo´).AsString;
 Open;
 if IsEmpty then
  begin
   ShowMessage(´Código já Existe´);
   Exit;
  end
else TbClientes.Post;
 end


Qual banco está usando?

Acho que a melhor forma de impedir registros duplicados seria vc criar uma chave promária para esse campo e a mesma ser gerada no momento em que o Post é dado no servidor..


Responder

Gostei + 0

15/05/2006

Dmer

legal o exemplo para sql eu estou usando o banco de dados paradox 7 por enquanto ou seja os dados eu estou gravando localmente em um arquivo .db no caso se voce pudesse me dar um exemplo de como verificar se o codigo jah existe dentro do arquivo .db seria legal e se possivel um exemplo de como fazer uma chave promaria pois eu pensei nessa possbilidade tambem + quando chega a codar em pascal eu fico meio perdido e achar esses exemplos de como fazer para voce poder entender o sistema em tutoriais eh como procurar uma agulha no palheiro entao se pudesse ajudar eu estaria muito grato


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar