Buscar registro de outra tabela(Form3) e mostrar em outro formulário (Form4) - DELPHI 7

Delphi

16/11/2015

Boa noite, gostaria de saber como faço para para mostrar no formulário que estou trabalhando (Ordem de Serviço), os dados de um outro formulário (Cadastro de Clientes).

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

David

Curtidas 0

Melhor post

Raimundo Pereira

Raimundo Pereira

16/11/2015

Boa tarde David.

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
GOSTEI 2

Mais Respostas

Raimundo Pereira

Raimundo Pereira

16/11/2015

[img]http://arquivo.devmedia.com.br/forum/imagem/437747-20151116-170523.png[/img]
GOSTEI 0
David

David

16/11/2015

Cara muito obrigado, é justamente isso que preciso.
Vlw por ter compartilhado conhecimento.
GOSTEI 0
Valmir

Valmir

16/11/2015

DIGNÍSSIMO P2

COM ESSA VOCÊ TAMBÉM ME AJUDOU, VALEU VOCÊ É DEMAISSSSS. OBRIGADO.
GOSTEI 1
POSTAR