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 06-10-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Dudas con el sql

Hola, soy nuevo en estoy y estoy peleandome con el sql pero no logro sacar nada en claro.
Me gustaria que si alguien sabe de alguna pagina con ejemplos practicos y tal me lo dijera. Porque estoy intentando hacer unas busquedas, filtrar tablas, etc. y no me sale nada de nada.
Buscando por el google solo encuentro informacion del sql a nivel general, y no se como aplicarlo en delphi para que funcione.
Argggs, que jodia es la vida del que no sabe...
Un saludo y gracias.
Responder Con Cita
  #2  
Antiguo 06-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Posteado originalmente por acrophet
Argggs, que jodia es la vida del que no sabe...
Por eso pasamos todos cada día (siempre se aprende algo nuevo )

Para lanzar un SQL desde DElphi, sólo necesitas un componente que te lo permita
-BDE : TQuery
-IBX: TIBQuery
-ADO: TADOQuery
-DBX: TSQLQuery
-....

Estos componentes tienen la propiedad SQL donde se le asignará la sentencia que quieres lanzar. A parte, los tienes que configurar como un TTable fuera es decir,
-BDE: TQuery.DatabaseName := lo que sea
-IBX: TIBQuery.TDataBase := lo que sea y TIBQuery.Transaction := lo que sea
-ADO: TADOQuery.Connection := lo que sea
-DBX: TSQLQuery.SQLConnection := lo que sea

Por supuesto, lo puedes hacer en diseño

Hay 2 tipos de SQL, los que devuelven valores (sentencia SELECT) y los que no (sentencias INSERT, UPDATE, DELETE,.....). Para las primeras, los querys se llaman con un OPEN (TQuery.OPEN) y las segundas con un EXECSQL (TQuer.EXECSQL)

Las selects (que supongo que son las que te interesan en este caso) tienen la siguiente estructura

Código:
select *
from NombreTabla
Esta sería la sentencia SQL más básica. Con el * indicas que te devuelva todos los campos de la tabla. Si sólo quieres determinados campos, sólo tienes que quitar el * y poner el nombre de estos

Código:
select campo1, campo2, ...., campoN
from NombreTabla
tambien puedes filtrar el resultado de la sentencia con la cláusula WHERE

Código:
select *
from NombreTabla
where condicion1 and/or condicion2 and/or.... and/or condicionN
donde condicion es una sentencia que devuelve un valor booleano

Código:
select *
from clientes
where codico <= 1253
y, por supuesto ordenar el resultado por la columna que quieras (siempre y cuando esté en la sentencia SELECT)

Código:
select codigo, nombre, direccion, pais
from clientes
where codico <= 1253
order by nombre
Por supuesto, se puede complicar la cosa, con JOINs con varias tablas, agrupados,.....

Espero te sirva
Responder Con Cita
  #3  
Antiguo 06-10-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Ante todo gracias por la velocidad de respuesta, asi da gusto

Mas o menos las instrucciones y eso, lo voy pillando, pero con lo que me lio es a la hora de meterlas en el codigo; te voy a plantear varias dudas que me asaltan:

Si uso un Ibquery (uso interbase), ya no tengo que usar un ibtable?
Cuantos necesito? con uno basta?
A la hora de introducir las sentencias sql, donde las meto? en el command text editor del ibquery? en el codigo fuente? que diferencia hay de uno a otro?
Las tengo que meter primero en el editor y luego llamarlas desde codigo?
Dios mio!!!! estoy hecho un lio!!

Y duda practica, que es lo que quiero conseguir:

tengo una bd con varias tablas, entre ellas una con nombre y otra con apellidos. Uso un campo calculado para mostrar ambos en un dblookuplistbox.
Quiero poder hacer busquedas por apellido, y que me muestre el resultado, pero en el formato del campo calculado. Es decir apellidos+nombre, pero buscando por el apellido. Todo esto al pulsar un boton de buscar o algo similar.
Mil gracias.
Responder Con Cita
  #4  
Antiguo 06-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Posteado originalmente por acrophet
Si uso un Ibquery (uso interbase), ya no tengo que usar un ibtable?
trabajando con IBX, lo que se aconseja para la actualización de datos es el uso del TIBDataset. Una explicación en el foro de su utilización

http://www.clubdelphi.com/foros/show...&threadid=2490


Cita:
Posteado originalmente por acrophet
Cuantos necesito? con uno basta?
depende de la manera de programar que tengas. Yo, personalmente, no tengo ninguno y, cuando necesito lanzar un SQL, lo que hago es crear el objeto dinámicamente y luego destruirlo (por ejemplo para los campos calculados,....)

Cita:
Posteado originalmente por acrophet
A la hora de introducir las sentencias sql, donde las meto? en el command text editor del ibquery? en el codigo fuente? que diferencia hay de uno a otro?
Las sentencias SQL las tienes que poner en la propiedad SQL (de tipo TStrings) del TIBQuery. Da lo mismo que lo hagas por código o en diseño, el resultado es el mismo. Dependerá también del tipo de programación que hagas.

Cita:
Posteado originalmente por acrophet
tengo una bd con varias tablas, entre ellas una con nombre y otra con apellidos. Uso un campo calculado para mostrar ambos en un dblookuplistbox.
Quiero poder hacer busquedas por apellido, y que me muestre el resultado, pero en el formato del campo calculado. Es decir apellidos+nombre, pero buscando por el apellido. Todo esto al pulsar un boton de buscar o algo similar.
puedes hacer algo así

Código:
procedure LoQueSea; // por ejemplo el OnClacFields
var
  Q : TIBQuery;
begin
  Q := TIBQuery.Create(Self);
  Q.TDataBase := IBDataBase1;
  try
    Q.SQL.Add('select a.nombre || b.apellido');
    Q.SQL.Add('from nombre a left outer join apellidos b on');
    Q.SQL.Add('         (condiciones de unión de las 2 tablas)');
    Q.SQL.Add('where a.nombre like ''%' + MiNombre + '%'' ');
    Q.Open;
  finally
    FreeAndNil(Q);
  end;
end;
Más o menos sería algo así

Espero te sirva
Responder Con Cita
  #5  
Antiguo 06-10-2003
kwan kwan is offline
Miembro
 
Registrado: jul 2003
Ubicación: Ceuta(España)
Posts: 68
Poder: 21
kwan Va por buen camino
Hola cadetill, enhora buena pero + k una respuesta a sido un manual, k X cierto nunca viene mal, asin de camino aprendemos un poco chao.

Saludos
Responder Con Cita
  #6  
Antiguo 06-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Posteado originalmente por kwan
.... pero + k una respuesta a sido un manual, ....
Es que estaba inspirado y tenía ganas de escribir
Responder Con Cita
  #7  
Antiguo 07-10-2003
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Gracias por la ayuda catedill, ha sido de gran utilidad.
Sigue asi!!!
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


La franja horaria es GMT +2. Ahora son las 18:29:39.


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