Erro na query

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

Respostas

08/03/2006

Sremulador

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


Responder Citar

08/03/2006

Rafael Gomes

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..


Responder Citar

08/03/2006

Rafael Gomes

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???

=/


Responder Citar

09/03/2006

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


Responder Citar

09/03/2006

Martins

[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?


Responder Citar

09/03/2006

Rafael Gomes

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


Responder Citar

09/03/2006

Martins

[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?


Responder Citar

09/03/2006

Rafael Gomes

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



Responder Citar

09/03/2006

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


Responder Citar

09/03/2006

Martins

[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.


Responder Citar

09/03/2006

Rafael Gomes

ok martins, aguardo sua resposta ...

[]s


Responder Citar

10/03/2006

Rafael Gomes

up, mais ninguem poderia me ajudar ? :cry:


Responder Citar

10/03/2006

Martins

[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:


Responder Citar