Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
idBanc = 34 and  idempresa = 6 and (Referencia = '0001/23-456 A') or (Referencia = '1/23-456 A')
Seria preferible que usaras parametros, te evitarias problemas.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #2  
Antiguo 13-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 13-03-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
entonces debe ser mas o menos asi
nota los patentesis

Código Delphi [-]
(idBanc = 34) and  (idempresa = 6) and (Referencia = '0001/23-456 A' or Referencia = '1/23-456 A')

avisas si te funciono
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #4  
Antiguo 13-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
Tampoco funciona, y por más vueltas que le doy no lo entiendo
Responder Con Cita
  #5  
Antiguo 13-03-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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:

Código Delphi [-]
var 
Filtro, a, b : String;
begin
   a:= '1/23-456 A';
   b:= '0001/23-456 A';
   ADOQuery1.Filtered := False;
   Filtro := 'idBanc = 34 and  idempresa = 6 and  Referencia Like '''+a+'*'' OR Referencia Like '''+b+'*''';
   ADOQuery1.Filter := Filtro;
   ADOQuery1.Filtered := True
   end
   else 
   ADOQuery1.Filtered := False;
end;

Otra opcion:

Código Delphi [-]
var 
Filtro, a, b : String;
begin
   a:= '1/23-456 A';
   b:= '000'+a;
   ADOQuery1.Filtered := False;
   Filtro := 'idBanc = 34 and  idempresa = 6 and  Referencia Like '''+a+'*'' OR Referencia Like '''+b+'*''';
   ADOQuery1.Filter := Filtro;
   ADOQuery1.Filtered := True
   end
   else 
   ADOQuery1.Filtered := False;
end;

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.
Responder Con Cita
  #6  
Antiguo 13-03-2011
kambiz kambiz is offline
Miembro
 
Registrado: jun 2004
Posts: 24
Poder: 0
kambiz Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 13-03-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
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.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 22:38:31.


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
Copyright 1996-2007 Club Delphi