FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
sqlquery con parametros no me funciona
Este query
Da resultado 0 La misma sin parametros da resultado 1630. Utilizo DBExpress, BD es FireBird 2.5 entorno Delphi XE2. ¿porqué?.¿Alguien sabe que me falta, que estoy haciendo mal...? Gracias |
#2
|
|||
|
|||
Hola
Los campos cliente y agente son numeros o letras? En el primero lo estas pasando como numeros i en el segundo como texto Prueba de esta manera:
|
#3
|
|||
|
|||
los campos de la base de datos son numeros(integer), por tanto los parametros tienen que ser integer.
|
#4
|
||||
|
||||
Entonces en el caso que te funciona, no debería funcionar. Y viceversa
|
#5
|
|||
|
|||
Cita:
Si los campos son numericos, el parametro debe ser numérico (por eso parambyname().asInteger) y le asigno el valor que viene de un editText reconvertido a integer(strtoint(editText)). En el segundo caso, a un query.text le asigno los mismos valores de un editText sin entrecomillar(sin QuotedStr, que seria el caso de asignar un string ). Creo que es así como se hace, pero puedo estar equivocado. |
#6
|
||||
|
||||
¿Seguro que son integer en la base de datos?
|
#7
|
|||
|
|||
En el primer caso (CLIENTE) si, en el segundo caso (AGENTE) es un smallint( lo he visto ahora). Pero he corregido el primer query
y sigue saliendo 0 |
#8
|
||||
|
||||
Proba poniendole literales directamente en los parametros. Para descartar problemas de conversion por configuracion regional por ejemplo
Obviamente con valores relevantes al dominio |
#9
|
||||
|
||||
Hay una cosa que no entiendo.
si creas la consulta "al vuelo", porqué utilizas parámetros? Creala en tiempo de diseño y carga los parámetros en tiempo de ejecución. Creo que también puedes o debes hacer Query.Prepare para que los parámetros los tome correctamente. Creo que van por ahí los tiros, pero no puedo mirarlo ahora. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#10
|
|||
|
|||
Gracias a todos.
Ya está solucionado. Os explico: el campo AGENTE es un smallint. A los parámetros les cargo el valor que vienen de un TEDIT. El problema viene porque desde el TEDIT HASTAGEN venía un valor mayor que el máximo valor de un smallint(32767).El valor del TEDIT se asigna al parámetro correspondiente, el cual no da ningun tipo de error, pero no hace nada. Por eso salia 0. Controlando el máximo valor del tedit HASTAAGEN, problema solucionado. De nuevo gracias a todos. |
#11
|
||||
|
||||
Entonces no podía funcionar ni con parámetros ni sin parámetros
|
#12
|
|||
|
|||
pues sin parámetros funcionaba, por lo menos en mi caso.
|
#13
|
||||
|
||||
No necesariamente. El parámetro en cuestión no se asignaba a un campo (el motor de datos habría indicado el error) sino al límite superior de un between. Una consulta del tipo
al menos en MySQL, funciona bien aunque campo sea de un tipo entero pequeño, y es lógico que funcione pues no hay ninguna infracción al rango del campo. Habría que ver qué es lo que hace Delphi con el valor del parámetro cuando excede el rango. (Quizá lo ajusta a -1) LineComment Saludos |
#14
|
||||
|
||||
Entonces ese era el problema con parámetros lo convertía en -1 y sin parámetros le asignaba correctamente el número mayor de 32000
|
#15
|
||||
|
||||
Cuando un SmallInt excede del valor que puede almacenar, puede tener dos estados (Positivo o Nevativo)
SmallInt = Valor que se le pasa originalmente - (32767 * 2) - 2 eje: Resultado es: a = 36000, b = -29536 Resultado es: a = 86000, b = -20464 Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber. |
#16
|
||||
|
||||
Perdón, esto de copiar y pegar, pasa lo que pasa.
Resultado es: a = 86000, b = 20464 Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
insertar sqlquery | ttotto | MySQL | 11 | 10-07-2012 15:03:44 |
ClientDataSets con parámetros, no funciona la consulta | rochi | Providers | 3 | 10-10-2008 20:47:24 |
Activar un SQLQuery | beatriz g | SQL | 3 | 29-08-2006 10:06:40 |
SQLQuery con IBExpress | Humberto Pertuz | Conexión con bases de datos | 2 | 05-11-2003 22:48:02 |
|