Uso de Upper en sentencia SQL
Buenas a todos.
Llevo unos dias intentando solucionar un problema de uso de upper dentro de una sql firebird. La consulta original es esta y funciona bien:
Lo que yo quiero es hacer un filtrado en el Edit1.Exit con el siguiente código:
Cuando entro en la consulta original funciona de perlas, pero cuando voy al Edit 1 y escribo algo me manda un error de column unknow C in line....... Me olvido algo? He probado con QuotedStr(C) y tampoco, con [QuotedStr(C)] tampoco nada. Gracias por si alguien me puede ayudar. Josep |
Buenas.
En el evento OnBeforeOpen de OrdenarGrid haga que se despliegue un mensaje con la sentencia SQL a ejecutar, de manera que Ud. pueda verificar que está correcta. Con algo así: - |
No queda muy claro el objetivo. Pero puedes ayudarnos un poco:
Por favor, pon un ejemplo de la sentencia SQL Select que debería llegarle a Firebird si la condición ComboBox1.Text='RAO_COMERCIAL' se cumpliera. Y otro ejemplo de cómo sería la sentencia si esa condición no se cumpliera. Así, viéndolo desde la perspectiva del servidor de base de datos, podríamos tener más claro qué cosa quieres solicitarle desde Delphi. No olvides usar la etiqueta Resaltar sintaxis SQL (la opción de la esquina superior derecha del editor de mensajes). Saludos. :) Al González. |
Gracias por vuestra respuestas.
La sentencia SQL final deberia quedar así si ComboBox1.Text = RAO_COMERCIAL:
En los otros casos, quedaria así (ejemplo de un caso)
El motivo es que los campos estan en tablas distintas. Si ejecuto con F8, C toma el valor A.IDCOMPRA, A.IDPROVEIDOR, A.DATA_COMPRA o B.RAO_COMERCIAL, por eso me extraña que luego no encuentre la columna C Saludos |
Cita:
Evidentemente no se puede evaluar C Saludos |
Hola jafera.
Primero, en la línea, estas tratando a "C" como un caracter no como la variable cuyo valor (supongo) queres pasar a mayúscula. Segundo te aconsejo el uso de parámetros frente a la composición de cadenas Saludos :) |
Gracias de nuevo.
Ecfisa, tienes razon con lo de los parametros, pero como encajo despues del upper algo como :campo. Lo he probado a la brava y evidentemente no va. Sigo investigando Saludos |
Esto no tiene nada que ver con OOP, lo paso a SQL
|
Hola Josep.
Me refiero a algo parecido a esto: No probé si hace lo que buscas, es sólo a modo orientativo. Saludos :) |
Ok Casimiro.
Lo he puesto en OPP ya que creia que hacia efecto al componente IBQuery, pero es mas sensato colocarlo en SQL, ahí dudé yo. Gracias y no tendras una solucioncilla por ahí escondida? jejeej Saludos |
Gracias Ecfisa.
Ahora ya no da error, pero no puedo hacer la busqueda incremental con el like? Solo me da valores en la busqueda si el campo es fijo Saludos |
Cita:
Saludos :) |
Gracias Daniel.
He probado con el like sustituyendo el '=' como dices y no me hace el incremental como lo hacia antes, ahora solo filtra cuando encuentra la palabra completa. Además si selecciono el campo ID_PROVEIDOR, no me encuentra nada de lo escrito en el Edit1. Sigo investigando. Saludos Josep |
Hola Josep.
La verdad que no se que decirte, este es el código que use en la prueba:
Y como podrás ver, filtra de modo correcto: Saludos :) |
Perfecto, ahora si filtra, no se si habia algo mal puesto (Ctrl+C-CTtrl+V......).
Solo tengo una duda en el campo DATA_COMPRA que es una fecha y aqui si que no filtra, debo hacer algo como DateToStr? Gracias Josep |
Hola Josep.
No sabía el tipo de DATA_COMPRA, lamentablemente el operador LIKE no va a realizar la acción que buscas sobre una columna de tipo fecha. Para obtener un resultado ordenado vas a tener que ingresar la fecha completa y evaluar por <, <=, =, >= ó >. Saludos :) |
La franja horaria es GMT +2. Ahora son las 02:56:52. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi