Access - Problema para cargar una consulta en una Listbox

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Problema para cargar una consulta en una Listbox

Publicado por Bacco (3 intervenciones) el 06/08/2019 18:47:31
Hola buenas tardes!

Soy nuevo en este foro y acudo al mismo para buscar un poco de luz para un problema, que tal vez su solución es sencilla pero no logro dar con ella.

Tengo un formulario que busca entre 2 fechas a través de 2 textbox y un botón que contiene el código vba.

Al presionar el botón me hace la búsqueda pero no logro que me aparezca en el cuadro listbox que tengo.

Cabe mencionar que antes si me lo realizaba, pero después de borrar todos los registros que grabe para realizar pruebas de mi tabla "Cobros", ya no me carga la consulta a la listbox.

Volví a crear la tabla y no se soluciono.
Volví a crear una nueva aplicación independiente de mi proyecto y tampoco se soluciono


Pego el codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub busca_fecha_Click()
 
    Dim Consulta As String
    Dim i As Integer
    Dim Sumatotal As Double
 
    If IsNull(Me.FechaInicio) And IsNull(Me.fechafinal) Then
        MsgBox "DEBE INTRODUCIR LAS FECHAS", vbInformation, "S.B.D."
        Me.fechaini.SetFocus
        Exit Sub
    End If
 
    If Me.FechaInicio > Me.fechafinal Then
        MsgBox "FECHA 'Inicio' DEBE SER MENOR A FECHA 'Final'", vbInformation, "Aviso"
        Me.FechaInicio.SetFocus
    Else
        Consulta = "SELECT Fecha,CartaBNCant,CartaBNTot,CartaColorCant,CartaColorTot,OficioBNCant,OficioBNTot,OficioColorCant,OficioColorTot,InternetCant,InternetTot,CobTot FROM Cobros WHERE Fecha BETWEEN #" _
        & Me.FechaInicio & "# AND #" & Me.fechafinal & "#"
         Me.Lista.RowSource = Consulta
         Me.Lista.Requery
    End If
 
 
    For i = 0 To Me.Lista.ListCount - 1
        Sumatotal = Nz(Sumatotal, 0) + Me.Lista.Column(11, i)
    Next i
 
    Me.txttotal = Sumatotal
 
End Sub

Serian tan amables de asesorarme por favor?
Gracias
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

Problema para cargar una consulta en una Listbox

Publicado por Anonimo (3315 intervenciones) el 06/08/2019 19:31:59
Lo corregiría en dos puntos,

.- Uno es la primera validación de los datos (las fechas), en ella se exige que ambas sean null para dar error
.- Las fechas se pueden validar como fechas y en el caso actual no se tiene en cuenta.

Como la reformaría yo:
original:
1
If IsNull(Me.FechaInicio) And IsNull(Me.fechafinal) Then

modificada:
1
If Not IsDate(Me.FechaInicio) OR Not IsDate(Me.fechafinal) Then

Así se valida que sean fechas correctas y basta que una de ellas no lo sea para exigirla (mas tarde se utilizan ambas)

Lo que puede causar la ausencia de datos son .... las fechas
En el código mostrado se utiliza la clausula Between a la que le encanta que los parámetros que se le pasen sean números -las fechas internamente lo son- pero 'exteriormente' admiten la libre interpretación y en VBA Access las interpreta con formato americano (mm-dd-aaaa) y posiblemente se le 'pasan' en europeo (dd-mm-aaaa)

Si se utiliza la función 'FORMAT' se las puede formatear de forma correcta , pero quien mejor lo hace es la función CDate, si queremos reafirmar el dato, podemos convertirlo a numero (función CDbl) y no se tendrá problemas cuando se cambie de maquina (otro ordenador, otro país ....) o incluso de versión.

original:
1
.FROM Cobros WHERE Fecha BETWEEN #" & Me.FechaInicio & "# AND #" & Me.fechafinal & "#" 

corregido:
1
… FROM Cobros WHERE Fecha BETWEEN CDbl(CDate(" & Me.FechaInicio & ")) AND CDbl(CDate(" & Me.fechafinal & "))"
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
sin imagen de perfil
Val: 5
Ha aumentado su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Problema para cargar una consulta en una Listbox

Publicado por Bacco (3 intervenciones) el 06/08/2019 22:12:36
Hola =)

Muchas gracias por tu amable respuesta. Hice los cambios que me propones y sigue sin enviarme datos a la listbox. No se si el problema sea en el código del botón guardar del formulario donde doy de alta los registros, que son filtrados por fechas este formulario que no me los muestra en un listbox.

Te pego el codigo del boton guardar donde doy de altas los registros en otro formulario

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim resp As String
Dim Tabla As Recordset
 
Set Tabla = CurrentDb.OpenRecordset("cobros")
Tabla.AddNew
 
Tabla!Fecha = Format(Me.DFecha, "dd/mm/yyyy")
Tabla!TCarta = Me.txtCarta.Value
Tabla!CartaBNCant = Me.txtCartaBNCant.Value
Tabla!CartaBNTot = Me.txtCartaBNTot.Value
Tabla!CartaColorCant = Me.txtCartaColorCant.Value
Tabla!CartaColorTot = Me.txtCartaColorTot.Value
Tabla!TOficio = Me.txtTOficio.Value
Tabla!OficioBNCant = Me.txtOficioBNCant.Value
Tabla!OficioBNTot = Me.txtOficioBNTot.Value
Tabla!OficioColorCant = Me.txtOficioColorCant.Value
Tabla!OficioColorTot = Me.txtOficioColorTot.Value
Tabla!Internet = Me.txtInternet.Value
Tabla!InternetCant = Me.txtInternetCant.Value
Tabla!InternetTot = Me.txtInternetTot.Value
Tabla!CobTot = Me.CobTotal.Value
 
Tabla.Update
Tabla.Close
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
sin imagen de perfil
Val: 5
Ha aumentado su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Problema para cargar una consulta en una Listbox

Publicado por Bacco (3 intervenciones) el 07/08/2019 00:31:21
Hola de nuevo!

Ya lo resolví teniendo que usar la funcion FORMAT.

Esta es la forma que me sugeriste:
FROM Cobros WHERE Fecha BETWEEN CDbl(CDate(" & Me.FechaInicio & ")) AND CDbl(CDate(" & Me.fechafinal & "))"
y no me funciono.

Lo que hice fue:
FROM Cobros WHERE Fecha BETWEEN #" & Format(Me.FechaInicio, "mm/dd/yyyy") & "# AND #" & Format(Me.fechafinal, "mm/dd/yyyy") & "#"

Tuve que cambiar de "dd/mm/yyy" a "mm/dd/yyyy" aunque en la base o presentacion de la fecha en un formulario se vea en "dd/mm/yyyy"

Agradezco tu atencion prestada y cualquier comentario

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

Problema para cargar una consulta en una Listbox

Publicado por Anonimo (3315 intervenciones) el 07/08/2019 00:37:12
Lo siento, algo se ha cruzado que me ha hecho perder el punto de orientación.

Lo primero: saber si la SQL devuelve datos
.- lo ideal es poner una condición que realmente se pueda dar, no es 'hacer trampa' es verificar una realidad

Para ver si la culpa es del cuadro de lista o de la SQL, basta poner un punto de interrupción (o la orden STOP) inmediatamente antes de asignársela al cuadro de lista, tras ello en la ventana de inmediato se escribiría esto:
?consulta

Access responderá con el texto que mandara al analizador de código para su ejecución con todas las variables traducidas a `parámetros reales', una ojeada puede detectar el fallo, en el caso de no apreciar nada anormal …
El paso siguiente será copiar el texto INTEGRO y pegarlo en una consulta nueva -puesta en su vista SQL- añadir un punto y coma al final (para que Access reconozca que finalizo el texto que conforma la SQL) y ejecutarla …
Si no devuelve nada es que algún parámetro no es correcto (por eso lo de utilizar datos que realmente existan).

Ahora comienza el cruce de caminos ¿Qué tiene que ver mostrar una serie de datos en un cuadro de lista, con insertar registros en una tabla?

Si la pretensión final es añadirlos en una tabla, esa misma consulta de selección (en el generador grafico de consultas) se le indica que 'ahora es de datos anexados', preguntara por la tabla destino y permitirá (bajo cada campo de la consulta y en su vista diseño) seleccionar a que campo de la tabla destino se enlazara cada dato de la consulta ….
Se ejecuta y si funciona, no hay mas que copiar esa SQL que Access ha generado …
Con la experiencia adquirida retocarla para que pueda ser ejecutada desde VBA (y el cuadro de lista pasa a ser un cuadro sin lista ni destino)
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