Ver Mensaje Individual
  #1  
Antiguo 18-03-2016
GUN10 GUN10 is offline
Miembro
 
Registrado: feb 2010
Posts: 37
Reputación: 0
GUN10 Va por buen camino
Error en consulta mysql

Hola buenas noches!

Les comento que tengo el siguiente problema.
Estoy trabajando en Delphi 7 con mysql.

Realizo esta primera consulta, la cual me arroja resultados positivos, me devuelve todos los campos que necesito.

Código Delphi [-]
Datos.Qconsultas.Close;
      Datos.Qconsultas.SQL.Clear;
      Datos.Qconsultas.SQL.Add('SELECT orden_reparacion.cod_ordenreparacion ,orden_reparacion.fecha_ingreso, clientes.dni_cliente, clientes.nombre as nombre_cliente, clientes.apellido as apellido_cliente,usuarios.nombre, categoria_equipo.nombre, '+
                               'orden_reparacion.marca, orden_reparacion.modelo, detalle_ordenreparacion.dni_usuario, detalle_ordenreparacion.estado, detalle_ordenreparacion.fecha_terminado, detalle_ordenreparacion.precio '+
                               'FROM orden_reparacion, categoria_equipo, clientes, usuarios, detalle_ordenreparacion '+
                               'WHERE orden_reparacion.dni_usuario=usuarios.dni_usuario AND categoria_equipo.cod_categoria=orden_reparacion.cod_categoria and orden_reparacion.cod_ordenreparacion=detalle_ordenreparacion.cod_ordenreparacion '+
                               'AND orden_reparacion.dni_cliente=clientes.dni_cliente AND detalle_ordenreparacion.estado=''5'' AND orden_reparacion.cod_ordenreparacion='+Enumeroorden.text);

      Datos.Qconsultas.Open;

Luego en otro formulario realizo una consulta muy similar. Si se fija, en las ultimas dos condiciones del where solo cambio 2 campos. Que filtre por el 'dni_numero' y con respecto a la anterior quito que el 'estado' de la orden sea = 5.

Código Delphi [-]
Datos.Qconsultas.Close;
      Datos.Qconsultas.SQL.Clear;
      Datos.Qconsultas.SQL.Add('SELECT orden_reparacion.cod_ordenreparacion ,orden_reparacion.fecha_ingreso, clientes.dni_cliente, clientes.nombre as nombre_cliente, clientes.apellido as apellido_cliente,usuarios.nombre, categoria_equipo.nombre, '+
                               'orden_reparacion.marca, orden_reparacion.modelo, detalle_ordenreparacion.dni_usuario, detalle_ordenreparacion.estado, detalle_ordenreparacion.fecha_terminado, detalle_ordenreparacion.precio '+
                               'FROM orden_reparacion, categoria_equipo, clientes, usuarios, detalle_ordenreparacion '+
                               'WHERE orden_reparacion.dni_usuario=usuarios.dni_usuario AND categoria_equipo.cod_categoria=orden_reparacion.cod_categoria and orden_reparacion.cod_ordenreparacion=detalle_ordenreparacion.cod_ordenreparacion '+
                               'AND orden_reparacion.dni_cliente=clientes.dni_cliente AND clientes.dni_cliente='+Edni.Text);
      Datos.Qconsultas.Open;

El problema de esta segunda consulta es que en el Tedit. Tengo que colocar el "numero de dni" completo y sin equivocarme, sino me da el siguiente error.

"List index out of bounds (1)"

-------------------------------------------------------------

Aclaro que en los dos formularios, agrego el siguiente codigo para que no me agreguen espacios vacios ni letras ya que el campo es de tipo INT

Código Delphi [-]
  if (Enumeroorden.Text=' ') then

y tambien en ambos casos, antes de conectar el Query con el DBGrid, realizo la siguiente comprobacion

Código Delphi [-]
if (Datos.Qconsultas.RecordCount>0) then

En estas dos comprobaciones, emito un mensaje al no cumplirse la condicion.

Y remarco nuevamente, que en el primer caso, en la pimer consulta, cuando no cumplo la condicion, me emite los mensajes correctamente o me filtra correctamente.

La duda que me queda, es que será lo que esta pasando con la segunda consulta.
--------------------------------------------------------

Hice una prueba por medio de phpmyadmin, utilizando la misma consulta y con valores variados para el campo "dni_cliente" y me filtra correctamente.


Gracias por su tiempo. Saludos !!
Responder Con Cita