GUN10
18-03-2016, 07:25:15
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.
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.
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
if (Enumeroorden.Text=' ') then
y tambien en ambos casos, antes de conectar el Query con el DBGrid, realizo la siguiente comprobacion
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 !!
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.
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.
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
if (Enumeroorden.Text=' ') then
y tambien en ambos casos, antes de conectar el Query con el DBGrid, realizo la siguiente comprobacion
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 !!