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
  #21  
Antiguo 26-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por silviodp
para Mueble.CodMueble y Mueble.Descripcion funciona bien es decir me lista ordenado por esos campos y según la seleccion que yo haya hecho, pero para Rubro.Nombre y Seccion.Nombre, cuando quiero ordenar por uno de esos campos, me devuelve el reporte en blanco es decir sin ningún registro, pero no me da ningún error. Solamente que no hace lo que debiera.
Los campos que yo selecciono en mi consulta son esos cuatro.
Probaste lo de mi mensaje anterior?
Responder Con Cita
  #22  
Antiguo 26-04-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
Pregunta sobre Query

El código que uso es tal cual así:
Código:
procedure TForm18.ListarClick(Sender: TObject);
Var
 fmSQL:String;
begin
 If Lista.Text='Código' Then
  begin
   ModeloDatos.Consulta1.Close;
   fmSQL:=Modelodatos.Consulta1.SQL.Text;
   Modelodatos.Consulta1.SQL.Text:=Format(fmSQL,['CodMueble','CodMueble']);
   ModeloDatos.Consulta1.ParamByName('DESDE').AsInteger:=StrToInt(Desde.Text);
   ModeloDatos.Consulta1.ParamByName('HASTA').AsInteger:=StrToInt(Hasta.Text);
   ModeloDatos.Consulta1.Open;
  end
 Else
   If Lista.Text='Descripción' Then
   begin
     ModeloDatos.Consulta1.Close;
     fmSQL:=Modelodatos.Consulta1.SQL.Text;
     Modelodatos.Consulta1.SQL.Text:=Format(fmSQL,['Descripcion','Descripcion']);
     ModeloDatos.Consulta1.ParamByName('DESDE').AsString:=Desde1.Text;
     ModeloDatos.Consulta1.ParamByName('HASTA').AsString:=Hasta1.Text;
     ModeloDatos.Consulta1.Open;
   end
 Else
   If Lista.Text='Rubro' Then  
   begin
     ModeloDatos.Consulta1.Close;
     fmSQL:=Modelodatos.Consulta1.SQL.Text;
     Modelodatos.Consulta1.SQL.Text:=Format(fmSQL,['Nombre','Nombre']);
     ModeloDatos.Consulta1.ParamByName('DESDE').AsString:=Desde1.Text;
     ModeloDatos.Consulta1.ParamByName('HASTA').AsString:=Hasta1.Text;
     ModeloDatos.Consulta1.Open;
   end;
y el de la Consulta SQL es:
Código:
SELECT Mueble.Codmueble,Mueble.Descripcion,Rubro.Nombre,Seccion.Nombre
FROM Mueble INNER JOIN Rubro ON Mueble.Rubro=Rubro.CodRub
                        INNER JOIN Seccion ON Mueble.Seccion=Seccion.Codigo
WHERE %s BETWEEN :DESDE AND :HASTA
ORDER BY %s;
En la parte de 'Rubro', del código es donde no funciona bien, no probé con tu respuesta anterior ya que no entiendo bien lo del 'punto de ruptura'.
Gracias.

Silvio.-
Responder Con Cita
  #23  
Antiguo 26-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
sí, vale, pero.... no me dices si has probado lo de debugear, mirar qué sentencia SQL te está generando, probar esa sentencia SQL fuera de Delphi (y de tu app), mirar que parámetros le estás pasando (quizás los estén enviando en orden inverso estilo ZZZZ y AAAAA en ligar de AAAA y ZZZZZ y por eso no te devuelve nada),............
Responder Con Cita
  #24  
Antiguo 26-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por silviodp
ya que no entiendo bien lo del 'punto de ruptura'.
Cita:
Empezado por cadetill
no me dices si has probado lo de debugear
Punto de ruptura = Breakpoint
Debugear = (spanglish(debug)) acción destinada a depurar una aplicación, normalmente se realiza poniendo un breakpoint o punto de ruptura que rompe la ejecución del programa, permitiendo evaluar y cambiar el valor de las variables y continuar la ejecución paso a paso del mismo.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #25  
Antiguo 26-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por jachguate
Cita:
Empezado por silviodp
ya que no entiendo bien lo del 'punto de ruptura'.
ups!!! no lo había leido

Gracias por la aclaración Juan Antonio
Responder Con Cita
  #26  
Antiguo 27-04-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
Pregunta sobre Query

Cadetill:
probé desde el Explorador de bases de datos de la Consulta lo siguiente:
Código:
SELECT Mueble.Codmueble,Mueble.Descripcion,Rubro.Nombre,Seccion.Nombre
FROM Mueble INNER JOIN Rubro ON Mueble.Rubro=Rubro.CodRub
                        INNER JOIN Seccion ON Mueble.Seccion=Seccion.Codigo
WHERE Rubro BETWEEN 1 AND 2
ORDER BY Rubro.Nombre;
y me arroja el resultado que quiero, lo que hice fué sustituir los parámetros por valores (Rubro, 1,2,Rubro.Nombre), pero si a estos valores los sustituyo por los parámetros, es de decir:
Consulta:
Código:
SELECT Mueble.Codmueble,Mueble.Descripcion,Rubro.Nombre,Seccion.Nombre
FROM Mueble INNER JOIN Rubro ON Mueble.Rubro=Rubro.CodRub
                        INNER JOIN Seccion ON Mueble.Seccion=Seccion.Codigo
WHERE %s BETWEEN :DESDE AND :HASTA
ORDER BY %s;
Y ejecuto:
Código:
procedure TForm18.ListarClick(Sender: TObject);
Var
 fmSQL:String;
Begin
 If Lista.Text='Rubro' Then
   begin
     ModeloDatos.Consulta1.Close;
     fmSQL:=Modelodatos.Consulta1.SQL.Text;
  3)   Modelodatos.Consulta1.SQL.Text:=Format(fmSQL,['Nombre','Rubro.Nombre']);
     ModeloDatos.Consulta1.ParamByName('DESDE').AsString:=Desde1.Text;
     ModeloDatos.Consulta1.ParamByName('HASTA').AsString:=Hasta1.Text;
     ModeloDatos.Consulta1.Open;
   end;
no me arroja ningún resultado es decir 0 (cero) registros.
y sustituyendo en la línea 3 del código, 'Nombre' por 'Rubro' me da:

Error: 'Type mismatch in expression'.
Me parece que el problema puede estar en los parámetros, pero ya probé de muchas formas pero no lo puedo resolver.
Gracias.

Silvio.-
Responder Con Cita
  #27  
Antiguo 27-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Por pates

Qué desde fuera de la app el SQL te funcione y desde la app..... me parece muy, pero que muy raro.
Vamos a intentar ha hacer una prueba para ver exactamente que sentencia te esta ejecutando, ok?

Intenta poner lo siguiente
Código:
with ModeloDatos.Consulta1 do
begin
  SQL.Clear;
  SQL.Add('SELECT');
  SQL.Add('Mueble.Codmueble, Mueble.Descripcion, Rubro.Nombre, Seccion.Nombre');
  SQL.Add('FROM Mueble INNER JOIN Rubro ON Mueble.Rubro=Rubro.CodRub');
  SQL.Add('               INNER JOIN Seccion ON Mueble.Seccion = Seccion.Codigo');
  SQL.Add('WHERE Rubro BETWEEN '' '+Desde1.Text+' '' AND '' '+Hasta1.Text+' '' ');
  SQL.Add('ORDER BY Rubro.Nombre');
  SQL.SaveToFile('c:\lolo.txt');
end;
Con esto en c:\lolo.txt tendrás la consulta que te lanza y así podrás revisarla

Por otro lado, el error que te da con 'Rubro' seguramente es pq no dices de qué tabla es el campo y puede que esté en las 2 tablas
Responder Con Cita
  #28  
Antiguo 27-04-2004
silviodp silviodp is offline
Miembro
 
Registrado: may 2003
Ubicación: General Levalle, Argentina
Posts: 277
Poder: 22
silviodp Va por buen camino
Pregunta sobre Query

Gracias, Cadetill, ya encontré el error.
Saludos.

Silvio.-
Responder Con Cita
  #29  
Antiguo 27-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por silviodp
Gracias, Cadetill, ya encontré el error.
Y puede saberso como lo has solucionado o cuál era el error???
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 06:59:45.


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