Array
(
)

consulta em uma janela e volta para a tela de cadastro

Firekiller_am
   - 06 fev 2006

ola galera delphiana estou uma pequena duvida sobre consulta sql..
e o seguinte tenho um form de cadastro frmClientes nele tenho uma query (qrclientes). ate ai tudo bem..

tenho um botao que chama o outro form (frmconsclientes)de consulta.

a consulta tambem esta funcioando corretmente o meu problema e o seguinte quando pesquiso um registro eu tenho selecionalo no grid e no evento ondlbclick e jogo para a tela de cadastro.

no paradox eu faço assim ..

var
cod:real; {CRIA UMA VARIAVEL PARA FICAR MAIS FACIL}
begin
if qrPesquisa.active then {VERIFICA SE A TABELA ESTA ABERTA}
if qrPesquisa.RecordCount>0 then {VERIFICA SE TEM REGISTRO NA TABELA}
begin
cod:=qrPesquisa.fieldbyname(´codProduto´).value; {}
dmbanco.tblProduto.findkey([cod]);
close;
end

como eu faço isso no sql server usando adoquery..

espero que todos tenham entendido e espero ajudas hehee..

abraços


Aroldo Zanela
   - 06 fev 2006

Colega,

Com ADO você não possui método FindKey. Pode, mas não deve, utilizar locate, pois é altamente recomendável que use uma consulta SQL com as devidas restrições para obter um resultado que trafegue a menor quantidade de dados possível sobre um ambiente Client/Server (SQL Server).


Firekiller_am
   - 06 fev 2006

Aroldo Zanela vc pode me dar um exemplo fera agradeço..

pode ser assim: adoquery.locate(´codcliente´,cod[]); ou de outra forma abraços...


Paullsoftware
   - 06 fev 2006


Citação:
Aroldo Zanela vc pode me dar um exemplo fera agradeço..

pode ser assim: adoquery.locate(´codcliente´,cod[]); ou de outra forma abraços...


a linha acima está errada!
o correto seria:
#Código

AdoQuery.Locate(´CodCliente´,Cod,[]);

mais se tratando de Query a melhor maneira seria usando uma pesquisa com comandos SQL tipo:

#Código

Try
AdoQuery.Close;
AdoQuery.Sql.Clear;
AdoQuery.Sql.Add(´Select * From TbClientes Where CodCliente =:Pesquisa ´;
AdoQuery.ParaByName(´Pesquisa´).AsInteger := StrToInt(EditEntrada.Text);
AdoQuery.Open;
Except
on msg : Exection do
ShowMessage(Msg.Messege);
End;

espero ter ajudado!


Firekiller_am
   - 06 fev 2006

esquecie a vrigula hehhe

mais obrigado pela dica vou testar e posto se funcionou....


Firekiller_am
   - 06 fev 2006

valeu pela dica pessoal funcionou..

ficou assim:

procedure TfrmConsClientes.DBGrid1DblClick(Sender: TObject);
var
cod:real; {CRIA UMA VARIAVEL PARA FICAR MAIS FACIL}
begin
if qrConsClientes.active then {VERIFICA SE A TABELA ESTA ABERTA}
if qrConsClientes.RecordCount>0 then {VERIFICA SE TEM REGISTRO NA TABELA}
begin
frmdm.qrClientes.Locate(´Codigo´, qrConsClientes.Fieldbyname(´Codigo´).AsInteger, []);
close;
end
end;