Fórum Master Details com Firebird #45079
23/06/2004
0
CREATE TABLE CLIENTE (
CODIGO INTEGER NOT NULL,
NOME VARCHAR(20)
);
ALTER TABLE CLIENTE ADD CONSTRAINT PK_CODIGO PRIMARY KEY (CODIGO);
__________________________________________________________
CREATE TABLE DADOS (
CODIGO INTEGER NOT NULL,
CODIGOLIGACAO INTEGER,
ENDERECO VARCHAR(20)
);
ALTER TABLE DADOS ADD CONSTRAINT PK_CODIGODADOS PRIMARY KEY (CODIGO);
ALTER TABLE DADOS ADD CONSTRAINT FK_LIGACAO FOREIGN KEY (CODIGOLIGACAO) REFERENCES CLIENTE (CODIGO);
__________________________________________________________
Colocando os componentes no delphi IBDatabase - IBDataset e IBtransation liguei entre eles, fiz botao de incluir e gravar, coloquei grid isso duas vezes um para cada tabela, DADOS e CLIENTE, cadastrado e tudo ao selecionar no grid o cliente um ele não mostra no grid de baixo so os dados daquele cliente e sim de todos, como faço máster details ? qual seria a melhor forma !!!
Ainda nao aprendi legal sobre Foreign key pelo que entendi e andei lendo ate aqui no forum seria isso o uso dele... !! Valeu !!!
Renato_sp
Curtir tópico
+ 0Posts
23/06/2004
Afarias
select * from tabela_detable where campo_mestre = :campo_chave
onde o parâmetro campo_chave tem o mesmo nome do campo_chave na tabela mestre.
então configure a propriedade DataSource para um DataSource ligado a query/dataset mestre.
T+
Gostei + 0
23/06/2004
Renato_sp
A-Para fazer máster details usa o IBQuery e para não ficar alternando o datasource , inserir com o IBQuery tbm
B – Ou então ficar alternando o Datasource mais ou menos assim
Ligação – Esta funcionando isso
DataSourceDados.DataSet:=IBQueryDados; << aqui eu troquei o datasource
IBQueryDados.Close;
IBQueryDados.SQL.Clear;
IBQueryDados.SQL.add(´Select * from Dados ´);
IBQueryDados.SQL.add(´where CodigoLigacao = ´+QuotedStr(IBQuery1CODIGO.AsString));
IBQueryDados.Prepare;
IBQueryDados.Open;
Ao Inserir
if not IBDataSetDados.active then
IBDataSetDados.open;
DataSourceDados.DataSet:=IBDataSetDados; << aqui eu troquei o datasource
IBDataSetDados.Insert;
C &8211; Ou então usar IBTable ou qualquer outra coisa
Me de uma opinião de como fazer máster details sem comprometer muito, o que vc acha que fica bom... Valeu espero ter sido claro qualquer coisa se não entender escrevo falando mais
Gostei + 0
23/06/2004
Gandalf.nho
Gostei + 0
23/06/2004
Afarias
como disse o gandalf, vc não precisa um IBQuery (somente leitura) e um IBDataSet... use apenas 1 IBDataSet para o mestre e 1 para o Detalhe.
IBDataSet = IBQuery + IBUpdateSQL
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)