Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-01-2023
LACV LACV is offline
Miembro
 
Registrado: oct 2015
Posts: 80
Poder: 9
LACV Va por buen camino
Exclamation no aparecen todos los registros en consulta hecha en la aplicacion

buena tarde,
agradesco de antemano la atencion prestada compañeros, encontre un error en mi aplicacion al mostrar una informacion en una tabla ya que al realizar la consulta en la aplicacion no aparecen todos los registros pero si ejecuto la misma consulta con los mismo parametros en el phpmyadmin aparecen los registros sin problemas.

Código Delphi [-]
  if (FechaI = '') or (FechaF = '') then
  begin
    fechas := '';
  end
  else
  begin
    fechas := ' and Fecha_F>=''' + FechaI + ''' and Fecha_F<=''' + FechaF + '''';
  end;

  if tiquete = '' then
  begin
    tiquetes := ''
  end
  else
  begin
    tiquetes := ' and NTiquete=''' + tiquete + '''';
  end;

  if placa = '' then
  begin
    placa_ := ''
  end
  else
  begin
    placa_ := ' and Placa=''' + placa + '''';
  end;

  if productoId = '' then
  begin
    idProd := '';
  end
  else
  begin
    idProd := ' and Id_Producto=''' + productoId + '''';
  end;
  case estado of
    true:
      estado_ := '1';
    false:
      estado_ := '0';
  end;

  group := ' group by B.Id_Bascula';

  sql_ := 'select Id_Producto,B.Id_Bascula,Estado_B,NTiquete,Fecha_I,Hora_I,Peso_I,Fecha_F,Hora_F, '
    + 'Peso_F,Servicio,N_Viaje,Variedad,Lote,Humeda,Impureza,Procedencia,N_Documento, '
    + 'Origen,Destino,Observacion,Tarifa,CONCAT(Fecha_I, ''' + espacio +
    ''',Hora_I) AS FHi,CONCAT(Fecha_I, ''' + espacio +
    ''',Hora_I) AS FHf,Peso_I-Peso_F as DifE,Peso_F-Peso_I as DifS,Anulado, ' +
    'B.Id_VC,Mv.Id_Cliente,IdPLiq, ' +
    'C.IdentificacionC,C.NombreC,NombresCt,IdentificacionCt,Placa,Mv.Id_Mov,VPeso2,Nombres,Apellidos,Mv.  Id_Ciudad,Ciudad,Departamento, '
    + 'B.IdPerFac,EstadoFac,F.NombreC as FNombreC,F.IdentificacionC as FIdentificacionC '
    + 'from abBascula B ' +
    'inner join abPersonasFac F on B.IdPerFac=F.IdPerFac ' +
    'left join abMovimientos Mv on B.Id_Bascula=Mv.Id_Bascula ' +
    'left join abCliente C on Mv.Id_Cliente=C.Id_Cliente ' +
    'left join abCiudades Cid on Mv.Id_Ciudad=Cid.Id_Ciudad ' +
    'inner join abVehiculoConductor VC on B.Id_VC=VC.Id_VC ' +
    'inner join abVehiculo V on  VC.IdVehiculo=V.IdVehiculo ' +
    'inner join abConductor Cd on VC.Id_Conductor=Cd.Id_Conductor ' +
    'inner join abUser U on B.Id_User=U.Id_User ' +
    'inner join abMDetalle Md on Mv.Id_Mov=Md.Id_Mov ' + 'where Servicio=''' +
    IntToStr(Servicio) + ''' and Estado_B=''' + estado_ + ''' and Anulado=0 ' +
    fechas + tiquetes + placa_ + idProd + group + vPeso;

  with dmodulo.QueryBasculaInf do
  begin
    Active := false;
    SQL.Clear;
    SQL.Add(sql_);
    Active := true;
    Filter := '';
    if recordcount > 0 then
    begin
      resetPesoOrdenes(dmodulo.QueryBasculaInf.FieldByName('Id_Bascula').AsString);
    end
    else
    begin
      dmodulo.QueryPesoDestallesB.Active := false;
    end;

    Result := recordcount;
  end;

Última edición por Casimiro Notevi fecha: 31-01-2023 a las 10:48:40. Razón: Poner etiquetas [delphi] [/delphi] al código.
Responder Con Cita
  #2  
Antiguo 31-01-2023
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Tres cosas :
1.
Veo que estás devolviendo dos veces la "Fecha Inicio" + "Hora Inicio" como FHi y FHf.
Quizás es que no estás viendo lo que en realidad deseas

Código Delphi [-]
sql_ := 'select Id_Producto,B.Id_Bascula,Estado_B,NTiquete,Fecha_I,Hora_I,Peso_I,Fecha_F,Hora_F, '
    + 'Peso_F,Servicio,N_Viaje,Variedad,Lote,Humeda,Impureza,Procedencia,N_Documento, '
    + 'Origen,Destino,Observacion,Tarifa,

    CONCAT(Fecha_I, ''' + espacio + ''',Hora_I) AS FHi,
    CONCAT(Fecha_I, ''' + espacio + ''',Hora_I) AS FHf,

    Peso_I-Peso_F as DifE,Peso_F-Peso_I as DifS,Anulado, ' +
    'B.Id_VC,Mv.Id_Cliente,IdPLiq, ' +
...

2.
Veo que filtras solo Fecha_F
Quizás deberías modificar a
fechas := ' and Fecha_**I**>=''' + FechaI + ''' and Fecha_F<=''' + FechaF + '''';

Código Delphi [-]
  begin
    fechas := ' and Fecha_F>=''' + FechaI + ''' and Fecha_F<=''' + FechaF + '''';
  end;

3.
Cuando filtras por fechas quizás tengas que tener en cuenta la hora.
¿Cuál es el formato que tiene FechaI y FechaF?
No conozco MySQL pero quizás deberías revisar qué contienen y modificarlo según corresponda.
Por ejemplo, si quieres el mes de enero completo
- Fecha_I = "2022-01-01 00:00:00"
- Fecha_F = "2022-01-31 23:59:59"
Código Delphi [-]
  begin
    fechas := ' and Fecha_F>=''' + FechaI + ''' and Fecha_F<=''' + FechaF + '''';
  end;
Responder Con Cita
  #3  
Antiguo 31-01-2023
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Antes de hacer el Active, yo mostraría un mensaje con la SQL que vas a ejecutar, para asegurarte de que es la misma que estás ejecutando en al phpmyadmin.

Por otro lado te recomiendo usar parámetros para la consulta, en lugar de concatenar cadenas. hará la consulta más segura y más simple de leer. Las dobles comillas o triples comillas a veces juegan malas pasadas.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 31-01-2023
LACV LACV is offline
Miembro
 
Registrado: oct 2015
Posts: 80
Poder: 9
LACV Va por buen camino
Exclamation

buen dia;
lo del primer punto que es enviar un mensaje , ya lo realice por esa razon quite los parametros para poder ver lo que se esta pasando, mil gracias por las ideas

Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Antes de hacer el Active, yo mostraría un mensaje con la SQL que vas a ejecutar, para asegurarte de que es la misma que estás ejecutando en al phpmyadmin.

Por otro lado te recomiendo usar parámetros para la consulta, en lugar de concatenar cadenas. hará la consulta más segura y más simple de leer. Las dobles comillas o triples comillas a veces juegan malas pasadas.
Responder Con Cita
  #5  
Antiguo 31-01-2023
LACV LACV is offline
Miembro
 
Registrado: oct 2015
Posts: 80
Poder: 9
LACV Va por buen camino
estoy devolviendo dos veces la fecha para mostrar en la columna del dbgrid fecha y hora a la vez por que en la DB tengo separado estos dos valores para evitar lo que comentas en el tercer punto. sobre el punto dos utlizo al Fecha_F por que es el parametro fundamental en la db ya que es cuando se toma el ultimo dato de la del registro y sobre ese tengo que realizar las consultas
Cita:
Empezado por duilioisola Ver Mensaje
Tres cosas :
1.
Veo que estás devolviendo dos veces la "Fecha Inicio" + "Hora Inicio" como FHi y FHf.
Quizás es que no estás viendo lo que en realidad deseas

Código Delphi [-]
sql_ := 'select Id_Producto,B.Id_Bascula,Estado_B,NTiquete,Fecha_I,Hora_I,Peso_I,Fecha_F,Hora_F, '
    + 'Peso_F,Servicio,N_Viaje,Variedad,Lote,Humeda,Impureza,Procedencia,N_Documento, '
    + 'Origen,Destino,Observacion,Tarifa,

    CONCAT(Fecha_I, ''' + espacio + ''',Hora_I) AS FHi,
    CONCAT(Fecha_I, ''' + espacio + ''',Hora_I) AS FHf,

    Peso_I-Peso_F as DifE,Peso_F-Peso_I as DifS,Anulado, ' +
    'B.Id_VC,Mv.Id_Cliente,IdPLiq, ' +
...

2.
Veo que filtras solo Fecha_F
Quizás deberías modificar a
fechas := ' and Fecha_**I**>=''' + FechaI + ''' and Fecha_F<=''' + FechaF + '''';

Código Delphi [-]
  begin
    fechas := ' and Fecha_F>=''' + FechaI + ''' and Fecha_F<=''' + FechaF + '''';
  end;

3.
Cuando filtras por fechas quizás tengas que tener en cuenta la hora.
¿Cuál es el formato que tiene FechaI y FechaF?
No conozco MySQL pero quizás deberías revisar qué contienen y modificarlo según corresponda.
Por ejemplo, si quieres el mes de enero completo
- Fecha_I = "2022-01-01 00:00:00"
- Fecha_F = "2022-01-31 23:59:59"
Código Delphi [-]
  begin
    fechas := ' and Fecha_F>=''' + FechaI + ''' and Fecha_F<=''' + FechaF + '''';
  end;

Última edición por LACV fecha: 31-01-2023 a las 16:03:59.
Responder Con Cita
  #6  
Antiguo 01-02-2023
marco3k marco3k is offline
Miembro
 
Registrado: feb 2015
Posts: 60
Poder: 10
marco3k Va por buen camino
Puede ser el problema las comillas simples, prueba usar la funcion "QuotedStr" en los parametros que pasas. Lo otro que veo que le parametro Filter (Filter := '' del query esta demas porque estas borrando la consulta con un clear y asignado otra vez.
Yo hago mas o menos asi ese tipo de consultas:
Código Delphi [-]
  try
    rutinas.AbreConexion;
    TListaEmail.DisableControls;
     Conexion.Lista.SQL.Clear;
    Conexion.Lista.SQL.Add('NRO_DOC, EMAIL_PER FROM PERSONAL'+
    ' WHERE EMAIL_PER<>' + quotedstr('') + 'AND ID_PER>0');
    Conexion.Lista.Prepare;
    Conexion.Lista.Open;
    if Conexion.Lista.RecordCount>0 then
    begin
    ...
    end;
  finally
    TListaEmail.EnableControls;
    Conexion.Lista.Close;
    rutinas.CierraConexion;
  end;
Es bueno usar parámetros en los querys pero en este caso como era algo pa llenar una lista rápida, lo hice así.

Última edición por marco3k fecha: 01-02-2023 a las 17:10:16.
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
consulta sql traer todos los registros menos los primeros 8 jangel_ramirezm SQL 5 12-09-2008 18:50:46
hacer un SUM de una consulta ya hecha egarc Conexión con bases de datos 9 27-05-2008 09:10:43
tabla dañada? aparecen todos los registros asi: ®?P½/”ÄrÒP Wonni Tablas planas 10 16-06-2006 20:59:48
Problema con una consulta hecha de 3 formas VRO Firebird e Interbase 5 24-01-2005 19:02:11
Recuperar todos los registros en consulta lafirma Conexión con bases de datos 9 07-08-2003 22:05:33


La franja horaria es GMT +2. Ahora son las 01:41:36.


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