Fórum Erro -206 dbExpress amp; FB #350653
16/12/2007
0
Estou usando DBEXPRESS, FIREBIRD!
Estou com um problema aqui difícil de se resolve... espero que alguem me ajude.. pois é de extrema importancia no momento...
Tenho um form LOGRADOURO onde busca o registro CIDADE com o seguinte código:
**
begin
try
Application.CreateForm(TfrmCidade, frmCidade);
frmCidade.BtnRetorno.Visible := True;
frmCidade.ShowModal;
DM.cdsLogradouroID_CIDADE.AsInteger := DM.cdsCidadeID_CIDADE.AsInteger ;
[color=red:c8da5b223f] DM.cdsLogradouroNOME_CIDADE.AsString := frmcidade.DtSrc.DataSet.fieldByname(´NOME_CIDADE´).Value;[/color:c8da5b223f]
finally
frmCidade.Release;
frmCidade := nil;
end;
end;
**
Acontece que na linha:
DM.cdsLogradouroNOME_CIDADE.AsString := frmcidade.DtSrc.DataSet.fieldByname(´NOME_CIDADE´).Value;
É gerada a exception -206 por não ter o campo NOME_CIDADE na tabela logradouro, pois somente o ID é gravado na tabela...
O erro é este, o que sugerem como correção????
SQL da tabela cidade:
SELECT C.ID_CIDADE,
C.NOME_CIDADE,
C.ESTADO
FROM CIDADE C
ORDER BY ID_CIDADE
SQL da tabela Logradouro:
SELECT L.ID_LOGRADOURO,
L.ID_CIDADE,
L.ENDERECO,
L.CEP,
L.BAIRRO,
C.NOME_CIDADE AS NOME_CIDADE,
C.ESTADO
FROM LOGRADOURO L
LEFT OUTER JOIN CIDADE C ON C.ID_CIDADE = L.ID_CIDADE
ORDER BY ID_LOGRADOURO
Obrigado...
I.need.help
Curtir tópico
+ 0Posts
16/12/2007
I.need.help
Gostei + 0
16/12/2007
Sistemald
se for você tem que nos campos que não são da tabela principal e setar a sua propriedade para hidden true, e update e where para false.
Gostei + 0
16/12/2007
I.need.help
Tentei ajustar ProviderFlags e deu o mesmo erro!
Mais alguma dica?
Obrigado!
Gostei + 0
16/12/2007
Sistemald
O fields deve ser acertados no clientdataset
Gostei + 0
17/12/2007
I.need.help
[img:78255ff566]http://dec17.imgshare.us/8R3.jpg[/img:78255ff566]
Gostei + 0
17/12/2007
Oswaldosaraujo
Olá
Acho que para vc conseguir gravar nesta tabela, vc terá que fazer uma tabela aninhada com uma SQLQuery e um CDS para vc gravar na segunda tabela.
Outra coisa é que, quando vc tem vários tabelas na query, é bom vc colocar no OnGetTableName do Provider o nome da Tabela Principal...as vezes dá este erro ao gravar na principal
Gostei + 0
17/12/2007
I.need.help
Talvez por falta de informação da minha parte!
Vcs estão entendendo o problema ao menos?
Obrigado! :cry:
Gostei + 0
17/12/2007
Ulisses_sjardim
O erro se deve ao seguinte, você disse que o campo nome_cidade não pertence a tabela logradouro. Só que quando o datasetprovider gera a instrução de inserção ou atualização, as providerflags do campo nome_cidade devem estar todas setadas como false. Caso contrário o mesmo irá gerar estas instruções com a coluna nome_cidade o qual não existe na tabela gerando o erro que você notificou. :)
Você deve ainda setar a pfInKey como True para o campo chave da tabela logradouro e a propriedate UpdateMode do datasetprovider como wherekeyonly.
Lembrando que as providerflags devem ser configuradas na query(sqldataset, sqlquery) e no clientdataset.
Gostei + 0
17/12/2007
I.need.help
Entendi... então..!
Na qryLogradouro e no cdsLogradouro apenas UPDATE e KEY ficaram TRUE, o NOME_CIDADE e ESTADO ficaram todos FALSE!
Ulisses, obrigado pela explicação. Consegui o resultado desejado em minha aplicação, que era exibir os dados retornados e efetuar a gravação desses dados..(O que antes gerava o erro)!
Agradeço mais uma vez!
:lol: Abraços
Gostei + 0
18/12/2007
Ulisses_sjardim
Flw!!! 8)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)