Ir para conteúdo
Fórum Script Brasil
  • 0

Comparar informações de uma tabela e colocar em DBEdit


anabon

Pergunta

Olá pessoa boa tarde....

Mais uma vez peço a ajuda de vocês , como já dissi em outro post, eu programava em vb, mas estou tentando passar meus sistema para delphi... Enfim... é o seguinte tenho um form com 6DBEdit, 1 ADOQuery onde no select dele eu coloquei assim:

Select telefone, nome, endereço, complemento, bairro, cidade From cliente
oque quero fazer é filtrar o telefone se este telefone estiver no cadastro então os dados automaticamente é preenchido nos outro DBEdit, caso não exista ele retorna uma label "Cliente não cadastro pressione a tecla f1 do seu teclado para o cadastro". Tenho algo parecido em vb e uso o codigo:
Set RS = New ADODB.Recordset
Set con = New ADODB.Connection
con.Open (cnSQL)
On Error Resume Next

RS.Open "Select * from cliente where telefone = '" & Me.txtfone & "'", con, adOpenKeyset, adLockOptimistic
If txtfone.Text <> RS!telefone Then
labelinfo.Caption = "ATENÇÃO CLIENTE NÃO CADASTRADO, PRESSIONE A TECLA F1 PARA CADASTRO!!!", 
txtnome.Text = ""
txtendereço.Text = ""
txtbairro.Text = ""
txtcidade.Text = ""
cmdincluir.Enabled = True
cmdpedido.Enabled = False
txtnome.SetFocus


Else
RS.Close
RS.Open "Select * from cliente where telefone = '" & Me.txtfone & "'", con, adOpenKeyset, adLockOptimistic
txtnome.Text = RS!nome
txtendereço.Text = RS!endereço
txtbairro.Text = RS!bairro
txtcidade.Text = RS!cidade
cmdincluir.Enabled = False
cmdpedido.Enabled = True
cmdalterar.Enabled = True
End If
RS.Close

ENFIM... a pegunta é... como faço isso em delphi?

desde já agradeço que puder me ajudar.....

abraço!!!!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

- Voce precisará adicionar a cláusula where na sua query inicial;

- no form, o campo onde você digita o telefone para a consulta, não poderá ser um DBEdit - terá que ser um componente não data-aware (aqueles sem o DB...), ou seja, um TEdit ou TMaskEdit,...;

- quando o número for informado, a ação ocorrerá de algum modo que você tenha em mente: quando todos os dígitos forem preenchidos, ou pressionando um botão, ou avançando ao outro campo (TAB),...

- esta ação será inicializar sua consulta com o parâmetro informado. Caso não saiba, você define parametros na query ustilizando o ":". Dê uma pesquisada no forum que tem exemplos;

- inicializado o parâmetro, você abre a consulta/query;

- se ela não retornar qualquer registro, então voce mostra a mensagem. Eu sugiro que voce use uma mensagem do tipo "pergunta" (MessageDlg) ao invés de informar ao usuário para teclar F1 - vai simplificar as coisas;

. - Se o usuário responder Sim, você coloca a tabela em mode inserção (Insert ou Append) e inicializa o campo de busca (telefone) com aquele informado no edit inicial; Os demais são data-aware (DB...) e estão vinculados ao dataset - serã automaticamente gravados no post.

- se ela retornar o registro, automaticamente todos os outros DB...'s serão preenchidos.

Lembrando que quando o DataSource tem a propriedade AutoEdit = true, ao digitar qualquer coisa nestes DB... o dataset será colocado em modo de edição.

É mais ou menos isto

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Oi amigo .... obrigada pela dica ... mas o problema é que to passando o parametro assim:

select * from cliente
where telefone =:Ptelefone
Depois to tentando busca o resultado no evento OnExit do Tedit
procedure TFormDisk_Entregas.txtfoneExit(Sender: TObject);
begin
Query_Pedido.Close;
Query_Pedido.ParamByName('Ptelefone').Value :=(txtfone.text);
Query_Pedido.Open;
end;

end.
Só que da erro na linha:
Query_Pedido.ParamByName('Ptelefone').Value :=(txtfone.text);

[Error] UnitDisk_Entregas.pas(133): Undeclared identifier: 'ParamByName'

Desde já agradeço quem puder me ajudar......

Link para o comentário
Compartilhar em outros sites

  • 0

anabon, voce deve estar usando componentes ADO no Delphi também, não é?! (Nunca deixe de informar)

No caso dos componentes ADO, o "caminho" é um pouquinho mais longo:

Query_Pedido.Parameters.ParamByName('Ptelefone').AsString := txtfone.text;

observações:

- Voce não precisa daqueles parênteses em torno do txtfone.text;

- sempre que você passar um texto como parâmetro, é boa "conduta" usar o método AsString para passar o parâmetro para a consulta porque eventualmente o parâmetro é de um tipo diferente (inteiro, float,...) e isto lhe evitará dor de cabeças, já que o próprio driver do componente irá se preocupar em fazer qualquer conversão necessária.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...