FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Bug en delphi? ParamsByName???
Hola buenas noches!, tengo el siguiente escenario, tengo una base de datos firebird y uso controles dbexpress. Tengo una capa con un SQLQuery donde tengo la siguiente consulta.
En otra capa tengo un Provider y un ClientDataSet (prefio FetchParams). Por otro lado tengo un formulario con una grilla que en el evento OnCreate tengo el siguiente codigo.
Bueno resulta que al abrir la tabla TCtaCte no devuelve nada la consulta, use un SQLMonitor y me devuelve la siguiente consulta.
Hasta poniendo el codigo del cliente de forma manual el resultado es el mismo. Aclaro ya hice el FetchParams del lado del ClientDataSet, probe esta consulta en un editor SQL y funciona perfecta. Espero puedan ayudarme, saludos y muchas gracias por su tiempo. |
#3
|
||||
|
||||
Cita:
y el mismo resultado, asi lo ponga manual al parametro es lo mismo!, voy a reinstalar delphi y veo si se soluciona. Saludos. |
#4
|
||||
|
||||
¿Reinstalar Delphi?
Es lo mismo que si le pones una vela a Santa Tecla |
#5
|
||||
|
||||
Y bueno, ya no se que hacer!, jaja. Siempre hice asi y ahora no funciona!, o estoy loco o es un bug!, o estoy demasiado cansado como para ver la solucion!
|
#6
|
||||
|
||||
Veamos, primero abres el ibexpert, flamerobin o el que uses y escribes la sentencia a mano:
Lo ejecutas y miras si devuelve valores. Esperando respuesta... |
#7
|
||||
|
||||
Cita:
es el problema. El valor que pasa el parametro es desconocido, asi lo ponga manualmente o lo ponga con
|
#8
|
||||
|
||||
No conozco bien los componentes que estás usando, te aconsejo que hagas una búsqueda por los foros para ver cómo se usan los parámetros con ellos, cualquier ejemplo te servirá.
Además debes asegurarte de que le estás pasando un valor en el parámetro, ¿lo has comprobado? |
#9
|
||||
|
||||
Y este parametro, que valor tiene?
No se, igual no toma ningun valor y por esto no te filtra. Pon un punto de interrupcion o un control watch y mira lo que vale CDS.TClientesID_CLIENTE.Value Ya dirás más cosas, pues he hecho pruebas y a mi me filtra correctamente. Saludos Edito: Casimirio se ha adelantado, hemos escrito a la vez Josep Última edición por jafera fecha: 28-03-2013 a las 13:17:24. Razón: Casimiro es el más rápido del oeste, yo ya estría muerto |
#10
|
||||
|
||||
Gracias por su tiempo!, ya hice un break point y un debug del proceso!, el valor que pasa es 1, hasta puse el valor manualmente. Lo mas extraño es que siempre lo use así y nunca tuve un problema hasta ahora!, por eso hablaba de "bug".
|
#11
|
||||
|
||||
¿Entonces cuál es el problema?, ¿que no se muestran en un dbgrid?
|
#12
|
||||
|
||||
Cita:
Esto me devuelve el SQLMonitor
|
#13
|
||||
|
||||
Pero si dices que lo pones manualmente, entonces ahí no cuenta para nada los parámetros.
O sea, si tú escribes: Y ejecutas el programa, ahí no estás pasando ningún parámetro, por lo que debería de funcionar. En caso contrario te aconsejo que quites los componentes que estás usando y vayas pasito a pasito, asegurándote de que lo haces bien en cada uno de esos pasitos. |
#14
|
||||
|
||||
Bueno, después de tantas idas y vueltas lo solucione. El problema no esta en el procedimiento, el problema pareciera ser un bug de delphi, ya que elimine los controles, guarde, cerre delphi, lo abrí nuevamente e hice todo como estaba antes!. Cosa de locos!, pero lo importante es que ya esta listo!, Les agradezco mucho por su tiempo y paciencia. Un abrazo grande desde Tucuman - Argentina.
|
#15
|
||||
|
||||
Cita:
Usa el evento AfterOpen del TSQLQuery para revisar si hay o no hay datos en el registro actual y cuál es el valor del parámetro (con la propiedad Params del TSQLQuery). También, revisa que la propiedad PacketRecords del TClientDataSet sea -1 y no 0 (cuando es 0 sólo trae de la base de datos información de estructura). Además, puedes revisar si no hay algún filtro activo en cualquiera de los dos conjuntos de datos (el TSQLQuery y el TClientDataSet), si realmente se está accediendo a la base de datos que tú quieres (y no a una copia), que todos los componentes involucrados estén debidamente relacionados, y que no estés modificando formularios, módulos de datos o unidades que están abiertos en el IDE y se llaman como los de tu proyecto, pero que en realidad pertenecen a otra carpeta. Ya verás como resulta ser alguna cuestión menor de ese estilo. P.D. Veo que ya lo solucionaste "a la brava". |
#16
|
||||
|
||||
Sí, eso suele suceder algunas veces.
|
#17
|
|||
|
|||
Si utilizas ParamsByName evidentemente el parámetro debe estar previamente creado.
Lo tenías creado o solo lo estabas indicando en la Query? Usa CreateParam para crear prweviemente el parámetro o usa el propio editor de params del TQuery Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
updatear mi codigo con paramsbyname | Rofocale | Varios | 3 | 26-10-2010 01:22:06 |
|