Page 1 of 1

Una de RecordSet SOLUCIONADO

Posted: Sat Feb 28, 2015 9:47 am
by Pedro
Hola a todos
Hace ya mucho tiempo que no vengo por aqui, y estoy más perdido que un pinguino en el sahara. Bueno a lo que voy, que es a pediros ayuda.
Le hice a un amigo un programa con ADO y una BBDD Access, le funciona bien, no hay problemas, pero ahora me pide una modificación y,
he debido perder el tacto, porque intento hacer el recordset y no me lo trae, debe ser algo de cómo poner las comillas o los apóstrofes de la sentencia
porque en modo simple si me lo trae. Me explico : el usuario me ingresa dos fechas, entre las cuales debo traer el recordset, PEROOOO, también puede ingresar
en código de un proveedor entonces el recordset debe traer solo los registros entre las dos fechas y que sean de ese proveedor. No consigo sacarlo, si entre las dos
fechas, también el de un proveedor, pero las dos cosas no. Alguien me ilumina?
Asi es como lo hago :

Code: Select all

      cSource := "SELECT * FROM GASTOS WHERE CODIGO = "+cCodProv
      cSource += " AND FECHA >=" +cDatIni+" and FECHA <= "+cDatFin
      cSource += " ORDER BY FECHA"
las fechas vienen correctas y el código del proveedor también ya que esa sentencia si quito el proveedor me trae las fechas correctamente y si quito las fechas me trae el proveedor de forma correcta
pero las dos cosas no me las trae.
Luego me han pedido otra listado de esa misma tabla, pero aqui el pero aunque sea minúsculas es más grande que el anterior, porque lo único que cambia es que el codigo
que puede estar en tres campos de la tabla, digamos que hay un codigo_gasto_1, un codigo_gasto_2 y un codigo_gasto_3 , tres campos y el codigo que solicita, puede estar en cualquiera de los 3 campos.
¿Me tirais una mano a ver como puedo poner esas sentencias y que me traigan el RecordSet?

Agradecido a todos
Pedro

Re: Una de RecordSet

Posted: Sat Feb 28, 2015 2:09 pm
by horacio
Prueba así

Code: Select all

cSource := "SELECT * FROM GASTOS WHERE CODIGO = '"+cCodProv
      cSource += "' AND FECHA >='" +cDatIni+"' and FECHA <= '"+cDatFin
      cSource += "' ORDER BY FECHA"
Verifica que las fechas esten en formato 'AAAA-MM-DD'

Saludos

Re: Una de RecordSet

Posted: Sat Feb 28, 2015 6:16 pm
by Armando
Pedro:

Te va un pequeño ejemplo:

Code: Select all

        oRsDlp:Source               := "SELECT " +;
                                                "* " +;
                                            "FROM " +;
                                                "DetLdp " +;
                                            "WHERE " +;
                                                "Det_Ldp = " + STR(anLdp[oHdr:LDP],2) + " " +;
                                            "AND " +;
                                                "Det_Pro = '" + oWrk:PRO + "'"
 
Observa cómo defino las variables cuando son numéricas,
"Det_Ldp = " + STR(anLdp[oHdr:LDP],2) + " " +;

Y cómo cuando son alfanuméricas
"Det_Pro = ' " + oWrk:PRO + " ' "

La diferencia son los apostrofes o comilla simple, además las fechas deben estar en formato
AAMMDD, puedes usar la función DTOS(dFecha) y por ser convertida en alfanumérica debe
ir entre apostrofes.
"Det_Fecha = '" + DTOS(oWrk:FECHA)+ "'"

Saludos

Re: Una de RecordSet

Posted: Sun Mar 01, 2015 12:17 pm
by Pedro
Gracias los dos, los apóstrofes era lo que tenia mal, no los colocaba correctamente