Fórum Sql Com Inner Join - append funciona, edit não funciona #355292
12/03/2008
0
Olá a todos,
Uso Delphi 7 + Firebird 1.5 , Dbexpress.
Montei uma Sql para extrair os dados das tabelas usando Inner Join conforme mostrado abaixo:
>>>>>>>>>>>>
V_SqlMestre := ´SELECT A.TPR_COD, A.TPR_DTCADASTRO, ´ +
´A.CLI_COD, A.FRN_COD, A.TPR_VENCTO, A.TPR_PAGTO, ´ +
´A.TPR_VALORTOTAL, ´ +
´B.CLI_NOMEFANTASIA, ´ +
´C.FRN_NOMEFANTASIA, ´ +
´FROM TITULOSMESTRE A ´+
´INNER JOIN CLIENTES B ON A.CLI_COD = B.CLI_COD ´ +
´INNER JOIN FORNECEDORES C ON A.FRN_COD = C.FRN_COD ´ +
´ORDER BY A.TPR_COD ´;
V_SqlDtSt.CommandText := V_SqlMestre;
V_SqlDtSt.Close;
V_CliDtSt.Close;
V_CliDtSt.Open;
==== >>>>>>> A INCLUSÃO FUNCIONA
V_CliDtSt.Append;
With V_CliDtSt do
begin
FieldByName(´Tpr_Cod´).AsString := EdtCodigo.Text;
FieldByName(´Tpr_DtCadastro´).AsString := EdtDtCadastro.Text;
FieldByName(´Frn_Cod´).AsString := EdtCodFrn.Text;
FieldByName(´Cli_Cod´).AsString := EdtCodCli.Text;
FieldByName(´Tpr_Vencto´).AsString := EdtDtVencto.Text;
FieldByName(´Tpr_Pagto´).AsString := EdtDtPagto.Text;
FieldByName(´Tpr_ValorTotal´).AsCurrency := StrToFloat(EdtTot.Text);
Post;
If ApplyUpdates(0) = 0 then
V_SqlCncDados.Commit(Transacao)
else
V_SqlCncDados.Rollback(Transacao);
end;
==== >>>>>>> NÃO FUNCIONA NA EDIÇÃO
V_CliDtSt.Edit
With V_CliDtSt do
begin
FieldByName(´Tpr_Cod´).AsString := EdtCodigo.Text;
FieldByName(´Tpr_DtCadastro´).AsString := EdtDtCadastro.Text;
FieldByName(´Frn_Cod´).AsString := EdtCodFrn.Text;
FieldByName(´Cli_Cod´).AsString := EdtCodCli.Text;
FieldByName(´Tpr_Vencto´).AsString := EdtDtVencto.Text;
FieldByName(´Tpr_Pagto´).AsString := EdtDtPagto.Text;
FieldByName(´Tpr_ValorTotal´).AsCurrency := StrToFloat(EdtTot.Text);
Post;
If ApplyUpdates(0) = 0 then
V_SqlCncDados.Commit(Transacao)
else
V_SqlCncDados.Rollback(Transacao);
end;
Retorna a mensagem: Column Unknown CLI_NOMEFANTASIA
Não encontra a coluna CLI_NOMEFANTASIA.
Porque a inclusão funciona mesmo com colunas extraidas de outra tabela e na edição ao dar POST o sistema recusa. O CommandText é o mesmo.
Alguem pode me ajudar nisso.
Abraços
Neto
Neto
Curtir tópico
+ 0Posts
12/03/2008
Flyskin
Gostei + 0
12/03/2008
Neto
já estamos ficando conhecidos, afinal a dica da função de semana do ano que vc falou foi ótima, obrigado novamente.
Sobre a dúvida em questão ( Sql ) os campos setados na condição where são os mesmos na inclusão e edição, não deveriam funcionar????
Abraços pra vc, amigo
Neto
Gostei + 0
12/03/2008
Flyskin
é sempre recomendado informar a chave primária da tabela principal para o where e o restante dos campos somente como update, com exceção dos campos vindos de um join que não devem ter nenhuma propriedade marcada...
espero ter ajudado, sempre que eu puder estou por aí...
Gostei + 0
13/03/2008
Neto
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)