Jag vill ha så att standardvärdet för fältet Datum i ett formulär ska ha samma värde som den senaste inmatningen, så jag skapade en fråga "senaste datum"
SELECT TOP 1 Inköp.Datum AS Senast
FROM Inköp
ORDER BY Inköp.ID DESC;
Och då får jag mycket riktigt veta vilket datum den senaste inmatningen har.
Men när jag sedan går in i designläget för formuläret och försöker koppla frågan till fältet, så att standardvärdet för datum är =[senaste datum]![Senast] så får jag bara nått skumt värde i stil med "#Namn?" i stället för datumet. Hur fixar man det?
#Namn? betyder oftast att man stavat fel på fältnamnet, men det verkar inte vara problemet i detta fall. Förmodligen så måste du basera formuläret på frågan. D.v.s. att du sätter formulärets Record Source till din fråga och sedan i fältet så skriver du =[Senast].
Jag brukar sköta saker som dessa med lite VBA och det skulle se ut såhär för dig.
Private Sub Form_Open(Cancel As Integer)
Dim objCmd As ADODB.Command
Set objCmd = New ADODB.Command
objCmd.ActiveConnection = CurrentProject.Connection
objCmd.CommandType = adCmdStoredProcedure
objCmd.CommandText = "[senaste datum]"
Me.Datum = objCmd.Execute.GetString
objCmd.Close
Set objCmd = Nothing
End Sub
Jag skulle också ge frågan ett annat namn, föslagsvis: qryLastDate.
Jag testade att lägga in koden, men när jag öppnar formuläret så öppnas VBA-editorn och jag får jag ett felmedelande: "Kompileringsfel: det går inte att hitta metoden eller datamedlemmen". Sedan är ".Close" i objCmd.Close markerad.