Problema para salvar dados em mais de uma tabela utilizando JOIN
Olá a todos!
Não estou conseguindo salvar no Firebird, Utilizando Delphi 2010 e DBExpress, utilizando JOIN de três tabelas.
Meu SQL está assim:
SELECT A.*, E.*, S.* FROM ALUNO A
LEFT OUTER JOIN ENDERECO E ON A.CODIGOENDERECO = E.CODIGO
LEFT OUTER JOIN SERIE S ON S.CODIGOALUNO=A.CODIGO
ORDER BY A.NOME
Alguém podria me ajudar?
Não estou conseguindo salvar no Firebird, Utilizando Delphi 2010 e DBExpress, utilizando JOIN de três tabelas.
Meu SQL está assim:
SELECT A.*, E.*, S.* FROM ALUNO A
LEFT OUTER JOIN ENDERECO E ON A.CODIGOENDERECO = E.CODIGO
LEFT OUTER JOIN SERIE S ON S.CODIGOALUNO=A.CODIGO
ORDER BY A.NOME
Alguém podria me ajudar?
Francisco Santos
Curtidas 0
Respostas
Teí Sistemas
11/11/2011
Bom dia,
Como vc está usando três tabelas, o DbExpress não sabe em qual tabela ele irá salvar. Para ele saber, vc deve definir, no evento OnGetTablename do DataSetProvider correspondente a este SQLDataSet. Abaixo um exemplo:
Espero ter ajudado.
Como vc está usando três tabelas, o DbExpress não sabe em qual tabela ele irá salvar. Para ele saber, vc deve definir, no evento OnGetTablename do DataSetProvider correspondente a este SQLDataSet. Abaixo um exemplo:
procedure TForm1.DataSetProvider1GetTableName(Sender: TObject; DataSet: TDataSet; var TableName: WideString); begin TableName := NOME_DA_TABELA; end;
Espero ter ajudado.
GOSTEI 0
Wanderson Cardoso
11/11/2011
Olá,
O que você precisa fazer é configurar o teu SQLDataSet e o ClientDataSet.
Ex.: Após adicionar os Fields no SQLDataSet set para false a propriedade pfInUpdate e pfInWhere dos campos vindos das tabelas ENDERECO e SERIE, no DataSetProvider set para True a propriedade poIncFieldProps, agora carregue para o ClientDataSet os campos.
Skype: tennos.wanderson
O que você precisa fazer é configurar o teu SQLDataSet e o ClientDataSet.
Ex.: Após adicionar os Fields no SQLDataSet set para false a propriedade pfInUpdate e pfInWhere dos campos vindos das tabelas ENDERECO e SERIE, no DataSetProvider set para True a propriedade poIncFieldProps, agora carregue para o ClientDataSet os campos.
Skype: tennos.wanderson
GOSTEI 0
Wilson Junior
11/11/2011
O DBXpress assume a tabela que deve ser atualizada a primeira tabela após a palavra reservada FROM.
Para os campos que não pertencem a tabela a ser atualizada (chamados campos virtuais), deve ser colocado os ProviderFlags de cada Field tudo como False.
Espero ter colaborado.
Para os campos que não pertencem a tabela a ser atualizada (chamados campos virtuais), deve ser colocado os ProviderFlags de cada Field tudo como False.
Espero ter colaborado.
GOSTEI 0