Realizar Consultas
Garela boa tarde.
Estou com problema e espero q alguem me ajude,
Amigos tenho um cadastro de Clientes, e quero fazer uma pesquisa de clientes q ja estão cadastrados, quero usar o codigo de cadastro para fazer isso, como faço?
Os campos q estou usando e Edits Comuns, e não DbEdits.
De ja agradeço a resposta.
Estou com problema e espero q alguem me ajude,
Amigos tenho um cadastro de Clientes, e quero fazer uma pesquisa de clientes q ja estão cadastrados, quero usar o codigo de cadastro para fazer isso, como faço?
Os campos q estou usando e Edits Comuns, e não DbEdits.
De ja agradeço a resposta.
Jarabeucp
Curtidas 0
Respostas
Marcosrocha
30/01/2007
Você pode criar seu próprio formulário de pesquisas e adicionar um DBGrid ou um StringGrid (que é mais fácil de controlar) aí faça um select numa query e mande todos os dados pro StringGrid com um While
StringGrid.RowCount := 2; // como se limpasse o Grid DM.QRPesq.SQL.Clear; DM.QRPesq.SQL.Add(´Select * from Clientes´); DM.QRPesq.SQL.Add(´Order by cli_nome´); DM.QRPesq.Open; if not DM.QRPesq.IsEmpty then while not DM.QRPesq.Eof do begin // antes de inserir os dados, limpa as colunas StringGrid.Cells[1,StringGrid.RowCount - 1] := ´´; StringGrid.Cells[2,StringGrid.RowCount - 1] := ´´; // entao insere StringGrid.Cells[1, StringGrid.RowCount - 1] := DM.QRPesq.FieldByName(´cad_codigo´).asString; StringGrid.Cells[2, StringGrid.RowCount - 1] := DM.QRPesq.FieldByName(´cad_nome´).asString; // se nao for o ultimo registro, entao adiciona mais uma linha if not DM.QRPesq.Eof then StringGrid.RowCount -1 := StringGrid.RowCount + 1; DM.QRPesq.Next; end;
GOSTEI 0
Jarabeucp
30/01/2007
Você pode criar seu próprio formulário de pesquisas e adicionar um DBGrid ou um StringGrid (que é mais fácil de controlar) aí faça um select numa query e mande todos os dados pro StringGrid com um While
StringGrid.RowCount := 2; // como se limpasse o Grid DM.QRPesq.SQL.Clear; DM.QRPesq.SQL.Add(´Select * from Clientes´); DM.QRPesq.SQL.Add(´Order by cli_nome´); DM.QRPesq.Open; if not DM.QRPesq.IsEmpty then while not DM.QRPesq.Eof do begin // antes de inserir os dados, limpa as colunas StringGrid.Cells[1,StringGrid.RowCount - 1] := ´´; StringGrid.Cells[2,StringGrid.RowCount - 1] := ´´; // entao insere StringGrid.Cells[1, StringGrid.RowCount - 1] := DM.QRPesq.FieldByName(´cad_codigo´).asString; StringGrid.Cells[2, StringGrid.RowCount - 1] := DM.QRPesq.FieldByName(´cad_nome´).asString; // se nao for o ultimo registro, entao adiciona mais uma linha if not DM.QRPesq.Eof then StringGrid.RowCount -1 := StringGrid.RowCount + 1; DM.QRPesq.Next; end;
Amigo muito boa a dica, so que eu não quero ezibir meus dados em outro componente, quero q meus dados sejam ezibidos nos campos Edits do meu form.
entende?
GOSTEI 0
Marcosrocha
30/01/2007
Caríssimo [b:a335d15988]jarabeucp[/b:a335d15988] é só pensar um pouco,
procedure ProximoAnterior(const Acao: ShortString); begin DM.QRPesq.SQL.Clear; DM.QRPesq.SQL.Add(´Select cad_codigo from Cadastro´); DM.QRPesq.SQL.Add(´Where cad_tipo = 1´); DM.QRPesq.SQL.Add(´Order by cad_codigo´); if Acao = ´<´ then DM.QRExec.SQL.Add(´Desc´); DM.QRExec.Open; while not DM.QRExec.Eof do begin if (Trim(MaskEdit1.Text) = DM.QRPesq.FieldByName(´cad_codigo´).asString) then begin DM.QRPesq.Next; MaskEdit1.Text := DM.QRPesq.FieldByName(´cad_codigo´).asString; Edit1.Text := DM.QRPesq.FieldByName(´cad_nome´).asString; Break; end; DM.QRPesq.Next; end; end;
GOSTEI 0
Jarabeucp
30/01/2007
Caríssimo [b:1ffcf7349f]jarabeucp[/b:1ffcf7349f] é só pensar um pouco,
procedure ProximoAnterior(const Acao: ShortString); begin DM.QRPesq.SQL.Clear; DM.QRPesq.SQL.Add(´Select cad_codigo from Cadastro´); DM.QRPesq.SQL.Add(´Where cad_tipo = 1´); DM.QRPesq.SQL.Add(´Order by cad_codigo´); if Acao = ´<´ then DM.QRExec.SQL.Add(´Desc´); DM.QRExec.Open; while not DM.QRExec.Eof do begin if (Trim(MaskEdit1.Text) = DM.QRPesq.FieldByName(´cad_codigo´).asString) then begin DM.QRPesq.Next; MaskEdit1.Text := DM.QRPesq.FieldByName(´cad_codigo´).asString; Edit1.Text := DM.QRPesq.FieldByName(´cad_nome´).asString; Break; end; DM.QRPesq.Next; end; end;
Amigo sou iniciante em Delphi, desculpe mais não entendi muito bem o codigo, precizo de algo detalhado entende.
obrigado.
GOSTEI 0
Marcosrocha
30/01/2007
procedure TFrmCad.ProximoAnterior(const Acao: ShortString); begin // esta procedure permite que passe para o próximo ou o registro anterior // primeiro faz-se um select trazendo os clientes por ordem de código DM.QRPesq.SQL.Clear; DM.QRPesq.SQL.Add(´Select cad_codigo from Cadastro´); DM.QRPesq.SQL.Add(´Where cad_tipo = 1´); DM.QRPesq.SQL.Add(´Order by cad_codigo´); if Acao = ´<´ then // se Acao for < entao está procurando o codigo anterior DM.QRExec.SQL.Add(´Desc´); DM.QRExec.Open; while not DM.QRExec.Eof do begin if (Trim(MaskEdit1.Text) = DM.QRPesq.FieldByName(´cad_codigo´).asString) then // se o codigo da query for o igual ao meu código begin DM.QRPesq.Next; // pega o proximo registro MaskEdit1.Text := DM.QRPesq.FieldByName(´cad_codigo´).asString; Edit1.Text := DM.QRPesq.FieldByName(´cad_nome´).asString; Break; // parar o while end; DM.QRPesq.Next; // proximo registro end; end;
Para chamar a função basta:
procedure TFrmCad.BitBtn1Click(Sender: TObject); begin ProximoAnterior(´>´); // proximo registro end; procedure TFrmCad.BitBtn2Click(Sender: TObject); begin ProximoAnterior(´<´); // registro anterior end;
GOSTEI 0
Martins
30/01/2007
Jarabe, a dica do amigo [b:5eaae699e4]mcblade[/b:5eaae699e4] é muito boa, as informações q te passei por MSN sintetizam bem o q vc precisa fazer para consegui atingir seus resultados, é só uma questão de analise das linhas de código e comparação com o q vc já escreveu.
GOSTEI 0
Marcosrocha
30/01/2007
É que na verdade Martins eu não trabalho com DBEdits e todos aqueles componentes... Talvez por isso essa minha rotina esteja tão ´CRUA´... uso ela raramente em alguns casos.
A propósito... se você ajudou o Jarabe por MSN eu acharia muito interessante se postasse a resolução do problema aqui no fórum para ajudar a todos como diz sua assinatura... Caso contrário você estará entrando em contradição com você mesmo... =P :lol:
A propósito... se você ajudou o Jarabe por MSN eu acharia muito interessante se postasse a resolução do problema aqui no fórum para ajudar a todos como diz sua assinatura... Caso contrário você estará entrando em contradição com você mesmo... =P :lol:
GOSTEI 0
Jarabeucp
30/01/2007
Amigo MCBLADE eu e o Martins somos grandes amigos já passamos horas matando
cabeça com código, por isso ele me deu a solução via msn, mais já q é bom
p a galera saber a resposta ai vai o Código, é a dicas q ele me deu já adaptado por mim.
procedure TF_Parentesco.ECodigoExit(Sender: TObject);
begin // Verifica se o Código existe
if Dm_Agep.TParen.Locate(´Codigo´,ECodigo.Text,[])then
begin
// Se existir a tabela entra em Edição e me exibe os dados
Dm_Agep.TParen.Edit;
EDescricao.Text := Dm_agep.TParen.FieldByName(´Descricao´).AsString;
ECodigo.Enabled := False
end
else
ShowMessage(´Resgitro não Cadastrado´)
end;
=========================
F_Parentesco = Form
ECodigo = Campo do Form
EDescricao = Campo do Form
Dm_Agep = Data Module
TParen = Componente Table
Descricao = Campo da Tabela
Espero q a dica possa ajudar a todos.
cabeça com código, por isso ele me deu a solução via msn, mais já q é bom
p a galera saber a resposta ai vai o Código, é a dicas q ele me deu já adaptado por mim.
procedure TF_Parentesco.ECodigoExit(Sender: TObject);
begin // Verifica se o Código existe
if Dm_Agep.TParen.Locate(´Codigo´,ECodigo.Text,[])then
begin
// Se existir a tabela entra em Edição e me exibe os dados
Dm_Agep.TParen.Edit;
EDescricao.Text := Dm_agep.TParen.FieldByName(´Descricao´).AsString;
ECodigo.Enabled := False
end
else
ShowMessage(´Resgitro não Cadastrado´)
end;
=========================
F_Parentesco = Form
ECodigo = Campo do Form
EDescricao = Campo do Form
Dm_Agep = Data Module
TParen = Componente Table
Descricao = Campo da Tabela
Espero q a dica possa ajudar a todos.
GOSTEI 0