SQL in VBA: Syntax error..

  • Onderwerp starter Onderwerp starter Spelt
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Spelt

Gebruiker
Lid geworden
4 mrt 2010
Berichten
18
Ik ben al een tijdje bezig om ervaring op te doen met MS Access. Momenteel heb ik een klein schoolproject om een downtime registratie op te zetten. Ik heb een stukje SQL in vba gezet, nou heb ik in een form (frm_Selection) twee comboboxes.

De eerste is Date Created, deze kan ik gewoon selecteren. De tweede is Verantwoordelijke, deze geeft dan de melding:

Syntax error (missing operator) in query expression 'tbl_Main downtime.[Stopstand verantwoordelijk]'.

Ik heb een aantal dingen geprobeerd, oa enkele komma's ipv dubbele. Ligt het hier aan de selectiecriteria?
Ik hoop dat iemand een oplossing heeft voor dit probleem..:o

Groet!
 

Bijlagen

Je krijgt de syntax error omdat je een gouden basisregel voor Access niet opgevolgd hebt:
gebruik geen spaties in objectnamen
Objectnamen zijn namen van tabellen, velden, formulieren etc.
Gebruik je wel spaties in objectnamen dan moet je deze in queries, verwijzingen etc. altijd omsluiten met rechte haken: [ en ]
Dat heb je niet gedaan voor de tabelnaam in de query die je dynamisch opbouwt na selectie in de eerste combobox.
 
Laatst bewerkt:
Maar nu krijg ik de volgende foutmelding, ik weet niet hoe ik deze op kan lossen in de formule. (Zie bijlage)

Dit is de VBA code:

Option Compare Database

Private Sub cmb_Verantwoordelijke_Enter()

If IsNull(Me.cmb_DateCreated) Then
MsgBox ("Je dient eerst een datum te selecteren.")
Me.cmb_DateCreated.SetFocus
End If

End Sub

Private Sub cmb_DateCreated_AfterUpdate()

Me.cmb_Verantwoordelijke.RowSource = "SELECT [tbl_Main downtime].[Stopstand verantwoordelijk]" & _
"FROM tbl_Main downtime " & _
"GROUP BY [tbl_Main downtime].[Stopstand verantwoordelijk], [tbl_Main downtime].[Date created] " & _
"HAVING ((([tbl_Main downtime].[Date created]) = '" & Me.cmb_DateCreated & "')) " & _
"ORDER BY [tbl_Main downtime].[Stopstand verantwoordelijk];"
Me.cmb_Verantwoordelijke.Requery

End Sub
Private Sub cmd_historie_Click()
On Error GoTo Err_cmd_historie_Click

Dim stDocName As String
Dim stLinkCriteria As String
Dim strOpenArgs As String

stDocName = "frm_History"
strOpenArgs = Me.cmb_DateCreated & ";" & Me.cmb_Verantwoordelijke
stLinkCriteria = "[Stopstand verantwoordelijk]=" & "'" & Me![cmb_Verantwoordelijke] & "'"

DoCmd.Close
DoCmd.OpenForm stDocName, , , stLinkCriteria, , , strOpenArgs

Exit_cmd_historie_Click:
Exit Sub

Err_cmd_historie_Click:
MsgBox Err.Description
Resume Exit_cmd_historie_Click

End Sub
 

Bijlagen

  • Foutmelding.JPG
    Foutmelding.JPG
    28,2 KB · Weergaven: 61
De JPG bijlage bevat een printscreen van de foutmelding.

Mvg
 
Code:
"FROM tbl_Main downtime " & _

In dit deel ontbreken nog de [ ] om de tabelnaam.
 
Als ik de tabelnaam tussen [ ] zet dan krijg ik de volgende foutmelding:

Data type mismatch in criteria expression.


Dit is de status van de code hoe deze momenteel op is gebouwd:
Option Compare Database

Private Sub cmb_Verantwoordelijke_Enter()

If IsNull(Me.cmb_DateCreated) Then
MsgBox ("Je dient eerst een datum te selecteren.")
Me.cmb_DateCreated.SetFocus
End If

End Sub
Private Sub cmb_DateCreated_AfterUpdate()

Me.cmb_Verantwoordelijke.RowSource = "SELECT [tbl_Main downtime].[Stopstand verantwoordelijk]" & _
"FROM [tbl_Main downtime] " & _
"GROUP BY [tbl_Main downtime].[Stopstand verantwoordelijk], [tbl_Main downtime].[Date created] " & _
"HAVING ((([tbl_Main downtime].[Date created]) = '" & Me.cmb_DateCreated & "')) " & _
"ORDER BY [tbl_Main downtime].[Stopstand verantwoordelijk];"
Me.cmb_Verantwoordelijke.Requery

End Sub


Private Sub cmd_historie_Click()
On Error GoTo Err_cmd_historie_Click

Dim stDocName As String
Dim stLinkCriteria As String
Dim strOpenArgs As String

stDocName = "frm_History"
strOpenArgs = Me.cmb_DateCreated & ";" & Me.cmb_Verantwoordelijke
stLinkCriteria = "[Stopstand verantwoordelijk]=" & "'" & Me![cmb_Verantwoordelijke] & "'"

DoCmd.Close
DoCmd.OpenForm stDocName, , , stLinkCriteria, , , strOpenArgs

Exit_cmd_historie_Click:
Exit Sub

Err_cmd_historie_Click:
MsgBox Err.Description
Resume Exit_cmd_historie_Click

End Sub


Private Sub Form_Close()
DoCmd.OpenForm "Main switchboard", acNormal, "", "", acReadOnly, acNormal
End Sub

Mvg Nick
 
Ik denk dat de fout in de volgende regel zit:

"HAVING ((([tbl_Main downtime].[Date created]) = '" & Me.cmb_DateCreated & "')) " & _

Omdat het hier om een datum gaat moet je de aanhalingstekens vervangen door een hekje, dus:

"HAVING ((([tbl_Main downtime].[Date created]) =#'" & Me.cmb_DateCreated & "#)) " & _

Rebmog
 
Dan krijg ik nog steeds een foutmelding. Check frm_Selection maar eens in de bijlage.
Ik kom er echt niet uit:S
 

Bijlagen

Laatst bewerkt:
Probeer dit eens ?

Code:
"HAVING ((([tbl_Main downtime].[Date created]) =#" & Format(Me.cmb_DateCreated, ("MM/DD/YYYY")) & "#)) " & _

Volgens mij ging er iets scheef met de datumnotatie.

Anders succes....

Frank
 
Dit moet werken:

Code:
Private Sub cmb_DateCreated_AfterUpdate()
Dim strSQL As String

strSQL = "SELECT [Stopstand verantwoordelijk]" & _
    "FROM [tbl_Main downtime] " & _
    "WHERE ([Date created] =CDate(" & CDbl(Me.cmb_DateCreated.Value) & ")) " & _
    "GROUP BY [Stopstand verantwoordelijk], [Date created] " & _
    "ORDER BY [Stopstand verantwoordelijk];"

Me.cmb_Verantwoordelijke.RowSource = strSQL
Me.cmb_Verantwoordelijke.Requery

End Sub

Je hebt anders een probleem met de Amerikaanse datumnotatie; 8-6 wordt dan 6-8 en omgekeerd.
 
Thanks Michel..Wederom heb je mijn vraag opgelost.
Dit project heb ik al een tijdje, ik heb hem bijna klaar:)

Gr
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan