
09/03/2008, 17:45
|
 | | | Fecha de Ingreso: octubre-2007
Mensajes: 101
Antigüedad: 17 años, 5 meses Puntos: 1 | |
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 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. |