Ajuda com Chave Estrangeira
05/03/2013
0
Bom estou programando em Delphi 2010, banco de dados Firebird, uso SQLConnection, TSQLQuery, DATASetprovider, Clientdataset.
segue o link com a imagem da meu Formulário: http://img7.imageshack.us/img7/5092/semttulowpl.jpg
Desde já Muito Obrigado..
Francielio Medeiros
Posts
05/03/2013
Perivaldo Martins
Bom estou programando em Delphi 2010, banco de dados Firebird, uso SQLConnection, TSQLQuery, DATASetprovider, Clientdataset.
segue o link com a imagem da meu Formulário: http://img7.imageshack.us/img7/5092/semttulowpl.jpg
Desde já Muito Obrigado..
Supondo que o colega vá usar ENTER para mudar o foco nos campos, coloque então a verificação do campo código no OnExit.
if DBEditx.Text = EmptyStr then {Abre o formulário de pesquisa} else {Vai buscar o nome do cliente vinculado ao código informado}
Boa sorte e bons códigos!
05/03/2013
Francielio Medeiros
Bom estou programando em Delphi 2010, banco de dados Firebird, uso SQLConnection, TSQLQuery, DATASetprovider, Clientdataset.
segue o link com a imagem da meu Formulário: http://img7.imageshack.us/img7/5092/semttulowpl.jpg
Desde já Muito Obrigado..
Supondo que o colega vá usar ENTER para mudar o foco nos campos, coloque então a verificação do campo código no OnExit.
if DBEditx.Text = EmptyStr then {Abre o formulário de pesquisa} else {Vai buscar o nome do cliente vinculado ao código informado}
Boa sorte e bons códigos!
Amigo como ficaria esse codigo eu comecei mais como sou iniciante ta aqui o meu:
procedure TF_Recebimentos.DBEdit4Exit(Sender: TObject);
begin
if DBEdit4.Text = EmptyStr then
F_PesqCliente.Show;
else
end;
19/03/2013
Douglas
desculpa a demora estou sem tempo e ta brabo. Mas
vamos ao que interessa solucionar o seu problema !
No evento OnKeyPress do edit, implemte o código abaixo:
// Caso esteja vazio ele tenta abrir o forumlário de pesquisa. //Senão pesquisa o cliente trazendo o resultado. if EditCodigo.Text = EmptyStr then begin try Application.CreateForm(TFrmPesquisa, FrmPesquisa); FrmPesquisa.ShowModal; except on E: exception do begin Application.MessageBox('Ocorreu um erro ao abrir a tela de pesquisa','Atenção', MB_OK); end; end; end else begin //NESTE MOMENTO VOCÊ IRÁ PESQUISAR O CÓDIDO EM SUA QUERY SQLQuery1.Close; SQLQuery1.SQL.Clear; SQLQuery1.SQL.Add('SELECT * FROM CLIENTE'); SQLQuery1.SQL.Add('WHERE COD_CLI = :CODCLI'); SQLQuery1.ParamByName('CODCLI').AsString := EditCodigo.Text; SQLQuery1.Open; //FEITO ISTO, PREENCHER TODOS OS SEUS DBEDITS COM O RESULTADO DA SUA QUERY //COMO O EXEMPLO ABAIXO if not SQLQuery1.IsEmpty then begin EdtCodigo.text := SQLQuery1.FieldByName('COD_CLI').AsInteger; EdtNDocumento.text := SQLQuery1.FieldByName('N_Doc').AsString; // E assim por diante para os próximos end else Application.MessageBox('O código digitado não foi encontrado.', 'Atencao', MB_OK); end;
Obs: Verifique o nome de seus edits, pois o código acima é só um exemplo.
Espero ter ajudado amigo.
20/03/2013
Douglas
desculpa a demora estou sem tempo e ta brabo. Mas
vamos ao que interessa solucionar o seu problema !
No evento OnKeyPress do edit, implemte o código abaixo:
// Caso esteja vazio ele tenta abrir o forumlário de pesquisa. //Senão pesquisa o cliente trazendo o resultado. if EditCodigo.Text = EmptyStr then begin try Application.CreateForm(TFrmPesquisa, FrmPesquisa); FrmPesquisa.ShowModal; except on E: exception do begin Application.MessageBox('Ocorreu um erro ao abrir a tela de pesquisa','Atenção', MB_OK); end; end; end else begin //NESTE MOMENTO VOCÊ IRÁ PESQUISAR O CÓDIDO EM SUA QUERY SQLQuery1.Close; SQLQuery1.SQL.Clear; SQLQuery1.SQL.Add('SELECT * FROM CLIENTE'); SQLQuery1.SQL.Add('WHERE COD_CLI = :CODCLI'); SQLQuery1.ParamByName('CODCLI').AsString := EditCodigo.Text; SQLQuery1.Open; //FEITO ISTO, PREENCHER TODOS OS SEUS DBEDITS COM O RESULTADO DA SUA QUERY //COMO O EXEMPLO ABAIXO if not SQLQuery1.IsEmpty then begin EdtCodigo.text := SQLQuery1.FieldByName('COD_CLI').AsInteger; EdtNDocumento.text := SQLQuery1.FieldByName('N_Doc').AsString; // E assim por diante para os próximos end else Application.MessageBox('O código digitado não foi encontrado.', 'Atencao', MB_OK); end;
Obs: Verifique o nome de seus edits, pois o código acima é só um exemplo.
Espero ter ajudado amigo.
24/03/2013
Francielio Medeiros
25/03/2013
Douglas
você implementou o código no evento OnKeyPress do Edit.
Outra coisa ele só vai chamar outra tela no momento que você pressionar a tecla "ENTER".
25/03/2013
Francielio Medeiros
procedure TF_Recebimentos.DBEdit4KeyPress(Sender: TObject; var Key: Char);
begin
// Caso esteja vazio ele tenta abrir o forumlário de pesquisa.
//Senão pesquisa o cliente trazendo o resultado.
if DBEdit4.Text = EmptyStr then
begin
try
Application.CreateForm(TF_PesqCliente, F_PesqCliente);
F_PesqCliente.ShowModal;
except
on E: exception do
begin
Application.MessageBox('Ocorreu um erro ao abrir a tela de pesquisa','Atenção', MB_OK);
end;
end;
end
else
begin
//NESTE MOMENTO VOCÊ IRÁ PESQUISAR O CÓDIDO EM SUA QUERY
DM.Q_CLIENTE.Close;
DM.Q_CLIENTE.SQL.Clear;
DM.Q_CLIENTE.SQL.Add('SELECT * FROM CLIENTE');
DM.Q_CLIENTE.SQL.Add('WHERE ID_CLIENTE = :ID_CLIENTE');
DM.Q_CLIENTE.ParamByName('ID_CLIENTE').AsString := DBEdit4.Text;
DM.Q_CLIENTE.Open;
//FEITO ISTO, PREENCHER TODOS OS SEUS DBEDITS COM O RESULTADO DA SUA QUERY
//COMO O EXEMPLO ABAIXO
if not DM.Q_CLIENTE.IsEmpty then
begin
DBEdit4.text := DM.Q_CLIENTE.FieldByName('ID_CLIENTE').AsString;
DBEdit5.text := DM.Q_CLIENTE.FieldByName('NOME_CLIENTE').AsString;
// E assim por diante para os próximos
end
else
Application.MessageBox('O código digitado não foi encontrado.', 'Atencao', MB_OK);
end;
end;
26/03/2013
Francielio Medeiros
26/03/2013
Douglas
Franciélio,
faça o passo do código abaixo,
no envento OnKeyPress mesmo.
if Key = #13 then begin if dbedit4.text = emptyStr then begin Ponha a continuação do seu código... end; end;
OBS: Depois dê o seu feedback
29/03/2013
Francielio Medeiros
procedure TF_Recebimentos.DBEdit4KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
// Caso esteja vazio ele tenta abrir o forumlário de pesquisa.
//Senão pesquisa o cliente trazendo o resultado.
if DBEdit4.Text = EmptyStr then
begin
try
Application.CreateForm(TF_PesqCliente, F_PesqCliente);
F_PesqCliente.ShowModal;
except
on E: exception do
begin
Application.MessageBox('Ocorreu um erro ao abrir a tela de pesquisa','Atenção', MB_OK);
end;
end;
end;
end
else
begin
//NESTE MOMENTO VOCÊ IRÁ PESQUISAR O CÓDIDO EM SUA QUERY
DM.Q_CLIENTE.Close;
DM.Q_CLIENTE.SQL.Clear;
DM.Q_CLIENTE.SQL.Add('SELECT * FROM CLIENTE');
DM.Q_CLIENTE.SQL.Add('WHERE ID_CLIENTE = :ID_CLIENTE');
DM.Q_CLIENTE.ParamByName('ID_CLIENTE').AsString := DBEdit4.Text;
DM.Q_CLIENTE.Open;
//FEITO ISTO, PREENCHER TODOS OS SEUS DBEDITS COM O RESULTADO DA SUA QUERY
//COMO O EXEMPLO ABAIXO
if not DM.Q_CLIENTE.IsEmpty then
begin
DBEdit4.text := DM.Q_CLIENTE.FieldByName('ID_CLIENTE').AsString;
DBEdit5.text := DM.Q_CLIENTE.FieldByName('NOME_CLIENTE').AsString;
// E assim por diante para os próximos
end
else
Application.MessageBox('O código digitado não foi encontrado.', 'Atencao', MB_OK);
end;
end;
01/04/2013
Francielio Medeiros
Clique aqui para fazer login e interagir na Comunidade :)