Código SQL não funciona com DBExpress!

Delphi

09/02/2008

Olá pessoal.
Tenho um código SQL no meu projeto que objetiva realizar subselects que preenchem campos ´virtuais´ com a descrição de outros campos (estrangeiros) que encontram-se em outras tabelas.

O código funciona perfeitamente, entretanto ao incluir um novo registro (usando DBExpress com UIB Firebird + FB2) dá um erro informando: Column does not belong to referenced tables (ou seja, Coluna não pertence a tabela referenciada).

Só que, o mesmo código funciona em inclusões/alterações no SQL Editor do IBExpert, ou seja, o código é um legítimo SQL...

Segue o código....
Observe que o código SQL é parametrizado.

select 
  CODIGO, CODLOJA, CODCLIENTETITULAR, CODPLANO, 
  CODTIPOCOBRANCA, CODVENDEDOR, CODCOBRADOR, 
  CODINDICACAO, CODCLIENTEBASECALCULO, SITCONTRATO, 
  TXADESAOPAGA, TXADESAODATAPAG, DIAPAGAMENTO, 
  DATASSCONTRATO, DATVENC1PARCELA, VALORENTRADA, 
  VALORMENSALIDADE, ATIVO, DATCADASTRO,
  (select CLIENTES.NOME from CLIENTES where CLIENTES.codigo = CONTRATOS.CODCLIENTETITULAR) as FK_CLIENTES_CLIENTETITULAR,
  (select CLIENTES.NOME from CLIENTES where CLIENTES.codigo = CONTRATOS.CODCLIENTEBASECALCULO) as FK_CLIENTES_CLIENTEBASECALCULO,
  (select PLANOS.PLANO from PLANOS where PLANOS.CODIGO = CONTRATOS.CODPLANO) as FK_PLANOS_NOMEPLANO,
  (select AUXTIPOSCOBRANCA.DESCRICAO from AUXTIPOSCOBRANCA where AUXTIPOSCOBRANCA.CODIGO = CONTRATOS.CODTIPOCOBRANCA) as FK_AUXTIPOSCOBRANCA_DESCRICAO,
  (select VENDEDORES.NOME from VENDEDORES where VENDEDORES.CODIGO = CONTRATOS.CODVENDEDOR) as FK_VENDEDORES_NOME,
  (select COBRADORES.NOME from COBRADORES where COBRADORES.CODIGO = CONTRATOS.CODCOBRADOR) as FK_COBRADORES_NOME,
  (select AUXINDICACOES.DESCRICAO from AUXINDICACOES where AUXINDICACOES.CODIGO = CONTRATOS.CODINDICACAO) as FK_AUXINDICACOES_DESCRICAO,
  (select CLIENTES.DATNASCIMENTO from CLIENTES  where CLIENTES.codigo = CONTRATOS.CODCLIENTEBASECALCULO) as FK_CLIENTES_DATANASCCLIBASECALC
from
  CONTRATOS
where
  (CODIGO = :CODIGO)



Edsoncabral

Edsoncabral

Curtidas 0

Respostas

Edsoncabral

Edsoncabral

09/02/2008

Só para informar, uso componentes DBAware (dbedits, etc) com -> DataSource -> ClientDataSet -> DataSetProvider -> SQLDataSet. Este código está na propriedade CommandText do SQLDataSet e para gravar uso:
ClientDataSetContrato.Post;
ClientDataSetContrato.ApplyUpdates(0);

No aguardo....


GOSTEI 0
POSTAR