Visual Basic - Problemas con SELECT

Life is soft - evento anual de software empresarial
 
Vista:

Problemas con SELECT

Publicado por julio paez (48 intervenciones) el 03/04/2005 05:26:12
tengo que discriminar registros dentro de un rango de fechas que seria Desde>=FechaDeposito and Hasta.<=FechaDeposito.
Al hacer la consulta con SELECT no me discrimina bien el rango de fechas.
He usado

Set g_rsTRANSF = g_dbBASE.OpenRecordset("Select CUIT,TRANSFERENCIA,RECAUDACION, PERIODO, IMPORTE FROM TRANSFERENCIAS " & _
"WHERE TRANSFERENCIA between" & "#" & vDesde & "#" & _
"AND " & " #" & vHasta & "#" & _
" ORDER BY (TRANSFERENCIA & PERIODO & CUIT)") ' & PERIODO & CUIT)")

Alguien puede ayudarme?
Tambien intente sin between
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con SELECT

Publicado por Avellaneda (131 intervenciones) el 03/04/2005 10:54:01
El campo TRANSFERENCIA es de tipo fecha.
Las variables vDesde y vHasta deben estar formateadas así. "mm/dd/yyyy"
Sobran comilas en la sentencia (aunque puede funcionar igual) si pones WHERE TRANSFERENCIA BETWEEN #" & vDesde & "# AND #" & vHasta & "#" ahorras código y funciona igual.
Para ordenar por más de un campo no se pone & sino coma: ORDER BY TRANSFERENCIA, PERIODO, CUIT
Prueba con estas modificaciones, a ver si así te funciona.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con SELECT

Publicado por julio paez (48 intervenciones) el 04/04/2005 05:35:32
Probe con esto
Set g_rsTRANSF = g_dbBASE.OpenRecordset(\"Select CUIT,TRANSFERENCIA,RECAUDACION, PERIODO, IMPORTE ,, BANCO,CONCEPTOTRANSF,CUIL FROM TRANSFERENCIAS \" & _
\"WHERE TRANSFERENCIA BETWEEN #\" & dtpAcreditado_Desde.Value & \"# AND #\" & dtpAcreditado_Hasta.Value & \"#\")
Logra filtrar registros mas cerca del limite inferior, pero me sigue filtrando registros por debajo del limite inferior

Yo lo estoy usando asi, tampoco me funciona
Set g_rsTRANSF = g_dbBASE.OpenRecordset(\"Select CUIT,TRANSFERENCIA,RECAUDACION, IMPORTE ,BANCO,CONCEPTOTRANSF FROM TRANSFERENCIAS \" & _
\"WHERE CONCEPTOTRANSF=\'REM\'\" & _
\" AND TRANSFERENCIAS!TRANSFERENCIA >=#\" & dtpAcreditado_Desde.Value & \" #\" & _
\"AND TRANSFERENCIAS!TRANSFERENCIA <=# \" & dtpAcreditado_Hasta.Value & \" #\" & _
\" ORDER BY (TRANSFERENCIA & CUIT & PERIODO)\")
Cuando intento usar comas en ORDER BY
me sale este error

Vb6 provocó un error en MSJET 40.DLL
Vb6 se cerrará

.........
y lo cumple sin mas tramite

El tema de los rango de fecha lo estoy solucionando dentro del codigo
con un If
pero la cuestion que me recupera un monton de registros al divino boton
y la aplicacion es mas lenta.......
Seria bueno recuperar solo los registros que estan en ese rango de fechas.
Algo estoy usando mal....no se que?
Gracias por tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con SELECT

Publicado por Avellaneda (131 intervenciones) el 04/04/2005 11:41:27
¿Qué conexión estás usando?.
¿Podrías poner el código?
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con SELECT

Publicado por julio paez (48 intervenciones) el 05/04/2005 06:06:49
Estoy usando esta:
Set g_dbBASE = OpenDatabase(App.Path & "\BASEDEDATOS")
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con SELECT

Publicado por Daniel (145 intervenciones) el 05/04/2005 19:04:14
dim Fecha1 as long
Dim Fecha2 as long
fecha1=dateserial(year(FechaDesde), Month(FechaDesde), Day(FechaDesde))
fecha2=dateserial(year(FechaFin), Month(fechaFin), Day(fechaFin))
dim Str as string
Str="SELECT Campo1,Campo2,CampoFecha FROM NombreTabla WHERE CampoFecha >=" & fecha1 & _
" AND CapoFecha <=" & Fecha2 & _
" ORDER BY CampoAOrdenar"
RS.openrecordset(str) : vos sabras como se abre el recordset en DAO. la verdad no me acuerdo.

con la funcion dateserial te devuelve la fecha que microsoft usa internamente para llamar a un día en concreto, asi trabajas con un valor de tipo long, en vb es bastante complicado trabajar con fechas, con esta forma, que seguro no es la mejor, resolví este inconveniente, si te sirve bien
Saludos.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con SELECT

Publicado por julio paez (48 intervenciones) el 07/04/2005 00:25:47
El codigo propuesto es la solucion. Lo implemente y la consulta recupera correctamente los registros que estan dentro del rango. Te agradezco infinitamente por la solucion. Yo ni remotamente investigue por esa linea. Me queda una pregunta flotando en el aire, yo lei bastante sobre VB, entre la bibliografia que poseo tengo un libro "Bases de Datos con Visual Basic" de Jeffrey P. McManus, ademas tengo otros, en todo lo leido, jamás lei ni remotamente de este problema, por eso estaba totalmente perdido. Que raro que todos lo autores que lei ninguno ha escrito una sola linea sobre este problema.
-Saludos y infinitamente gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con SELECT

Publicado por Daniel (145 intervenciones) el 07/04/2005 18:08:31
no te olvides que la mayoria de la bibliografia viene de estados unidos, y por el formato de fecha de este pais es precisamente yyyy/mm/dd asi que ellos ni se enteran de este problema.. .
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con SELECT

Publicado por julio paez (48 intervenciones) el 09/04/2005 05:28:23
Agradezco infinitamente tu ayuda. Ya lo lo solucione con el codigo enviado por Daniel, además me ayudo a tener en cuenta este problemas con las fechas.
Por lo de la clausula Order By, el problema es que ponia parentesis. Ya esta superado.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar