Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 22-09-2011
luisraad luisraad is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 54
Poder: 13
luisraad Va por buen camino
Gracias Caral y Oscar...

Bueno oscar me interesaria que colocaras de la manera en que tu lo harias y la explicaras mejor... es nueva para mi pero me parece mas detallada y mas facil de aplicar... explicame eso y despues yo coloco ejemplos con condiciones..

Gracias
Responder Con Cita
  #22  
Antiguo 22-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por luisraad Ver Mensaje
se que hay una forma mas detallada de hacer este tipo de consulta la pregunta es ¿¿¿esta bien asi??? ¬¬ no creoo!!!
Debe probar ese sql en el programa que estés usando "manager sql".
Así vas probando y depurando, cambiando, etc. hasta dar con lo que exactamente necesitas.
Responder Con Cita
  #23  
Antiguo 22-09-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 join es una condicion, se usa de muchas maneras, pero si no se sabe aveces no trae los datos que se quiere.
La consulta que as puesto es muy sencilla, no se necesita un join con solo un where funciona:
Código SQL [-]
'select cliente.codcliente, cliente.nombrecliente, cliente.direccion,cliente,telefono, ventas.fechaventas,ventas.totalventa from cliente,ventas
Where cliente.codcliente = ventas.codclientes';
Saludos
__________________
Siempre Novato
Responder Con Cita
  #24  
Antiguo 22-09-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por luisraad Ver Mensaje
Gracias Caral y Oscar...

Bueno oscar me interesaria que colocaras de la manera en que tu lo harias y la explicaras mejor... es nueva para mi pero me parece mas detallada y mas facil de aplicar... explicame eso y despues yo coloco ejemplos con condiciones..

Gracias
en el post anterior te explicaba como hacer los joins, para esto en cada tabla debe haber un campo en comun, por ejemplo imageinate 2 tablas de facturas de ventas las clasicas cabecera y detalle
ambas tablas tendrian en comun el tipo de documento y el numero de documento


entonces seria mas o menos asi

Código Delphi [-]
 
Select CAB.Tipo, Cab.Doc, Cab.FechaDOC, Det.Producto, Det.Cantidad, Det.Total 
From Cabecera Cab
Left Join Detalle Det on Cab.Tipo = Det.Tipo and Cab.Doc = Det.Doc
Where Cab.FechaDoc = '15/01/2010'

en este ejemplo dice... sacame todos los documentos, con el detalle de ops productos su cantidad y su precio que sean del dia 15/01/2010

se entiende?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #25  
Antiguo 22-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Aquí tienes un estupendo tutorial SQL, a la izquierda tienes las palabras y a la derecha sale explicando para lo que sirve y ejemplos variados.
Responder Con Cita
  #26  
Antiguo 25-09-2011
luisraad luisraad is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 54
Poder: 13
luisraad Va por buen camino
Hola como estan??

bueno siguiendo el hilo de la consulta ahora veamos si de esta manera esta bien planteada la consulta con condiciones:

vamos a suponer que en el campo de direccion de la tabla clientes en la BD tiene unos registros en el campo direccion de las personas que viven en tolu y otros en puebla, ahora quiero que me liste en un DBgrid solo los clientes pertenecientes a tolu ustedes me guian y me dicen si esta malo asi:

Código Delphi [-]
 
var
c:string
 
begin
c:'select clientes.nombres, clientes.direccion from clientes where clientes.direccion='quotedstr('tolu');
adoquery1.sql.clear;
adoquery1.sql.add(c);
adoquery1.open:=true;
end;
end.

me imagino que esto esta bien, espero sus respectivas opniones y correcciones.
Responder Con Cita
  #27  
Antiguo 25-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Yo lo haria asi:
Código Delphi [-]
begin
adoquery1.sql.Text:= 'select clientes.nombres, clientes.direccion from clientes where clientes.direccion = :A';
adoquery1.Parameters[0].Value:= 'tolu';
adoquery1.open:= true;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #28  
Antiguo 25-09-2011
Taburiente Taburiente is offline
Miembro
 
Registrado: may 2006
Posts: 26
Poder: 0
Taburiente Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Aquí tienes un estupendo tutorial SQL, a la izquierda tienes las palabras y a la derecha sale explicando para lo que sirve y ejemplos variados.

Gracias por el link,esta bastante bien.

Saludos
Responder Con Cita
  #29  
Antiguo 25-09-2011
luisraad luisraad is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 54
Poder: 13
luisraad Va por buen camino
Hola

hola Como va todo

Caral con respecto a tu forma de consultar quiero saber o mejor dicho quiero aprender porque no usas una variable 'c' (consulta) en las consultas que realizas tu usas esto

ADOquery.SQL.text:=(consulta);

y te sale bien...
la otra es como trabajar con parametros para consultas de ese tipo, o mejor dicho como se define un parametro para hacerconsultas

saludos
Responder Con Cita
  #30  
Antiguo 25-09-2011
luisraad luisraad is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 54
Poder: 13
luisraad Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Yo lo haria asi:
Código Delphi [-]begin adoquery1.sql.Text:= 'select clientes.nombres, clientes.direccion from clientes where clientes.direccion = :A'; adoquery1.Parameters[0].Value:= 'tolu'; adoquery1.open:= true; end;

Saludos
no entiendo lo de :A osea los parametros
Responder Con Cita
  #31  
Antiguo 25-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No uso una variable por que es repetir código, me da pereza.
Uso Text por que me parece mucho mejor que add.
con add hay que limpiar la consulta siempre con clear antes, con text NO.
Para colocar un parametro simplemente se ponen dos puntos antes del nombre del parametro, asi: :Nombredelparametro
Saludos
__________________
Siempre Novato
Responder Con Cita
  #32  
Antiguo 25-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
A es un nombre, como podria ser :Caral, o :Pepe, o el que se te antoje, es un nombre, simplemente.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #33  
Antiguo 25-09-2011
luisraad luisraad is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 54
Poder: 13
luisraad Va por buen camino
Bueno veamos otro tipo de condicion.

esta vez suponemos que en la tabla CLIENTES tenemos registros en el campo NOMBRE. pero resulta que ahora quiero listar los nombres especificando una letra es decir, traigame todos los nombres que empiezen por P, ya he visto lo que es el codigo like aca en clases pero esta explicito de una manera mas o menos asi, en la forma donde estoy diseñando la apicacion se debe insertar un edit y en su propiedad text ponerle la comilla simple ' (ya oscar me explico como hacerlo con quotedstr), y aparte debo insertar otro edit con el simbolo de % y otra comilla simple osea en su popiedad text %' el codigo me queda de la siguiente manera.

((basandome en lo aprendido en clases))
supongamos que el edit1.text es el de la comilla simple, el edit2.text en donde se colocan las letras y el edit3.text el que contiene la comilla y el %

Código Delphi [-]
var
c:string;
begin
c:='select clientes.nombre from clientes where clientes.nombre like'+edit1+edit2.text+edit3.text;

end;
end.
según comprendo en el edit2.text al poner una letra en especifico este traera los nombre que empiezen por la letra que coloco en ese espacio, aun sabiendo de que es complicado de esta manera deseo saber como podria solucionar lo del codigo LIKE y cuando tenga esa duda clara aplico tu forma de consultar caral haber si apredi

saludos
Responder Con Cita
  #34  
Antiguo 26-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No entiendo como un profesor le dice a sus alumnos que programen así, no lo entiendo.
Esto no creo que sea la manera de iniciarse en delphi, no lo creo.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #35  
Antiguo 26-09-2011
luisraad luisraad is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 54
Poder: 13
luisraad Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
No entiendo como un profesor le dice a sus alumnos que programen así, no lo entiendo.
Esto no creo que sea la manera de iniciarse en delphi, no lo creo.
Saludos

bueno acabo de ver un foro con lo del tema LIKE y lo que vi fue esto:

Código Delphi [-]
'select clientes.nombre from clientes Where Nombres like'+ quotedstr('%'+edit2.text+'%');

lo hize bien???
Responder Con Cita
  #36  
Antiguo 26-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Depende.
Algunas BD lo aceptan otras no.
En access es algo diferente:
Código SQL [-]
'select clientes.nombre from clientes Where Nombres Like '''+ Edit2.Text + '*'''
Como ves no uso quotedstr para nada.
Osea, si quieres lo usas, si no, no.
Hay muchas maneras de hacer las cosas, todo depende del novato que te las explique.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #37  
Antiguo 26-09-2011
luisraad luisraad is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 54
Poder: 13
luisraad Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
Depende.
Algunas BD lo aceptan otras no.
En access es algo diferente:
Código SQL [-]'select clientes.nombre from clientes Where Nombres Like '''+ Edit2.Text + '*'''

Como ves no uso quotedstr para nada.
Osea, si quieres lo usas, si no, no.
Hay muchas maneras de hacer las cosas, todo depende del novato que te las explique.
Saludos
ok gracias por el aporte

entonces aplicando este tipo de consultas con parametros como quedaria ??
gracias de antemano
Responder Con Cita
  #38  
Antiguo 26-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Me imagino que algo asi:
Código Delphi [-]
begin
adoquery1.sql.Text:= 'select clientes.nombre from clientes Where Nombres Like :luisraad';
adoquery1.Parameters[0].Value:= ''+ Edit2.Text + '*''';
adoquery1.open:= true;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #39  
Antiguo 26-09-2011
luisraad luisraad is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 54
Poder: 13
luisraad Va por buen camino
hola

vamos con otra consulta mas compleja
dada la situacion tengo una BD llamada biblioteca en dicha BD hay 3 tablas

tabla1=suscriptor
tabla2=libro
tabla3=prestamo

en la tabla1 hay los siguientes campos:
cod nombre direccion

en la tabla2
codlib nombrelib autor descripcion

en la tabla3
cod nombre nombrelib cantprest

dada la sircustancia la aplicacion caturará los datos del codigo del suscriptor, el codigo del libro o el nombre del libro... estos datos seran guardados en la tabla prestamo supongamos que ya hay registros en las tablas 1 y 2


condicion: cuando el suscrptor haya pedido tres libros el programa arroje un mensaje que diga no puede tener mas prestamos...

tengo algo hecho pero no se entiende tengo unos edit donde capturo esa informacion en el edit1 cpturo el codigo, en el edit2 capturo el nombre y en el edit3 el codigo del libro... ((no viene al caso que lo diga pero es para una guia..))

saludos
Responder Con Cita
  #40  
Antiguo 26-09-2011
luisraad luisraad is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 54
Poder: 13
luisraad Va por buen camino
aqui hay una muestra pero esta muy enrredada lo que uqiero hacer es mas sensillo

Código Delphi [-]
  begin
if(suiComboBox1.Text='') or (suiComboBox1.Text='Seleccione Número de Identificación')then
   begin
    showmessage('DEBE DIGITAR EL NUMERO DE IDENTIFICACION DEL USUARIO');
    suiComboBox1.SetFocus;
   end
  else
   begin
    if(suiedit3.Text='')then
     begin
      showmessage('DEBE DIGITAR EL CODIGO DEL LIBRO');
      suiedit5.SetFocus;
     end
    else
     begin
            consulta:=suiedit1.text;


                    table1.TableName:='prestamo';
                    table1.open;
                    if not table1.Locate('idprestamo',consulta, []) then
                     begin
                      table1.insert;
                      if(suiComboBox1.Text<>'')then
                       begin
                        table1.fieldbyname('cod_libro').Asstring:=(suiedit3.text);
                          table1.fieldbyname('documento_usuario').Asstring:=(suicombobox1.text);
                           table1.fieldbyname('idprestamo').Asstring:=(suiedit1.text);
                        table1.fieldbyname('fecha').AsDateTime:=(datetimepicker1.Date);
                        Table1.FieldByName('estado').AsString:=(ESTADO1.text);



                      table1.Post;
                      table1.Close;



                        //abriendo tabla 2///
                         table2.open;
                         table2.insert;
                          if (ESTADO1.Text='ABIERTO')then
                          begin
                           table2.fieldbyname('cod_libro').Asstring:=(suiedit3.text);
                           table2.fieldbyname('idprestamo').Asstring:=(suiedit1.text);

                                                                                                     begin

consulta:='select prestamo.idprestamo, from prestamo where idprestamo >=4';
if (consulta>='4') then
begin
  ShowMessage('No Puede Ingresar Mas Prestamos Para Este Usuario');
  end
  else

                      table2.Post;
                      table2.Close;
                      
                        





                       Application.MessageBox('TODOS LOS DATOS HAN SIDO ALMACENADOS SATISFACTORIAMENTE','SIBIBLIO',MB_OK);




                      suiedit1.Clear;
                      suiedit3.Clear;
                      suiComboBox1.Text:='Seleccione Número de Identificación';
                      suiedit5.Clear;
                      suiedit5.SetFocus;
                      end;
                      end;

                    end;
                 end;
               end;
             end;
              end;

veo que mezclan 2 tablas etc... ((no es tarea, es solo que quiero aprender una forma diferente y mas sensilla)).

saludos
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
multi base de datos access en delphi leyends Conexión con bases de datos 4 10-02-2011 19:23:29
¿cómo conectar base de datos access con un ado en delphi pasos? Master23 Conexión con bases de datos 16 24-10-2010 03:39:22
Importar tablas Dbf a base de datos Access desde delphi yusnerqui Tablas planas 6 25-08-2010 23:10:02
Compactar Base d Datos Access desde Delphi. Drakyto Conexión con bases de datos 6 22-02-2010 22:23:29
Compactar Base d Datos Access desde Delphi. Drakyto Conexión con bases de datos 3 19-02-2008 02:57:07


La franja horaria es GMT +2. Ahora son las 17:39:44.


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