Ver Mensaje Individual
  #12 (permalink)  
Antiguo 09/03/2008, 17:45
Avatar de juancho24
juancho24
 
Fecha de Ingreso: octubre-2007
Mensajes: 101
Antigüedad: 17 años, 5 meses
Puntos: 1
Pregunta Re: busqueda por rango de fecha

Gracias a todos por la ayuda que me han dado, espero porfavor me sigan ayudando con lo siguiente, miren ya no me salen errores en codigo, me muestra datos buscados en la grilla pero no todos, solo me muestra el primer dato de la tabla, me muestra la linea del primer registro, a k se puede deber esto?

ayudenme porfavor

les dejo el ultimo codigo que tengo

gracias

Private Sub Command1_Click()


Dim sql As String

sql = " SELECT DATOSVISITADOR.RutVisitador, DATOSVISITADOR.DvVisitador, DATOSVISITADOR.NombreVisitador, DATOSCLIENTE.RutCliente, DATOSCLIENTE.DvCliente, DATOSCLIENTE.NombreCliente, OBSERVACIONESGENERALES.MontoCredito, OBSERVACIONESGENERALES.PlazoCredito, OBSERVACIONESGENERALES.NombrePersonaAtendio, OBSERVACIONESGENERALES.HoraVisita, OBSERVACIONESGENERALES.Fecha "
sql = sql & "FROM (DATOSCLIENTE INNER JOIN (DATOSVISITADOR INNER JOIN VISITAS ON (DATOSVISITADOR.DvVisitador = VISITAS.DvVisitador) AND (DATOSVISITADOR.RutVisitador = VISITAS.RutVisitador)) ON (DATOSCLIENTE.ID = VISITAS.ID) AND (DATOSCLIENTE.DvCliente = VISITAS.DvCliente) AND (DATOSCLIENTE.RutCliente = VISITAS.RutCliente)) LEFT JOIN OBSERVACIONESGENERALES ON (VISITAS.DvCliente = OBSERVACIONESGENERALES.DvCliente) AND (VISITAS.RutCliente = OBSERVACIONESGENERALES.RutCliente) AND (VISITAS.ID = OBSERVACIONESGENERALES.ID)"
rs1.Open sql & "WHERE OBSERVACIONESGENERALES.FECHA BETWEEN #" & txtFechaInicio & "# AND #" & txtfechafin & "#", cnn1, adOpenDynamic, adLockOptimistic

If rs1.BOF = False And rs1.EOF = False Then
If txtFechaInicio.Text <> "" Or txtfechafin.Text <> "" Then
If rs1("fecha") >= txtFechaInicio.Text And rs1("fecha") <= txtfechafin.Text Then
rs1.MoveNext
Call CargarDataGrid(DataGrid1)
Else
MsgBox ("no hay datos para cargar"), vbInformation
End If
Else
MsgBox ("Debe seleccionar un dato"), vbCritical
com_grupo.Enabled = True
End If
Else
MsgBox ("La tabla no tiene registros"), vbCritical

End If

End Sub





Cita:
Iniciado por Avellaneda Ver Mensaje
Es por el punto y coma que pones al final de la sentencia sql. Además debes quitar los paréntesis en la instrucción Open del recordset. En fin, prueba poniendo el código así:

Código:
Dim sql As String
If Txtfechainicio.Text = "" Or Txtfechafin.Text = "" Then
    MsgBox ("Debe seleccionar un dato"), vbCritical
    com_grupo.Enabled = True
    Exit Sub
End If
rs1.CursorLocation = adUseClient
sql = " SELECT DATOSVISITADOR.RutVisitador, DATOSVISITADOR.DvVisitador, DATOSVISITADOR.NombreVisitador, DATOSCLIENTE.RutCliente, DATOSCLIENTE.DvCliente, DATOSCLIENTE.NombreCliente, OBSERVACIONESGENERALES.MontoCredito, OBSERVACIONESGENERALES.PlazoCredito, OBSERVACIONESGENERALES.NombrePersonaAtendio, OBSERVACIONESGENERALES.HoraVisita, OBSERVACIONESGENERALES.Fecha "
sql = sql & "FROM (DATOSCLIENTE INNER JOIN (DATOSVISITADOR INNER JOIN VISITAS ON (DATOSVISITADOR.DvVisitador = VISITAS.DvVisitador) AND (DATOSVISITADOR.RutVisitador = VISITAS.RutVisitador)) ON (DATOSCLIENTE.ID = VISITAS.ID) AND (DATOSCLIENTE.DvCliente = VISITAS.DvCliente) AND (DATOSCLIENTE.RutCliente = VISITAS.RutCliente)) LEFT JOIN OBSERVACIONESGENERALES ON (VISITAS.DvCliente = OBSERVACIONESGENERALES.DvCliente) AND (VISITAS.RutCliente = OBSERVACIONESGENERALES.RutCliente) AND (VISITAS.ID = OBSERVACIONESGENERALES.ID)"
rs1.Open sql & "WHERE OBSERVACIONESGENERALES.FECHA BETWEEN #" & Txtfechainicio & "# AND #" & Txtfechafin & "#", cnn1, adOpenDynamic, adLockOptimistic

If rs1.RecordCount > 0 Then
    Call CargarDataGrid(DataGrid1)
Else
    MsgBox ("no hay datos para cargar"), vbInformation
End If
Aún así, creo que la sentencia es demasiado recargada y con demasiadas comparaciones:

(DATOSCLIENTE.ID = VISITAS.ID) AND (DATOSCLIENTE.DvCliente = VISITAS.DvCliente) AND (DATOSCLIENTE.RutCliente = VISITAS.RutCliente)

¿No sería igual comparar solamente el ID? los demás campos, se supone que siempre son iguales.