Fórum Form de Cadastro utilizando duas Tabelas. #349121

17/11/2007

0

Utilizo o Delphi 2006 com DBExpress para conexão com o B.D. InterBase, meu esquema possui duas Tabelas TBCLIENTES e TBSESSOES descritas abaixo:

TBCLIENTES
codigo - integer - PK TBCLIENTES
nome - varchar(60)
telefone - varchar(15)
email - varchar(50)
nrSessao - integer - FK TBSESSOES
TBSESSOES
nrSessao - integer - PK TBSESSOES
escola - varchar(60)
dataCadastro - date

Meu DataModule (dm) armazena os seguintes objetos:
SQLCONNECTION (sqlconexao)
SQLDataSet (TBCLIENTES) SQLDataSet (TBSESSOES)
DataSetProvider (dspClientes) DataSetProvider (dspSessoes)
ClientDataSet (cdsClientes) ClientDataSet (cdsSessoes)
DataSource (dsClientes) DataSource (dsSessoes)

Form de Cadastro de Clientes (FoClientes)
DataSource (dsClientes)

Form de Cadastro de Sessoes (FoSessoes)
DataSource (dsSessoes)

A minha idéia é conseguir puxar os dados da tabela TBSESSOES quando estiver inserindo um novo cliente, ou seja, ao escolher o ´nrSessao´ automaticamente seria visualizada a ´escola´ correspondente, com isso, conseguiria vincular o cliente a uma sessão.
O problema é que não estou conseguindo puxar os dados da tabela TBSESSOES no form de cadastro de Clientes. Queria saber qual componente deveria usar para fazer esse tipo de configuração e quais as configurações necessárias.

Espero ter inserido essa dúvida de forma clara. No aguardo de um breve retorno.


Wolfwave76

Wolfwave76

Responder

Posts

17/11/2007

Lucas_spohr

Olá!!

Vamos ver se eu entendi. Pelo visto, vc precisa alguma coisa parecida com o que eu fiz no meu sistema de estágio...

Tenho o formulário de cadastro de matrículas, onde tenho os campos [CodTurma] [Turma].

Clico no edtCodTurma, teclo F2, abrirá o formulário de pesquisa de turmas, seleciono uma turma, fecho e esta, jogará os valores nos dois edits...

Caso for isso q vc precisa, clique no seu Edit, que corresponde ao código da sessão, mude as propriedades ReadOnly para True e a cor, para clBtnFace. No evento OnKeyDown, coloque este código:

----------------------------------------------------------------------
procedure TfrmMatriculas.DBEdit2KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then Perform(Wm_NextDlgCtl,0,0);
//Se pressionou a Tecla F2
If key = Vk_F2 then
begin
frmPesTurmas := TfrmPesTurmas.Create(self);
try
// Chamar formulário de Pesquisa de Turmas
frmPesTurmas.ShowModal;
finally
//Liberar recurso do formulario
frmPesTurmas.Release;
//Tirar formulário da memória
frmPesTurmas := nil;
end;
//buscar a Turma
dados.CdsMatriculas [´CODTURMA´] := dados.codigo;
dados.CdsMatriculas [´Turma´] := Dados.nome;
end;
end;
----------------------------------------------------------------------

No formulário de Pesquisa de Turmas (sessões, no seu caso), ao pesquisar a turma (sessão) correspondente, selecionar e fechar, no botão fechar, coloque este código:

----------------------------------------------------------
procedure TfrmPesTurmas.btnfecharClick(Sender: TObject);
begin
dados.codigo := CdsPesquisaCODTURMA.AsInteger;
dados.Nome := CdsPesquisaTURMA.AsString;
//fechar a consulta
CdsPesquisa.Close;
//limpar edit
Edit1.Text:=´´;
//fechar o formulario
close;
end;
----------------------------------------------------------

Mas não se esqueça de colocar no seu datamodule, em public:
codigo: integer;
nome: string;


Espero ter sido claro...


Responder

Gostei + 0

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

Aceitar