consulta em uma janela e volta para a tela de cadastro

06/02/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


Firekiller_am

Respostas

06/02/2006

Aroldo Zanela

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


Responder Citar

06/02/2006

Firekiller_am

[b:68e491504d]Aroldo Zanela [b] vc pode me dar um exemplo fera agradeço..

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


Responder Citar

06/02/2006

Paullsoftware

[b:6bb6951869]Aroldo Zanela [b] vc pode me dar um exemplo fera agradeço.. pode ser assim: adoquery.locate(´codcliente´,cod[]); ou de outra forma abraços...[/b:6bb6951869]


a linha acima está errada!
[b:6bb6951869]o correto seria:[/b:6bb6951869]
AdoQuery.Locate(´CodCliente´,Cod,[&93;);

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

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!


Responder Citar

06/02/2006

Firekiller_am

esquecie a vrigula hehhe

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


Responder Citar

06/02/2006

Firekiller_am

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;


Responder Citar