PDA

Ver la Versión Completa : recuperar datos de una consulta MySql


jasrgeo
27-02-2008, 01:15:25
Hola amigos del foro antes que nada buen dia, soy nuevo en esto de programar en delphi, asi he recurrido a los expertos haber si me pueden orientar un poco.

ya he logrado insertar, borrar y actualizar un registro, pero me ha surgido un granduda en un programita que estoy realizando como practica. por cierto es un agenda.

Este es mi codigo de insersion de registros hasta aqui todo bien :)

procedure TForm3.btnguardarClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Add('INSERT INTO `agenda`.`contactos`(`id_contacto`,`nom_contacto`,`apellidopat_contacto`,`apellidomat_contacto`,`eda d_contacto`,`tel_contacto`,`email_contacto`)VALUES (NULL , '''+cnombre.text+''','''+capaterno.Text+''','''+camaterno.Text+''','''+cedad.Text+''','''+ctelefono. Text+''','''+cemail.Text+''')');
Query1.ExecSQL;
//Borrar las cajas de texto
cnombre.Clear;
capaterno.Clear;
camaterno.Clear;
cedad.Clear;
ctelefono.Clear;
cemail.Clear;
end;


El problema es que se me ocurrio hacer un modulillo de busqueda de contactos, tengo una idea de como hacer la consulta de busqueda que es esta:

procedure TForm3.btnbuscarClick(Sender: TObject);
begin

Query1.Close;
Query1.SQL.Add('SELECT * FROM contactos WHERE `nom_contacto` LIKE '''+cbuscar.Text+'''');
Query1.ExecSQL;

//Lo que no tengo ni idea es como recuperar el registro y mostrarlos en los campos.
los campos son:
cnombre.text
capaterno.text
camaterno.text
ctelefono.text
cemail.text

Query1.Open;
end;

Espero y me este dando a entender lo que quiero es recuperar los datos de la consulta y mostrarlos en los tedit.

egostar
27-02-2008, 01:24:26
Hola bienvenido al Club,


procedure TForm3.btnbuscarClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Add('SELECT * FROM contactos WHERE nom_contacto LIKE '+QuotedStr(cbuscar.Text+'%'));
Query1.Open;
cnombre.text := Query1.Fields[0].AsString;
capaterno.text := Query1.Fields[1].AsString;
camaterno.text := Query1.Fields[2].AsString;
ctelefono.text := Query1.Fields[3].AsString;
cemail.text := Query1.Fields[4].AsString;
end;


Si los campos están en ese órden. Para un SELECT no necesitas ExecSQL, es Open.

Usa las etiquetas para el código, ves la diferencia?

Salud OS

Edito: Aunque no se si MySQL soporte el LIKE de esa forma, seguro alguien nos dará la respuesta correcta.

jasrgeo
27-02-2008, 01:42:30
Gracias por tu ayuda mi estimado egostar, funciono de maravilla el codigo
espero y muy pronto estar solucionando las dudas de los usuario al igual que tu.

Salu2.

egostar
27-02-2008, 01:44:59
Gracias por tu ayuda mi estimado egostar, funciono de maravilla el codigo
espero y muy pronto estar solucionando las dudas de los usuario al igual que tu.

Salu2.

Hola, pues que bien, solo que viendo de nuevo mi post hace falta que limpies el SQL del Query ya que si vuelves a ejecutar el proceso te dará un error.

Aquí el código completo


procedure TForm3.btnbuscarClick(Sender: TObject);
begin
Query1.Close;
Query1.SQL.Clear; //Se limpia para una nueva consulta.
Query1.SQL.Add('SELECT * FROM contactos WHERE nom_contacto LIKE '+QuotedStr(cbuscar.Text+'%'));
Query1.Open;
cnombre.text := Query1.Fields[0].AsString;
capaterno.text := Query1.Fields[1].AsString;
camaterno.text := Query1.Fields[2].AsString;
ctelefono.text := Query1.Fields[3].AsString;
cemail.text := Query1.Fields[4].AsString;
end;


Salud OS