Access - Error 3464

 
Vista:
sin imagen de perfil

Error 3464

Publicado por Pedro Martinez (1 intervención) el 23/08/2022 17:48:11
Private Sub Bot_Click()
If Bot.Value = True Then

Dim db As Database
Dim rst As Recordset
Dim str As String

Set db = CurrentDb

str = "SELECT [FechayHora].[Fecha], Sum([Almacen.Inv]) AS [SumaDeInv] " & _
"FROM [FechayHora] INNER JOIN [Almacen] ON [FechayHora].[Fecha] = [Almacen].[Fecha] " & _
"GROUP BY [FechayHora].[Fecha] " & _
" HAVING (((FechayHora.Fecha)='" & Fecha.Value & "'));"


Set rst = db.OpenRecordset(str) aqui me da el error

Totaldia.Value = rst!SumaDeInv
Else
Totaldia.Value = ""
End If

End Sub
me da error 3464 vo coinciden los tipos
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

Error 3464

Publicado por Anonimo (3316 intervenciones) el 23/08/2022 19:08:08
Siento tener que darle la razón a Access, en la condición hay una discordancia:

.... HAVING (((FechayHora.Fecha)='" & Fecha.Value & "'));

Si el campo FechayHora.Fecha es un dato de tipo Fecha no se le puede comparar con un texto (el marcador que esta utilizando es la comilla simple ==> texto y el que debería utilizarse es la almohadilla ==> fecha);

1
.... HAVING (((FechayHora.Fecha)=#" & Fecha & "#));"

En VBA las fechas en formato MM/DD/YYYY (mes-día-año), si en el formulario esta en formato europeo (día-mes-año), dos opciones:

.- Se le aplica el formato americano:
1
....HAVING FechayHora.Fecha= #" & format(Fecha,"mm/dd/yyyy") & "#)" 

.- Se le aplica el formato universal (numero):
1
... HAVING FechayHora.Fecha =" & CDbl(CDate(Fecha)))"

CDate convierte un texto que representa a una fecha del formato local al americano
CDbl convierte una fecha (en formato Access) a un numero equivalente (que es el dato real que se guarda en la tabla).
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