Problemen met een tabel te vullen via VBA

Status
Niet open voor verdere reacties.

Don Pascuale

Gebruiker
Lid geworden
8 jan 2010
Berichten
5
Hallo iedereen,

Ik ben bezig met een klachtenopvolgingssysteempje access.
Ik heb mijn code geschreven met de nodige controles.
Ik heb dit in vorige versies van acces al verschillende keren gedaan zonder problemen.
Als ik nu mijn code laat runnen krijg ik geen enkele foutmelding en toch worden de gegevens niet opgeslagen in mijn tabel. Het vreemde is dat is heel soms wel gaat als ik een procedure volg met de wijze van het opslaan van mijn tabel.
Hier is mijn code, die ik normaal altijd gebruik om een tabel met VBA te vullen :

Private Sub btnVoegToe_Click()
Dim MyRec As DAO.Recordset
Dim MyDB As DAO.Database
Dim newId As Integer

Set MyDB = CurrentDb
Set MyRec = MyDB.OpenRecordset("select top 1 Id from Klachten order by Id desc")
If Not MyRec.EOF Then
newId = MyRec![Id] + 1
End If

MyRec.Close
MyDB.Close


If Trim(txtOmschrijving & "") = vbNullString Then
MsgBox "Omschrijf de klacht."
ElseIf Trim(ddlAardKlacht.Value & "") = vbNullString Then
MsgBox "Wat is de aard van de klacht?"
ElseIf Trim(ddlGebruiker.Value & "") = vbNullString Then
MsgBox "Wie meldt de klacht?"
ElseIf Trim(ddlAfdeling.Value & "") = vbNullString Then
MsgBox "Van welke afdeling komt de klacht?"
ElseIf Trim(ddlStatus.Value & "") = vbNullString Then
MsgBox "Welke status heeft de klacht?"
ElseIf Trim(ddlOorzaak.Value & "") = vbNullString Then
MsgBox "Wat is de oorzaak van de klacht?"
ElseIf Trim(txtDatum & "") = vbNullString Then
MsgBox "Wanneer deed klacht zich voor?"
Else
Dim splitDatum As Variant
Dim corrdatum As String

splitDatum = Split(CStr(txtDatum), "-")
corrdatum = splitDatum(1) & "-" & splitDatum(0) & "-" & splitDatum(2)

Set MyDB = CurrentDb
MyDB.Execute ("insert into Klachten values(" & newId & ",'" & txtOmschrijving & "'," & ddlAardKlacht & "," & ddlGebruiker & "," & ddlAfdeling & "," & ddlStatus & "," & ddlOorzaak & ",#" & corrdatum & "#)")
MyDB.Close

txtOmschrijving = ""
ddlAardKlacht = ""
ddlGebruiker = ""
ddlAfdeling = ""
ddlStatus = ""
ddlOorzaak = ""
txtDatum = ""


MsgBox "Klacht opgenomen in het systeem!"

End If



End Sub

Wat doe ik hier verkeerd?
 
Doe ons een lol, en maak de code op met de CODE tag (knop #), dan is hij een stuk leesbaarder... Ondertussen kijk ik even naar de code :)
 
Ik zie er weinig verkeerd aan, al zou ik de datum op een andere manier oplossen...

Code:
Private Sub btnVoegToe_Click()
Dim MyRec As DAO.Recordset
Dim MyDB As DAO.Database
Dim newId As Integer
Dim msg As String
Const strcJetDate = "\#mm\/dd\/yyyy\#"  'Do NOT change it to match your local settings.

	Set MyDB = CurrentDb
	Set MyRec = MyDB.OpenRecordset("select top 1 Id from Klachten order by Id desc")
	If Not MyRec.EOF Then
		newId = MyRec![Id] + 1
	End If
	MyRec.Close
	set MyRec=Nothing

	msg=""
	If Trim(txtOmschrijving & "") = vbNullString Then
		msg="De volgende velden zijn niet ingevuld: " & vbcrlf
		msg=msg &  "Omschrijf de klacht." & vbcrlf
	ElseIf Trim(ddlAardKlacht.Value & "") = vbNullString Then
		msg=msg & "Wat is de aard van de klacht?" & vbcrlf
	ElseIf Trim(ddlGebruiker.Value & "") = vbNullString Then
		msg=msg &"Wie meldt de klacht?" & vbcrlf
	ElseIf Trim(ddlAfdeling.Value & "") = vbNullString Then
		msg=msg &"Van welke afdeling komt de klacht?" & vbcrlf
	ElseIf Trim(ddlStatus.Value & "") = vbNullString Then
		msg=msg &"Welke status heeft de klacht?" & vbcrlf
	ElseIf Trim(ddlOorzaak.Value & "") = vbNullString Then
		msg=msg &"Wat is de oorzaak van de klacht?" & vbcrlf
	ElseIf Trim(txtDatum & "") = vbNullString Then
		msg=msg &"Wanneer deed klacht zich voor?" & vbcrlf
	End If

	If msg <> "" Then
		MsgBox msg
		Exit sub
	Else
		Dim splitDatum As Variant
		Dim corrdatum As Date
		corrdatum = CDate(txtDatum)
		MyDB.Execute ("INSERT INTO Klachten " _
			& "VALUES(" & newId & ",'" & txtOmschrijving & "'," & ddlAardKlacht & "," & ddlGebruiker & "," & ddlAfdeling & "," _
			& ddlStatus & "," & ddlOorzaak & "," & Format(corrdatum, strcJetDate) & ")")
		MyDB.Close
		txtOmschrijving = ""
		ddlAardKlacht = ""
		ddlGebruiker = ""
		ddlAfdeling = ""
		ddlStatus = ""
		ddlOorzaak = ""
		txtDatum = ""
		MsgBox "Klacht opgenomen in het systeem!"
	End If

	MyDB.Close
	set MyDB=Nothing

End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan