PDA

Ver la Versión Completa : Ayuda con ZeoS


kabracity
14-07-2008, 11:14:40
Hola,

Estoy empezando en esto de Delphi+MySQL, y tras leer algunos posts decidí usar los componentes ZeoS para ello.
La instalación no dio problemas, pero he estado leyéndome el foro de Zeos, y el manual que he visto más claro está a medias (detalla el componente Zconnection sólo) y claro voy un poco a ciegas.
Leí algo de un enlace a una guía de un usuario del foro, pero el enlace ya no va.

Ahora mismo estoy haciendo rpuebas con el componente Zquery..
¿cuándo hago un select, sólo puedo recibir una fila como resultado?Es decir que si hago un select campo from table no recibo una tabla (al hacer la sentencia en línea de comandos SQL en línea de comandos si recibo la tabla completa).

Quizás estoy accediendo mal a los datos, hasta el momento he usado lo siguiente:


User:='"Pepito Perez"';
SQLUserQuery.SQL.Text:='SELECT password from users where user='+ User;
SQLUSerQuery.Open;
Recibo:=SQLUserQuery.Fields[0].AsString;
ShowMessage(Recibo);

(en este caso lo lógico es que me devuelva una sola línea, pero he probado otros casos y sólo consigo que me devuelva la primera).

Por cierto, si la búsqueda no me devuelve ningún resultado, cómo lo verifico?Hay alguna propiedad que me diga si devolvió alguna línea o no?¿si se diera el caso, SQLUserQuery.Fields[0].AsString tendría valor "Null"?

Y ya por último en el caso de que hubiera más de una línea, y solo me devuelva una, hay alguna propiedad en plan Zquery.Next,Zquery.locate, es decir algo que me permita moverme por las diferentes solucionas a mi búsqueda.


Sorry por el tocho pero es que ando muy perdido!gracias de antemano a todos, y si alguno conoce algún sitio donde se expliquen todas las funciones de los componentes ZeoS lo agradecería, así no tengo que estar dando la lata a cada rato :P


Edito: Lo de saber si la búsqueda devuelve algún resultado o no lo he encontrado en un post en el foro de Zeos.
Usando Zquery.RecordCount o Zquery.IsEmpty se puede saber.Lo que me extraña es que esos dos métodos no me salían como disponibles
en el editor de Delphi, cuando al escribir le das a control+espacio...yo suponía que ahí te salían todos los disponibles...

Caro
14-07-2008, 12:57:17
Hola kabracity, si quieres recorrer desde codigo tu consulta, deberías hacerloa asi:


SQLUserQuery.SQL.Text:='SELECT campo1, campo2 from users';
SQLUSerQuery.Open;

SQLUSerQuery.First;
While Not SQLUSerQuery.Eof do
begin
campo1:=SQLUserQuery.Fields[0].AsString;
//También puedes utilizar FieldByName sería asi, campo1:=SQLUserQuery.FieldByName('campo1').AsString;
campo2:=SQLUserQuery.Fields[1].AsString;
ShowMessage(campo1+' '+campo2);

SQLUSerQuery.Next;
end;


pero si muestras el resultado directo a un DBgRid, deberías poder ver todos los registros que te devuelve tu consulta.

Saluditos

kabracity
14-07-2008, 14:06:10
Muchas gracias por el ejemplo Caro, algo así es lo que andaba buscando.
¿es obligatorio el SQLUSerQuery.First?Me refiero a que por defecto se posiciona en la primera fila ¿no?

Por cierto, ¿es complicadillo el tema de ssl con indy y zeos? Que para las conexiones a la base de datos estaría mejor(con zeos), y también para la comunicación entre mis dos aplicaciones cliente/servidor (con indy), lo de enviar en texto plano queda un poco feo.


Un saludo y gracias!

Caro
14-07-2008, 14:23:52
Claro que por defecto te lo apunta al primer registro, el que pongas First antes de recorrer solo te asegura que empiece desde tu primer registro, quien sabe si con el resultado de tu DataSet hagas algunas cosas antes de recorrer por codigo tu DataSet y no se este apuntando al primer registro, es solo para asegurarnos.

Sobre tu pregunta de ssl con indy y zeos, no sabría decirte, porque he manejado muy poco las indy, pero seguro que viene alguien que sabe y te explica.

Saluditos