Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-10-2011
chueco chueco is offline
Registrado
NULL
 
Registrado: sep 2011
Posts: 6
Poder: 0
chueco Va por buen camino
Post Componentes ZQuery y ZTable [ZeosLib]

Buenas soy nuevo aqui, y mas nuevo utilizando Zeos. empeze a usar Zeos en Delphi XE, y queria saber como utilizar muchas tablas en un ZTable y muchas consultas en un ZQuery, sin tener que agregar un compoenente por cada cosa.-

por ejemplo este procedimiento lee de la tabla medicos y coloca la consulta en un listbox, en este caso mi Zquery tiene cargada la consulta 'Select nombre, apellido from medico'

Cita:
ZQuery1.Open;
While not zQuery1.eof do
begin
nombre := zQuery1.FieldByName('nombre').AsString+ ' '+zQuery1.FieldByName('apellido').AsString;
bsSkinListBox1.Items.Add(nombre);
zQuery1.Next;
end;
luego de este procedimiento quiero realizar otra consulta con otra tabla en los mismos componentes ya utilizados. Es posible eso,-

desde ya muchas gracias, saludos
Responder Con Cita
  #2  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El zquery tiene la propiedad sql, esto no quiere decir que se tenga que usar solamente en la pantalla que sale, se puede usar por codigo.
El ztable tiene la propiedad tablename ahi es donde se coloca la tabla que se necesite usar.
OSEA, contestando a la pregunta: SI se pueden usar los mismos componentes para diferentes consultas.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 07-10-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cierras el dataset, le asignas el sql que quieras y lo vuelves a abrir/ejecutar.
Responder Con Cita
  #4  
Antiguo 07-10-2011
Avatar de Sapt_86
Sapt_86 Sapt_86 is offline
Registrado
NULL
 
Registrado: oct 2011
Ubicación: Bahia Blanca, Argentina
Posts: 8
Poder: 0
Sapt_86 Va por buen camino
Post

Hola Caral. Mira te mando un ejemplo de como lo utilizo en forma generica un zquery.


Código Delphi [-]
Function InsertarBD(Tabla : String; Campos : array of string):String;
Var         Sentencia : string;         
i : integer;       
Begin
Sentencia := 'INSERT INTO '+ Tabla +' VALUES(' + #39;
For i := 0 to length(campos) -1 do
Begin
If i = 0 then
Sentencia := Sentencia + Campos[i]
Else
Sentencia := Sentencia + #39 + ', ' + #39 + Campos[i];
End;
Sentencia := Sentencia + #39 + ')';
With LibreriaOperacional do
Begin
Consulta.Close;
Consulta.SQL.Text := sentencia;
Consulta.ExecSQL;
End;
result:=sentencia;
End;


No se, si es la mejor forma. Ademas esta funcion es solo para insertar valores de un vector, llamado campos. Con algunas modificaciones seguramente podras

Es funcion porque he utilizado los resultados string en este caso para guardar la consulta.

Espero que te sirva como guia. Saludos.

Última edición por Sapt_86 fecha: 07-10-2011 a las 19:24:18.
Responder Con Cita
  #5  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Vamos a la pregunta bien planteada:
Se pueden usar los mismos componentes ?, como ?:
Supongamos que tenemos dos o varias TList y queremos usar el mismo zQuery para llenar todos:
Código Delphi [-]
ZQuery1.Sql.Text:= 'Select nombre, apellido from medico';
ZQuery1.Open;
 While not zQuery1.eof do
 begin
 bsSkinListBox1.Items.Add(nombre);  //primer listBox
 zQuery1.Next;
 end;
ZQuery1.Close;  // cierro
ZQuery1.Sql.Text:= 'Select Direccion, Telefono from medico';
ZQuery1.Open;
 While not zQuery1.eof do
 begin
 bsSkinListBox2.Items.Add(nombre); // segundo listBox
 zQuery1.Next;
 end;
////ETC;;;
En el caso de un ZTable, simplemente se cambie el nombre de la tabla en la propiedad TableName:
Código Delphi [-]
ZTable1.TableName:= 'Nada';
ZTable1.Open;
// hago lo que necesito hacer y:
ZTable1.Close;
ZTable1.TableName:= 'Otra';
ZTable1.Open;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 07-10-2011
chueco chueco is offline
Registrado
NULL
 
Registrado: sep 2011
Posts: 6
Poder: 0
chueco Va por buen camino
gracias por sus respuestas, lo que intente fue esto y dio resultado;

Código:
ZTable1.TableName:='dsw.medico';
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('Select nombre, apellido  from medico');
ZQuery1.Open;
pero como podria yo tener precargada consultas que hagan referencia a diferentes tablas y poder recorrerlas a traves de la propiedad SQL. sin tener que andar borrando y cargando cada ves que quiera una nueva consulta.-
Cual es el metodo para iterar sobre SQL o algo por el estilo,-

Muchas gracias por sus respuestas, saludos...
Responder Con Cita
  #7  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Gracias, contesta MI pregunta a la perfección.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Digamos que quieres tener algunas consultas preestablecidas y que quieres tomarlas cuando quieras.
Hagamos un ejercicio (JAMAS lo he hecho, solo se me ocurre):

Creamos un procedimiento que nos cargue los string de sql:

Código Delphi [-]
Procedure TForm1.SQLDatos;
var sql1, sql2, sql3 : String;
Begin
  sql1:= 'Select * From MiTabla1';
  sql2:= 'Select micampo1, micampo2 from mitabla2';
  sql3:= 'Select Loquesea From mi tabla3';
end;

Bien ahora lo uso:

Código Delphi [-]
ZQuery1.Sql.Text:= SQLDatos(sql1);
ZQuery1.Open;
 While not zQuery1.eof do
 begin
 bsSkinListBox1.Items.Add(nombre);  //primer listBox
 zQuery1.Next;
 end;
ZQuery1.Close;  // cierro
ZQuery1.Sql.Text:= SQLDatos(sql2);
ZQuery1.Open;
 While not zQuery1.eof do
 begin
 bsSkinListBox2.Items.Add(nombre); // segundo listBox
 zQuery1.Next;
 end;
Es posible que con una funcion camine mejor ya que estara buscando la variable, me imagino que por ahi va la cosa.
Solo opino, desde lo mas profundo de mi desconocimiento.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 07-10-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Bien, despues de probar la chapuza que hice lo he probado y esta es la correcta forma de hacerlo:
Se sigue con casi lo mismo, pero ahora pondremos las variables fuera del procedimiento como globales:
Código Delphi [-]
var
  Form1: TForm1;
  sql1, sql2, sql3 : String;

Ahora el procedimiento SIN las variables:
Código Delphi [-]
Procedure TForm1.SQLDatos;
Begin
  sql1:= 'Select * From Alumnos';
  sql2:= 'Select Nombre, Apellido from Alumnos';
  sql3:= 'Select telefono From mi Alumnos';
end;

Ahora lo llamamos:
Código Delphi [-]
SQLDatos; //llamamos al procedimiento
ZQuery1.Sql.Text:= sql1;  //primera consulta sql
ZQuery1.Open;
 While not zQuery1.eof do
 begin
 bsSkinListBox1.Items.Add(ZQuery1.Fields[0].Text + ZQuery1.Fields[1].Text + etc..);  //primer listBox
 zQuery1.Next;
 end;
ZQuery1.Close;  // cierro
ZQuery1.Sql.Text:= sql2; //segunda consulta sql
ZQuery1.Open;
 While not zQuery1.eof do
 begin
 bsSkinListBox2.Items.Add(ZQuery1.Fields[0].Text + ZQuery1.Fields[1].Text); // segundo listBox
 zQuery1.Next;
 end;
Bien, ahora si estoy seguro de que funciona, ya lo probé.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 07-10-2011 a las 20:23:28.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizar componentes ZeosLib en mi proyecto Cañones Conexión con bases de datos 4 07-07-2010 16:44:49
ZEOS Lib ZTable mightydragonlor Lazarus, FreePascal, Kylix, etc. 1 21-04-2010 23:18:23
Duda sobre ZQuery ( Zeoslib ) BlackDaemon MySQL 2 02-02-2007 00:45:08
problemas con los componentes ZEOSLIB JoanKa Conexión con bases de datos 8 17-01-2005 17:45:35
ZTable vs ZQuery quade Conexión con bases de datos 1 01-06-2004 18:18:38


La franja horaria es GMT +2. Ahora son las 14:19:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi