![]() |
Problema con consulta (Extraño)
Hola a todos y gracias de antemano por su ayuda.
Tengo esta consulta:
Lo extraño es que funciona y da bien los datos en algunas fechas en otras los datos los da incompletos, he revisado las tablas y los datos estan y correctos. Por que sera que funciona a veces.? Gracias por su ayuda. Edito: No hay forma que me quede bien presentado con las etiquetas delphi. Saludos |
¿de que base de datos estamos hablando?
Yo te podría recomendar dos cosas: 1. Dale nombre a tus componentes, es más fácil saber que qryBancos es la consulta de bancos y es más dificil recordar para que srive ADOQuery7. 2. En lugar de utilizar SQL.Text yo te recomendaría utilizar SQL.Add(''). Esto porque al utilizar .Text toda tu consulta se presentará en una sola línea, a diferencia de utilizar .Add() en donde la consulta se presenta según el número de líneas que utilizes. Esto tiene su principal ventaja en que si tienes algún error en tu consulta, la excepción te regresará el número de línea donde tienes el error. En cambio si utilizas .Text la excepción siempre te dirá que el error esta en la línea 1. |
Gracias ContraVeneno
La base de datos es access. Tienes razon con lo de los nombres, casi siempre lo hago, solo cuando tengo prisa,no. Curioso: Cuando hago la consulta con add, me manda un error se sintaxis, en text, no. Lo curioso es que funciona bien con todas las fechas que no sean hoy ni aller, osea da correcta la consulta en fechas menores del dia 28/02/2007, mayores a esta no. Seguro no quiere trabajar mas, se canso.:D Saludos |
Yo no entiendo, dices, "tengo esta consulta", pero en realidad ¡tienes ocho! ¿Fallan todas? ¿No podríamos concentrarnos en una sóla?
// Saludos |
Nunca en mi vida he trabajado con Acces pero quizá sea porque el formato de la fecha debe ser mm/dd/yyyy, si fuese eso tendrías que hacer:
en lugar de
Cita:
|
Lo de la fecha lo está solventando con:
De cualquier forma, es cierto que lo mejor es usar parámetros en lugar de pasar la fecha mezclada con la consulta. // Saludos |
Gracias Roman y jhonny
Son varias consultas pero si la fecha es menor que 01/03/2007, funciona bien. Lo que me extraña es eso, por que en alguna fechas si y en otras no. La base de datos esta actualizada y contiene la informacion. Saludos |
Ok, pero, vuelvo a preguntar, ¿fallan todas las consultas?
// Saludos |
Cita:
En cuanto al problema, ¿Estas totalmente seguro de que estas conectado a la BD que tiene los datos reales y actualizados? |
Exacto Roman, fallan todas, si la fecha es menor a hoy.
De lo contrario todas funciona bien. Saludos |
Cita:
Hay algo a tener en cuenta, en Access es algo riesgoso trabajar con fechas con el formato #fecha#, porque Access se encarga de convertir el formato automáticamente, y para el motor: #1/31/2007# = #31/1/2007# porque se encarga automáticamente de convalidar el formato. Prueba: Entonces si trabajamos con ese formato, no será seguro que hará con fechas donde el día sea menor a 12. (Esto lo resuelve según la configuración regional) Entonces las opciones mas seguras son utilizar bind parameters, o utilizar alguna función como DateSerial, donde el orden de los parámetros no cambia:
Saludos! |
Correcto jhonny
La con la fecha lo soluciono como dice Roman. Los datos estan actualizados y me conecto bien. El problema esta en que no quiere trabajar mas osea hoy, sera por que es viernes y hace calor y necesito una cerveza y salir del trabajo.:D Saludos |
¡Válgame! ¿Hay algo en lo que access sea estándar? Tiene total lógica lo que dices, el 1 de marzo daría problemas y no así el 28 de febrero. Ahora pregunto, si pasas las fechas con parámetros, ¿si funciona?
// Saludos |
No se Roman, Como lo hago?
Me das un ejemplo en un caso. Por otro lado, cambie la sintaxis y sigue, asi: Saludos |
Caramba¡¡¡, ya recuerdo porque acces nunca me a llamado la atención.
|
Supongo que deberia ser algo como:
Edite: para organizar un poco a ver si se ve mejor. |
No, no. Pensé lo mismo. Pero ADO maneja distinto los parámetros. Deja reviso.
// Saludos |
Saludos
Solo cambiar y agregar algo: Ado muchas veces no convierte el parametro al tipo de dato que deberia ser. |
Hola
Asi: Me funciono en este primero. Curioso me ve el dia 2, no el dia 1 Saludos |
Hola
Tanto la opcion de jhonny como la de vtdeleon funcionan solo hay que cambiar una pequeña cosa, aun asi sigue con el problema, no ve el 1, ve el 2, y del 28 para atras, es extraño. saludos |
Hola
Opcion jhonny: Opcion vtdeleon: La dos funcionan igual. Muchas gracias por estar ayudandome. Saludos |
StrToDate(DateToStr(DTP1.Date))
No creo que sea necesario hacer todas esas conversiones, con solo poner DTP1.date, debería bastar. |
Hola vtdeleon
Gracias por estar ayudandome; No vasta, me da un error dice que no coinciden los tipos, si pongo todo eso si funciona bien. Saludos |
Hola
Muchisimas Gracias a todos, ya lo solucione, con la opcion de jhonny modificada, ya me da todos los datos. Nota: La opcion de vtdeleon funciona a la perfecion tambien. Sois unos verdaderos Maestros. Muchas Gracias de nuevo y que paseis un buen fin de semana. Saludos |
Me alegra que todo vaya bien :) , Pero me da curiosidad y seria bueno que nos mostraras cómo quedo finalmente la cosa ;).
|
Yo también quiero verlo. La verdad es que la opción de Van Troi fue lo que intenté pero intercambiando el orden: primero el DataType y luego la sustitución, y simplemente no me encuentra ningún registro.
// Saludos |
Hola
Gracias jhonny Asi Quedo: Si no se ve bien, por favor arreglenlo. Roman, jhonny, vtdeleon, delphi.com.ar y todos muchas gracias Saludos |
Si le quitamos unas cuantas lineas al principio también te funcionaria?:
|
Hola
Tienes toda la razon jhonny y queda mas claro el codigo y legible. Muchas gracias por el tiempo que me disteis, la verdad ya me tenia un poco loco esto. Gracias Maestro. Saludos |
No entiendo como funciona al reves.
Es decir, primero activas el Query y despues el parametro :confused:, No sabía que se podía hacer así. Saludos |
Pues a mi que me aspen pero no entiendo nada. ¿Cómo está eso de que primero activan la consulta y luego sustituyen los parámetros? ¿ESO funciona? :eek:;
// Saludos |
Cita:
|
Estamos todos enliado:D. Caral danos luz!
|
Hola
Pues cosas de la vida insolitas, cuando me disteis el codigo pense exactamente lo mismo, aun asi lo coloque como estaba y funciona, como, no se, revisando mi codigo en otros form, cuando uso parametros, primero uso el parametro y luego activo la consulta, asi: Ejemplo de un codigo: Preguntais a este novato:D , que dificil.:D Para mi es que me quiere tanto delphi que hace todo lo posible para servir sea como sea.:D Saludos |
Pero además, me parece que DEBERÍA funcionar sin tanta conversión:
esto es, como mencionaba Van Troi:
pues en el primer caso regresamos a un tipo TDate. Pero, ¡no funciona! ¿Y saben por qué? ¡Porque el valor de DTP1.Date no es un Date! Tiene la parte fracionaria del tiempo. ¿No se supone que debería estar truncado? ¿Será que me falta aplicar algún parche al Delphi? // Saludos |
Nota curiosa:
Acabo de invertir el parametro en una consulta y tambien funciona, osea al reves y al derecho. Delphi, eres genial.:D Hay que preguntar esto a Borland.:D Saludos |
Tienes razon, lo trae todo. Lo probe con el Turbo.
|
Me dá, que si se aplica esto:
deberia funcionar sin la conversión. |
Pues no. Al menos en mi caso, si pongo
no funciona. Pero si pongo
funciona bien. Incluso puedo quitar la asignación del tipo de datos:
pero entonces me falla si quiero una segunda consulta con otro parámetro. // Saludos |
Cita:
|
| La franja horaria es GMT +2. Ahora son las 14:30:52. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi