FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error con TAdoQuery Filter
Buenas,
Alguien podría decirme porqué el siguiente filtro en un TAdoQuery: idBanc = 34 and idempresa = 6 and (Referencia = '0001/23-456 A' or Referencia = '1/23-456 A') me da el siguiente error: Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros Si elimino los parèntesis no da error, pero no hace lo que yo quiero. La base de datos es Access. Ya sé que si pusiera el filtro en el where no tendría problemas, pero no puedo. Muchísimas gracias. |
#3
|
|||
|
|||
Gracias por responder, pero no es correcto
La instrucción tal como yo la planteo tienen que darse 3 condiciones: - idBanc = 34 y - idEmpresa = 6 y - Referencia = '0001/23-456 A' or Referencia = '0001/23-456 A' Tal como la has puesto tu, no da error, pero no cumple las tres condiciones. Claro, estoy de acuerdo, mejor usar parámetros o usar el where. Pero no puedo. Es un programa complejo, escrito por otra persona, y cambiar la instrucción sql no sé las repercusiones que podría tener. |
#4
|
||||
|
||||
entonces debe ser mas o menos asi
nota los patentesis
avisas si te funciono
__________________
Dulce Regalo que Satanas manda para mi..... |
#5
|
|||
|
|||
Tampoco funciona, y por más vueltas que le doy no lo entiendo
|
#6
|
||||
|
||||
Hola
Segun veo los dos primeros campos son integer y el tercero es texto. Cuando se hace un filtro en access a un campo texto se necesita colocar ciertas condiciones. Yo colocaria unas variables, si es que el dato no se saca por ejemplo de un edit, algo asi:
Otra opcion:
Hice algunas pruebas y funciona a la perfección. Saludos
__________________
Siempre Novato Última edición por Caral fecha: 13-03-2011 a las 02:40:36. |
#7
|
|||
|
|||
Caral, gracias por tu interés per fíjate, los paréntesis tienen su importancia.
Fíjate en el siguiente ejemplo: idBanc = 6 idEmpresa = 34 Referencia = '1/23-456 A' idBanc = 6 idEmpresa = 34 Referencia = '0001/23-456 A' idBanc = 5 idEmpresa = 34 Referencia = '1/23-456 A' La sentencia, sin paréntesis, te devuelve los 3 registros, cosa que no quiero, ya que el tercero no cumple con todas las condiciones Las condiciones són: - idBanc = 6 y - idEmpresa = 34 y - Referencia = '1/23-456 A' o Referencia '0001/23-456 A' Gracias. |
#8
|
||||
|
||||
Hola
Probaste el codigo????. Como puede devolver un dato que no coincide (idBanc = 5) ?, como puede devolver incluso dos ?, menos tres. A mi me devuelve un solo registro ya que se define por el contenido de OR en el filtro, osea, o uno u otro, no los dos que coinciden. Este es el que me devuelve: idBanc = 6 idEmpresa = 34 Referencia = '1/23-456 A' Como ves solo un registro. Saludos
__________________
Siempre Novato Última edición por Caral fecha: 13-03-2011 a las 13:59:50. |
#9
|
||||
|
||||
Hola
Aqui un ejemplo de lo que digo. Saludos
__________________
Siempre Novato Última edición por Caral fecha: 14-03-2011 a las 02:01:19. |
#10
|
|||
|
|||
Buenas Caral, gracias por tu atención.
No he podido acceder al ejemplo que me has enviado. De todas maneras es una cuestión de prioridades. Te pondré diferentes pruebas, partiendo que tenemos así la base de datos: idBanc = 6 idEmpresa = 34 Referencia = '1/23-456 A' idBanc = 6 idEmpresa = 34 Referencia = '0001/23-456 A' idBanc = 6 idEmpresa = 34 Referencia = '1/23-456 A' Ejemplo 1 idBanc = 6 and idEmpresa = 34 and Referencia = '1/23-456 A' or Referencia = '0001/23-456 A' devuelve segundo registro Ejemplo 2 idBanc = 6 and idEmpresa = 34 and Referencia = '0001/23-456 A' or Referencia = '1/23-456 A' devuelve el primer y tercer registro Ejemplo 3 idBanc = 5 and idEmpresa = 34 and Referencia = '0001/23-456 A' or Referencia = '1/23-456 A' devuelve los mismos que el ejemplo anterior, porqué al no usar paréntesis, si se da la última condición devuelve el registro. Agradecida por tu interés. |
#11
|
||||
|
||||
Hola
La verdad no entiendo. 1- por que no usar sql, cual es el problema?, no veo que repercusiones tenga el usar sql en el mismo query, si al final de cuentas quedara tal como estaba cuando se quiera. 2- Si se usara un sql se podria usar ditinc, y se ahorraria muchos dolores de cabeza. No entiendo. Saludos
__________________
Siempre Novato |
#12
|
||||
|
||||
Creo que todo esto tiene mucho que ver con este otro hilo.
|
#13
|
|||
|
|||
Buenas, hice los dos posts porqué creí que eran dos temas diferentes:
- quería saber si existia una función sql para eliminar ceros a la izquierda de un string - entender porqué me da error una sentencia, en un filtro de un tadoquery, con el siguiente formato: (condición 1) y (condicion 2) y (condicion3 o condicion4) Si una cosa tiene la informática es la infinidad de posibilidades de conseguir lo que uno se propone. Pero me hubiera gustado de la manera que lo he planteado. Gracias por vuestra aportación. |
#14
|
||||
|
||||
Hola
Access igual que firebird acepta IIF en una consulta. Esto nos ayuda a definir ciertas condiciones de la misma. De darse una u otra entonces se ejecuta la que uno desee. Access, por otro lado posee un generador de consultas muy practico. Sigo sin entender nada de nada. Me estoy haciendo viejito Saludos
__________________
Siempre Novato |
#15
|
||||
|
||||
Cita:
Pienso que el principal problema es de desconocimiento, que no conoce el programa y no se atreve a tocar nada, pero el problema es que así no es fácil ayudar. |
#16
|
|||
|
|||
Sí Casimiro, esto es exactamente lo que pasa, es que no me atrevo a tocar el programa y eso hace que sea difícil ayudar.
De todas maneras aislándolo todo, me gustaría saber porqué un AdoQuery, en Filter no acepta esto: (condición1) y (condicion2) y (condición3 o condición4) Alternativas a esto, mejor manera de hacerlo .... lo sé Gracias por todo |
#17
|
||||
|
||||
Hola
Lo que se pretende es, a mi criterio IMPOSIBLE, por que?. Si tenemos tres datos, los filtramos y dos de los tres campos cumplen el criterio se mostrara los tres, es logico, las bases de datos son secuenciales, muestran la totalidad de la linea. Si hicieramos una sentencia sql asi: Nos mostraria los tres registros, incluyendo el que supuestamente no deberia: idBanc - Referencia - idEmpresa 6 - 0001/23-456 A - 34 5 - 1/23-456 A - 34 6 - 1/23-456 A - 34 Y eso que se determina con el Where que solo los que coincidan con referencia, como es logico, la referencia del 5 tambien es la misma y la mostrara. Sea con un filtro o con una sentencia se mostraran los tres campos, salvo que se determine UNA de las condiciones, por ende solo mostrara la diferente, en este caso:
Y mostrara la diferente: dBanc - Referencia - idEmpresa 6 - 0001/23-456 A - 34 Por eso digo: no entiendo esto. Ademas sigo sin enterder cual es el problema de modificar un adoquery en una operacion, si regresara a su estado normal posteriormente, aunque en este caso no funcionara aun con un DISTINCT. No se, digo... Saludos
__________________
Siempre Novato Última edición por Caral fecha: 14-03-2011 a las 01:16:16. |
#18
|
||||
|
||||
Pues si no lo tocas... entonces qué hacemos
|
#19
|
|||
|
|||
Gracias Caral por tu interés, entiendo que te parezca estraño la negativa a modificar la sentencia sql del adoquery, pero es así. Se trata de un programa muy amplio, de difícil comprensión por los pocos comentarios que tiene, por el poco conocimiento que tengo de todas las funcionalidades, y porqué la persona que lo escribió está ilocalizable.
Y de nuevo gracias por intentarlo. |
#20
|
||||
|
||||
Hola
Cuando se lanza un evento y se quiere modificar un AdoQuery, este quedara intanto una vez que se decida. Por eso digo: No entiendo por que no usar el query ?. Saludos
__________________
Siempre Novato |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Error en consulta sql TADOQuery | hoguera | Conexión con bases de datos | 11 | 26-11-2008 13:15:00 |
En TADOQuery, con SELECT en algunas columnas da error. Me pide las otras | Wonni | Conexión con bases de datos | 6 | 18-06-2007 15:23:34 |
filter | vroa74 | Conexión con bases de datos | 3 | 06-03-2007 22:51:18 |
Uso de filter | CONY | Conexión con bases de datos | 1 | 02-08-2006 22:48:23 |
Error con el Tadoquery | jas010 | SQL | 2 | 03-03-2005 23:32:07 |
|