Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

rango de fechas

Estas en el tema de rango de fechas en el foro de Bases de Datos General en Foros del Web. hola como estas como veran soy nuevo y mi problema es el siguiente estoy utilizando ado(conexion) y ado(componente) en visual basic, la base de datos ...
  #1 (permalink)  
Antiguo 01/01/2005, 10:03
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 11 meses
Puntos: 0
rango de fechas

hola como estas como veran soy nuevo y mi problema es el siguiente estoy utilizando ado(conexion) y ado(componente) en visual basic, la base de datos esta en sql server 2000 hasta el momento todo bien pero al querer realizar un recordset por rango de fechas me muestra el siguiente error

incorrect syntax near '#'

el cosigo es el siguiente:

rsinicial.Open "SELECT fregistro FROM registrardatos where fregistro BETWEEN #" & Fecha1 & "# and #" & fecha2 & "#", con, adOpenDynamic, adLockReadOnly


donde fregistro campo de la tabla

registrardatos es una vista en sqlserver 2000

fecha1 variable de tipo date y formato convertido a yyyy,mm,dd
fecha2 = a fecha

con es mi conexion con sql server

por favor ayudame me super urge el sistema lo tengo que entregar el dia 3-01-2005

Última edición por xochitemol; 01/01/2005 a las 10:04
  #2 (permalink)  
Antiguo 01/01/2005, 12:37
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 20 años
Puntos: 0
Hola que tal una pregunta que quiero hacer porque usas el # con esos concatenas la consulta? porque el error es que tienes un error de sintaxis y lo mas probable sea por el #.

Suerte y Salu2.

Bye

FELIZ 2005
__________________
Atte. Mohamed :aplauso:
  #3 (permalink)  
Antiguo 01/01/2005, 23:24
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 11 meses
Puntos: 0
de hecho para poner o leer una fecha como lo dije fecha1 y fecha2 son variables de tipo date donde guardo los datos introducidos en un text y posteriormente las paso al formato "yyyy/mm/dd","dd/mm/yyyy" y no funciona como sabras las fechas son #25/1080# para leer datos de tipo fecha ya que no se puede leer como un string.

si quieres te paso el codigo completo el cual es el siguiente:

Private Sub Command1_Click()
Dim Fecha1 As Date
Dim fecha2 As Date
Dim rsinicial As ADOdb.Recordset
Dim rsfiltrado As ADOdb.Recordset

If (Finicio = "__/__/____") Then
MsgBox "Fecha Inicio del Reporte", vbInformation
Finicio.SetFocus
Exit Sub
End If
If Ftermino = "__/__/____" Then
MsgBox "Fecha Termino del Reporte", vbInformation
Ftermino.SetFocus
Exit Sub
End If
'Fecha1 = Format(ftermino, "DD/mm/yyyy")
'fecha2 = Format(ftermino, "dd/mm/yyyy")
Fecha1 = Format$(Finicio, "dd/mm/yyyy")
fecha2 = Format$(Ftermino, "dd/mm/yyyy")
conexion
Set rsinicial = New ADOdb.Recordset
Set rsfiltrado = New ADOdb.Recordset
rsinicial.Open "SELECT * FROM registrardatos WHERE numcontrol BETWEEN " & Fecha1 & " and " & fecha2 & ", con, adOpenDynamic, adLockReadOnly"
'rsinicial.Open "SELECT * FROM registrardatos WHERE numcontrol BETWEEN '" & 041h &"' and '0410h'", con, adOpenDynamic, adLockReadOnly
'BETWEEN #" & Fecha1 & "# and #" & fecha2 & "#")
Set rsfiltrado = rsinicial
If rsfiltrado.EOF Then
MsgBox "No hay datos registrados ntre el rango de fechas", vbCritical
Exit Sub
Else
If Not (rsfiltrado.EOF And rsfiltrado.BOF) Then
Do While Not rsfiltrado.EOF
Form5.List1.AddItem rsfiltrado("fregistro")
rsfiltrado.MoveNext
Form5.Label20.Caption = Form5.List1.ListCount
Loop
Exit Sub
End If
End If
End Sub

todo esto en un commandbutton

Última edición por xochitemol; 01/01/2005 a las 23:30
  #4 (permalink)  
Antiguo 03/01/2005, 02:33
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Pon las fechas entre comillas y no entre almohadillas, las almohadillas se usan en Access, en SQL Server, lo que hay que utilizar son las comillas simples

rsinicial.Open "SELECT fregistro FROM registrardatos where fregistro BETWEEN '" & Fecha1 & "' and '" & fecha2 & "'", con, adOpenDynamic, adLockReadOnly

Un saludo
  #5 (permalink)  
Antiguo 03/01/2005, 07:56
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 11 meses
Puntos: 0
Desacuerdo No funciona

hola mira si le pongo entre commilas simplemente me dide que el campo fregistro no existe como ves y me super urge la fecha se guarda en la dase de datos con si siguiente formato "dd/mm/yyyy" no se si me pudieras ayudaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaar
  #6 (permalink)  
Antiguo 03/01/2005, 10:27
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
El formato es lo de menos, un campo fecha siempre es un campo fecha, y como lo veas es independiente de como se almacene, porque de tus mensajes anteriores deduzco que lo está almacenando en un campo fecha.

El mensaje de error, no puede ser más explícito, si dice que el campo fregistro no existe, pues será que no se llama así, y te falta algo en el nombre eso no lo puedo saber, porque no tengo la tabla para mirarla.

Comprueba que en la tabla registrardatos tienes un campo llamado fregistro, no se me ocurre mucho más....
  #7 (permalink)  
Antiguo 04/01/2005, 01:18
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 11 meses
Puntos: 0
Hola te mando una imagen para que veas como esta formada

hola de hecho es una vista de dnode quiero sacar el daro pero en esa vista si existe el campo fregistro ahora bien no se como he probado directamente con la tabla y con la vista pero de ninguna manera me saca el resultado si quieres te puedo pasar el codigo completo de ese modulo
  #8 (permalink)  
Antiguo 04/01/2005, 03:01
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Mejor pasa el script de la tabla y el de la vista, luego, la select que estás intentando hacer, e intento ver que puede ser lo que va raro...


Un saludo
  #9 (permalink)  
Antiguo 05/01/2005, 00:25
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 11 meses
Puntos: 0
O ok te paso el codigo de la vista y los procedimientos

'**********************
ok el codigo de la vista en la base es union de dos tablas pero la segunda no me importa como veras el campo fregistro esta marcado en negrita ya que mencionabas que no existe:
'****************

CREATE VIEW dbo.registrardatos
AS
SELECT dbo.datosper.nombre, dbo.datosper.carrera, dbo.datosper.semestre, dbo.datosper.escuela, dbo.datosper.direscuela, dbo.datosper.director,
dbo.datosper.programa, dbo.datosper.objetoservicio, dbo.datosper.finicio, dbo.datosper.ftermino, dbo.datosper.horas, dbo.datosper.dependencia,
dbo.datosper.dirdepen, dbo.datosper.actividades, dbo.datosper.fregistro, dbo.datosper.fentrega, dbo.datosper.numcontrol, dbo.datosper.responsable,
dbo.datosper.cargoresponsable, dbo.datosper.diasprestacion, dbo.datosper.horario, dbo.datosper.dia, dbo.datosper.mes, dbo.datosper.anio,
dbo.datosper.paterno, dbo.datosper.materno, dbo.datosper.nombres, dbo.datosper.unidadad, dbo.datosper.numero, dbo.datosper.operativo,
dbo.reportes.nombrepres, dbo.reportes.fechareporte1, dbo.reportes.horasreporte1, dbo.reportes.fechareporte2, dbo.reportes.horasreporte2,
dbo.reportes.fechareporte3, dbo.reportes.horasreporte3, dbo.reportes.fechareporte4, dbo.reportes.horasreporte4, dbo.reportes.fechareporte5,
dbo.reportes.horasreporte5, dbo.reportes.fechareporte6, dbo.reportes.horasreporte6, dbo.reportes.fechareporte7, dbo.reportes.horasreporte7,
dbo.reportes.fechareporte8, dbo.reportes.horasreporte8, dbo.reportes.fechareporte9, dbo.reportes.horasreporte9, dbo.reportes.fechareporte10,
dbo.reportes.horasreporte10, dbo.reportes.fechareporte11, dbo.reportes.horasreporte11, dbo.reportes.fechareporte12, dbo.reportes.horasreporte12,
dbo.reportes.numerocontrol, dbo.reportes.statuspres, dbo.reportes.horascubiertas, dbo.reportes.nombrecorto, dbo.reportes.apaterno,
dbo.reportes.amaterno
FROM dbo.datosper INNER JOIN
dbo.reportes ON dbo.datosper.numcontrol = dbo.reportes.numerocontrol

'*****************************
ahora bien los datos los meto en un texte que al perder el foco hacen lo siguiente en ambos campos para validar las fechas
'*************************************
Private Sub finicio_LostFocus()
Dim startdate As Variant
Dim validDate As Date
If finicio = "__/__/____" Then
Exit Sub
Else
Do
startdate = finicio
If IsDate(startdate) Or startdate = "__/__/____" Then
validDate = True
fechainiciorango = DateValue(finicio)
ftermino.SetFocus
Exit Sub
Else
validDate = False
MsgBox "[ " & startdate & " ] No Es Una Fecha Valida" & vbCrLf _
& " Escriba una fecha válida: Día/Mes/Año", vbCritical
finicio = "__/__/____"
finicio.SetFocus
Exit Sub
End If
Loop Until validDate
Exit Sub
End If

End Sub

'**********************************
ahora el procedimiento ya lo he puesto pero si esta arriba
'***********************************
  #10 (permalink)  
Antiguo 05/01/2005, 03:16
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Te dije que no estaba, porque según tu mensaje, ese campo no existía, nada más, ahora tal y como tienes el código, cuál es el problema, que no salen datos, o que te sigue dando el error de que el campo fregistro no existe
  #11 (permalink)  
Antiguo 05/01/2005, 13:01
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 11 meses
Puntos: 0
De acuerdo Gracias TERI ya que tu fuiste quien respondio

ya se se resolvio el problema con las siguiente instruccion espero les sirva ,en mi caso con esto si muestra los datos pero claro no lo he probado con acces ya que la base que ocupo esta en sql server 2000.

aqui estan las instrucion
'*****************************
'paso codigo completo para ver com funciona
'*******************************

Private Sub Command1_Click()
Dim fecha1 As String
Dim fecha2 As String
Dim rsinicial As ADODB.Recordset
Dim rsfiltrado As ADODB.Recordset

If (Finicio = "__/__/____") Then
MsgBox "Fecha Inicio del Reporte", vbInformation
Finicio.SetFocus
Exit Sub
End If
If Ftermino = "__/__/____" Then
MsgBox "Fecha Termino del Reporte", vbInformation
Ftermino.SetFocus
Exit Sub
End If
fecha1 = Format$(fechainiciorango, "yyyy-mm-dd")
fecha2 = Format$(fechaterminorango, "yyyy-mm-dd")
conexion
Set rsinicial = New ADODB.Recordset
Set rsfiltrado = New ADODB.Recordset
rsinicial.Open "SELECT *FROM registrardatos WHERE(fregistro BETWEEN CONVERT(DATETIME,'" & fecha1 & "') AND CONVERT(DATETIME,'" & fecha2 & "'))", con, adOpenDynamic, adLockReadOnly
Set rsfiltrado = rsinicial
If rsfiltrado.EOF Then
MsgBox "No hay datos registrados ntre el rango de fechas", vbCritical
Exit Sub
Else
cont = 1
If Not (rsfiltrado.EOF And rsfiltrado.BOF) Then
Do While Not rsfiltrado.EOF
grid.Rows = grid.Row + cont
grid.TextMatrix(cont, 0) = IIf(IsNull(rsfiltrado(0)), "Campo sin Registro", Trim(rsfiltrado(0))) 'nombre
rsfiltrado.MoveNext
cont = cont + 1
Loop
Exit Sub
End If
End If
End Sub

espero que con esto ayude a alguien de antemano muchas muchas gracias

si en algo te puedo ayudar TERI cuenta con ellor

Última edición por xochitemol; 05/01/2005 a las 13:04 Razón: modifiaccion
  #12 (permalink)  
Antiguo 07/01/2005, 03:04
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Sólo te faltó decir, donde te fallaba, y qué lo resolvió...

Supongo que con el convert solucionaste el problema...
  #13 (permalink)  
Antiguo 22/01/2005, 01:44
 
Fecha de Ingreso: diciembre-2004
Mensajes: 79
Antigüedad: 19 años, 11 meses
Puntos: 0
lo siento se que ya paso tiempo y de verdad lo sietno gracias y no entendi a tu pregunta, oye me podrias ayudar con una cuestion ahora el problema es poder mandar una imagen a un documento de word desde visual como ves cuidate y nos vemos por cierto me gustaria saber de donde eres o algo asi

Última edición por xochitemol; 22/01/2005 a las 01:50
  #14 (permalink)  
Antiguo 24/01/2005, 09:12
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años, 7 meses
Puntos: 0
Lo mejor es aprovecharse de la programación para objetos de Microsoft, declaras una variable como Object, o si agregas las referencias de Word, directamente como Word.document y utilizas el código standard de VBA.

Aprovecha las macros que se graban solas, donde te pone el código que ha utilizado

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:40.