Erro na query

Delphi

08/03/2006

é o seguinte ...

tenho 2 formularios de cadastro ...
2 querys em um datamodule ...

eu alterno as 2 querys entre os 2 formularios de cadastro ...

para alternar entre as tabelas uso o seguinte codigo ...

cadastro de armadores

  DmPrincipal.OpenQy(DmPrincipal.QyCad,´select * from tbarmadores´);
  DmPrincipal.OpenQy(DmPrincipal.QyCadDetail,´select * from tbarmadores where codarmador = :codarmador´);
  Application.CreateForm(TFrmCadArmadores,FrmCadArmadores);
  Application.CreateForm(TFrmArmadoresContato,FrmArmadoresContato);


cadastro de agentes de carga

  DmPrincipal.OpenQy(DmPrincipal.QyCad,´select * from tbagentescarga´);
  DmPrincipal.OpenQy(DmPrincipal.QyCadDetail,´select * from tbagentescargacontatos where codagente = :codagente´);
  Application.CreateForm(TFrmCadAgente,FrmCadAgente);
  Application.CreateForm(TFrmAgenteContato,FrmAgenteContato);
  Application.CreateForm(TFrmCadAgenteContato,FrmCadAgenteContato);


por exemplo, s eeu entrar no form de armadores e depois sair e entrar no de agentes da pau ...

ele da a seguinte mensagem .. field ´codarmador´ not found .....

o procedimento openqy é o seguinte ...
procedure TDmPrincipal.OpenQy(Qy: TADOQuery; tb: string);
begin
  Qy.Close;
  Qy.SQL.Clear;
  Qy.SQL.Text:= tb;
  Qy.Open;
end;



alguem sabe me dizer, ou tem uma ideia da causa deste erro


Rafael Gomes

Rafael Gomes

Curtidas 0

Respostas

Sremulador

Sremulador

08/03/2006

o que ele te diz e que o campo nao existe...


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/03/2006

o que ele te diz e que o campo nao existe...


isso eu sei ...

vejam bem ... quando eu executo u form por vez, fecho o programa e executo somente o outro nao da erro algum ...

o porblema esta ocorrendo na hora de alternar as tabelas da query..


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/03/2006

procedure TFrmPrincipal.Button1Click(Sender: TObject);
begin
  DmPrincipal.OpenQy(DmPrincipal.QyCad,´select * from tbagentescarga´);
  DmPrincipal.OpenQy(DmPrincipal.QyCadDetail,´select * from tbagentescargacontatos where codagente = :codagente´);
  label1.Caption:= ´agentes´;
end;

procedure TFrmPrincipal.Button2Click(Sender: TObject);
begin
  DmPrincipal.OpenQy(DmPrincipal.QyCad,´select * from tbarmadores´);
  DmPrincipal.OpenQy(DmPrincipal.QyCadDetail,´select * from tbarmadores where codarmador = :codarmador´);
  label1.Caption:= ´armadores´;

end;



fiz esse codigo pra testar ...

quando seto a tabela de armador e depois clico no botao1 da um erro pedindo a chave primaria de armador

e vice e versa ...

se eu tirar as linhas referentes a QyCadDetail funciona perfeitamente ... o problema deve estar na estrutura detalhe ...
agora me digam pq???

=/


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/03/2006

eu descobri o que esta acontecendo, quando troco o sql da tabela detalhe ele nao esta atualizando .. entao ele vai procurar os campos da tabela master que estava ativa ...

só nao sei como resolver ...
alguem poderia me ajudar?
[]s


GOSTEI 0
Martins

Martins

08/03/2006

[quote:55a10d94ff=´Rafael Gomes´]eu descobri o que esta acontecendo, quando troco o sql da tabela detalhe ele nao esta atualizando .. entao ele vai procurar os campos da tabela master que estava ativa ...

só nao sei como resolver ...
alguem poderia me ajudar?
[]s[/quote:55a10d94ff]

Seu banco de dados é MS-Access ou MS Sql-Server?

Caso seja SQL-Server vc não poderia montar um view dentro do Banco e só chamar?


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/03/2006

na verdade trabalho com mysql e firebird ... sim, com ADO!


GOSTEI 0
Martins

Martins

08/03/2006

[quote:7b6a71b9a2=´Rafael Gomes´]na verdade trabalho com mysql e firebird ... sim, com ADO![/quote:7b6a71b9a2]

vc poderia usar [color=brown:7b6a71b9a2][b:7b6a71b9a2]join[/b:7b6a71b9a2][/color:7b6a71b9a2] para fazer a junção das duas tabelas ou não?

Esse mestre datalhe será usado em inserções, edições ou apenas na visualização (navegação) de registros?


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/03/2006

Esse mestre datalhe será usado em inserções, edições ou apenas na visualização (navegação) de registros?


em insercoes, edicoes, e visualizacoes ....

apenas repetindo o conteudo da mp

seguinte, estou respondendo por aqui mas irei postar no forum tbm, se voce pudesse responderpor lá seria até melhor, assim beneficiaria a todos ... vou explicar detalhadamente o problema ... imagina 2 tabelas quaisquer ... tabela cliente codcli nmcli tabela telefone codtelefone codcli numtelefone para mim fazer mestre detalhe utilizando ADOQuery estou utilizando o seguinte codigo ... Código: procedure TDmPrincipal.OpenQy(Qy: TADOQuery; tb: string); begin Qy.Close; Qy.SQL.Clear; Qy.SQL.Text:= tb; Qy.Open; end; para ativar as querys uso o seguinte codigo ... Código: DmPrincipal.OpenQy(QyCad,´select * from tbCli´); DmPrincipal.OpenQy(QyCadDetail,´select * from tbTelefone where codcli = :codcli´); agora imagine que eu tenha outras 2 tabelas distintas que tbm sejam estrutura e detalhe ... se eu simplesmente chamar o metodo OpenQy para fazer a alternancia ele me retorna um erro .. por exemplo, eu carrego as duas tabelas cliente e telefone, respectivamente nas querys QyCad e QyCadDetail ... logo apos eu chamo o metodo openqy para alternar pra outras 2 tabelas ai ele me da o seguinte erro ... QyCad: Field ´codcli´ not found ... to usando adoquery!! []ss



GOSTEI 0
Rafael Gomes

Rafael Gomes

08/03/2006

[url]www.ellas.com.br/teste.rar[/url]

ai esta um link para baixar um pequeno exemplo ... esta dando erro .. se alguem puder baixar para dar uma olhada agradeceria ...

[]sss


GOSTEI 0
Martins

Martins

08/03/2006

[quote:cbde528b7d=´Rafael Gomes´][url]www.ellas.com.br/teste.rar[/url]

ai esta um link para baixar um pequeno exemplo ... esta dando erro .. se alguem puder baixar para dar uma olhada agradeceria ...

[]sss[/quote:cbde528b7d]

Baixei o exemplo e vou tentar dar uma olhada nele.


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/03/2006

ok martins, aguardo sua resposta ...

[]s


GOSTEI 0
Rafael Gomes

Rafael Gomes

08/03/2006

up, mais ninguem poderia me ajudar ? :cry:


GOSTEI 0
Martins

Martins

08/03/2006

[quote:466a01ed97=´Rafael Gomes´]up, mais ninguem poderia me ajudar ? :cry:[/quote:466a01ed97]

Ando meio sem tempo, mas esse fds dou uma olhada no teu exemplo, e vejo o q posso fazer.

valew!!

:wink:


GOSTEI 0
POSTAR