Fórum Buscar registro de outra tabela(Form3) e mostrar em outro formulário (Form4) - DELPHI 7 #537249
16/11/2015
0
Aplicação:
Estou construindo um sistema de cadastro de clientes e emissão de ordem de serviços, então, quero que ao pesquisar no formulário da ordem de serviço por um nome do cliente, possa aparecer os dados já cadastrados no formulário de cadastro de clientes do devido cliente pesquisado, e se caso não existir o cliente emitir a mensagem de ' Cadastro não encontrado '.
Objetivo:
Conseguir buscar no banco de dados os registros do cliente procurado e retornar todas as informações desejáveis dessa tabela para o formulário de O.S.
OBS: Estou usando o Banco (Access), e o DELPHI 7.
Agradeço de mais a ajuda, pois não consigo encontrar a solução até o momento.
David
Curtir tópico
+ 0Post mais votado
16/11/2015
Fiz dois forms de teste vê se ajuda.
unit U_OS;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, sEdit, Vcl.Buttons,
sBitBtn, Vcl.ExtCtrls, sPanel, Vcl.ComCtrls, sStatusBar;
type
TF_OS = class(TForm)
ED_COD_CLIENTE: TsEdit;
ED_NOME: TsEdit;
ED_CIDADE: TsEdit;
ED_UF: TsEdit;
ED_TEL: TsEdit;
ED_COD_OS: TsEdit;
ALTERAR: TsBitBtn;
PD: TsPanel;
NOVO: TsBitBtn;
SAIR: TsBitBtn;
CANCELAR: TsBitBtn;
LOAD_CLIENTE: TsBitBtn;
Label1: TLabel;
GRAVAR: TsBitBtn;
BAR: TsStatusBar;
STATUS: TTimer;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
ED_STATUS: TsEdit;
procedure ALTERARClick(Sender: TObject);
procedure SAIRClick(Sender: TObject);
procedure NOVOClick(Sender: TObject);
procedure CANCELARClick(Sender: TObject);
procedure ED_COD_CLIENTEKeyPress(Sender: TObject; var Key: Char);
procedure LOAD_CLIENTEClick(Sender: TObject);
procedure ED_COD_OSKeyPress(Sender: TObject; var Key: Char);
procedure STATUSTimer(Sender: TObject);
procedure GRAVARClick(Sender: TObject);
procedure ED_COD_CLIENTEKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_OS: TF_OS;
CHAMADA_OS:STRING;
implementation
{$R *.dfm}
uses U_DM, U_CONSULTA_CLIENTE;
procedure CLEAR; //USO PARA LIMPAR OS CAMPOS EDITS QUANDO PRECISO.
var
i : integer;
begin
for i:=0 to F_OS.ComponentCount-1 do
begin
if F_OS.Components[i] is TEdit then
(F_OS.Components[i] as TEdit).Clear;
if F_OS.Components[i] is TsEdit then
(F_OS.Components[i] as TsEdit).Clear;
end;
end;
[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20151116-164939.png[/img]
ROTINAS DO FORM- OS
--------------------------------------------------------------------------------------------------------------------------------------------
procedure TF_OS.LOAD_CLIENTEClick(Sender: TObject);
begin
DM.Q_CLIENTES.Close;
DM.Q_CLIENTES.SQL.Text:='SELECT * FROM SV_CLIENTE WHERE CODIGO_CLIENTE="'+ED_COD_CLIENTE.Text+'"';
DM.Q_CLIENTES.OPEN;
if DM.Q_CLIENTES.RecordCount<>1 then
BEGIN
ShowMessage('Cliente não localizado!');
END
ELSE
BEGIN
ED_NOME.Text:=DM.Q_CLIENTES.FieldByName('NOME_CLIENTE').AsString;
ED_CIDADE.Text:=DM.Q_CLIENTES.FieldByName('CIDADE').AsString;
ED_UF.Text:=DM.Q_CLIENTES.FieldByName('ESTADO').AsString;
ED_TEL.Text:=DM.Q_CLIENTES.FieldByName('TELEFONE').AsString;
ED_COD_CLIENTE.Enabled:=FALSE;
DM.Q_CLIENTES.CLOSE;
END;
END;
procedure TF_OS.CANCELARClick(Sender: TObject);
begin
CHAMADA_OS:='';
ALTERAR.Enabled:=TRUE;
CANCELAR.Enabled:=FALSE;
NOVO.Enabled:=TRUE;
CLEAR;
ED_COD_OS.Enabled:=TRUE;
GRAVAR.Enabled:=FALSE;
ED_COD_CLIENTE.Enabled:=FALSE;
end;
//AQUI TEM UM EDIT CODIGO CLIENTE OU F2 // F2 ABRE OUTRO FORM PARA PESQUISAR CLIENTE.
procedure TF_OS.ED_COD_CLIENTEKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if KEY=VK_F2 then
BEGIN
Application.CreateForm(TF_CONSULTA_CLIENTE,F_CONSULTA_CLIENTE);
F_CONSULTA_CLIENTE.ShowModal;
END;
end;
procedure TF_OS.ED_COD_CLIENTEKeyPress(Sender: TObject; var Key: Char);
begin
if KEY=#13 then
BEGIN
if ED_COD_CLIENTE.Text<>'' then
BEGIN
LOAD_CLIENTE.Click; // CARREGA DADOS DO CLIENTE.
END;
END;
end;
procedure TF_OS.ED_COD_OSKeyPress(Sender: TObject; var Key: Char);
begin
if KEY=#13 then
BEGIN
if ED_COD_OS.Text<>'' then
BEGIN
ALTERAR.Click;
END;
END;
end;
procedure TF_OS.GRAVARClick(Sender: TObject);
VAR SELECET:STRING;
begin
SELECET:='';
if CHAMADA_OS='INSERT' then
BEGIN
DM.Q_OS.CLOSE;
DM.Q_OS.SQL.Text:='SELECT * FROM SV_OS';
DM.Q_OS.Open;
DM.Q_OS.Insert;
DM.Q_OS.FieldByName('ID_OS').AsString:=ED_COD_OS.Text;
DM.Q_OS.FieldByName('COD_CLIENTE').AsString:=ED_COD_CLIENTE.Text;
DM.Q_OS.FieldByName('STATUS').AsString:=ED_STATUS.Text;
DM.Q_OS.POST;
SELECET:=
'SELECT SV_OS.ID_OS, SV_OS.COD_CLIENTE, SV_OS.STATUS FROM SV_OS WHERE '+
'(((SV_OS.ID_OS)='+ED_COD_OS.Text+
') AND ((SV_OS.COD_CLIENTE)="'+ED_COD_CLIENTE.Text+'") AND ((SV_OS.STATUS)="'+ED_STATUS.Text+'"));';
DM.Q_OS.CLOSE;
DM.Q_OS.SQL.Text:=SELECET;
DM.Q_OS.OPEN;
if DM.Q_OS.RecordCount=1 then
BEGIN
ShowMessage('OS-'+ED_COD_OS.Text+', GERARDA COM SUCESSO');
DM.Q_OS.CLOSE;
CANCELAR.Click;
END
ELSE
BEGIN
ShowMessage('FALHA NA GERAÇÃO DA OS-'+ED_COD_OS.Text);
DM.Q_OS.CLOSE;
END;
EXIT;
end;
BEGIN
if CHAMADA_OS='EDIT' then
BEGIN
DM.Q_OS.EDIT;
DM.Q_OS.FieldByName('STATUS').AsString:=ED_STATUS.Text;
DM.Q_OS.POST;
SELECET:=
'SELECT SV_OS.ID_OS, SV_OS.COD_CLIENTE, SV_OS.STATUS FROM SV_OS WHERE '+
'(((SV_OS.ID_OS)='+ED_COD_OS.Text+
') AND ((SV_OS.COD_CLIENTE)="'+ED_COD_CLIENTE.Text+'") AND ((SV_OS.STATUS)="'+ED_STATUS.Text+'"));';
DM.Q_OS.CLOSE;
DM.Q_OS.SQL.Text:=SELECET;
DM.Q_OS.OPEN;
if DM.Q_OS.RecordCount=1 then
BEGIN
ShowMessage('OS-'+ED_COD_OS.Text+', ALTERADA COM SUCESSO');
DM.Q_OS.CLOSE;
CANCELAR.Click;
END
ELSE
BEGIN
ShowMessage('FALHA NA ALTERAÇÃO DA OS-'+ED_COD_OS.Text);
DM.Q_OS.CLOSE;
END;
end;
EXIT;
end;
end;
procedure TF_OS.NOVOClick(Sender: TObject);
begin
CHAMADA_OS:='INSERT';
ALTERAR.Enabled:=FALSE;
ED_COD_OS.Enabled:=false;
dm.Q_OS.Close;
dm.Q_OS.SQL.Text:='SELECT * FROM SV_OS';
dm.Q_OS.OPEN;
ED_COD_OS.Text:=IntToStr(dm.Q_OS.RecordCount+1);
dm.Q_OS.Close;
CANCELAR.Enabled:=TRUE;
GRAVAR.Enabled:=TRUE;
NOVO.Enabled:=FALSE;
ED_COD_CLIENTE.Enabled:=TRUE;
ED_COD_CLIENTE.SetFocus;
end;
procedure TF_OS.ALTERARClick(Sender: TObject);
begin
if ED_COD_OS.Text='' then
begin
ShowMessage('INFORME O NÚMERO DA OS');
ED_COD_OS.SetFocus;
END
ELSE
BEGIN
dm.Q_OS.Close;
dm.Q_OS.SQL.Clear;
dm.Q_OS.SQL.Text:='SELECT * FROM SV_OS WHERE ID_OS='+ED_COD_OS.Text;
dm.Q_OS.OPEN;
if dm.Q_OS.RecordCount=0 then
BEGIN
ShowMessage('OS -'+ED_COD_OS.Text+', não encontrada');
dm.Q_OS.Close;
CLEAR;
END
ELSE
BEGIN
CHAMADA_OS:='E
Raimundo Pereira
Gostei + 2
Mais Posts
16/11/2015
Raimundo Pereira
Gostei + 0
16/11/2015
David
Vlw por ter compartilhado conhecimento.
Gostei + 0
20/11/2015
Valmir
COM ESSA VOCÊ TAMBÉM ME AJUDOU, VALEU VOCÊ É DEMAISSSSS. OBRIGADO.
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)