Hallo

Welkom, Gast. Alsjeblieft inloggen of registreren.

Recent

194 gasten, 0 leden

Welkom, Gast. Alsjeblieft inloggen of registreren.

18 april 2024, 16:18:02

Login met gebruikersnaam, wachtwoord en sessielengte

Nieuws

Welkom op het vernieuwde NL Computer Forum!

Auteur Topic: VBA in Access gaat mis  (gelezen 16451 keer)

0 leden en 1 gast bekijken dit topic.

Offline NLCOMP

  • Forumheld
  • *****
  • Berichten: 14.666
    • NL Computer Forum
VBA in Access gaat mis
« Gepost op: 11 november 2009, 22:49:52 »
Bericht 1 van 4

NL Computer Forum ~ Word, Excel & Office
Van:MEDiXDatum:04-07-2004
Aan:AllenMsgID:1439.1
Onderwerp:VBA in Access gaat misForum:ws-nlcomputer
Als ik een plaats invoer in het comboveld die nog niet in de tabel 'Plaats' bestaat wordt de volgende procedure geactiveerd:

Private Sub ID_Plaats_NotInList(NewData As String, Response As Integer)

Response = acDataErrContinue

If MsgBox("De plaats " & NewData & " staat nog niet in de Plaats-tabel. Toevoegen...?", vbYesNo) = vbYes Then


Dim db As Database
Dim rs As Recordset
Dim strSQL As String

strSQL = "Select * From Plaats"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

rs.AddNew

rs![Plaats] = NewData
rs.Update

Response = acDataErrAdded

End If

De procedure blijft hangen op:
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

met de mededeling: Error 13, Type mismatch.

Wat gaat er fout...? Verkeerde bibliotheek?

Vast mijn dank.


Bericht 2 van 4

NL Computer Forum ~ Word, Excel & Office
Van:John Kopmels (Sysop)Datum:06-07-2004
Aan:MEDiXMsgID:1439.2
Onderwerp:VBA in Access gaat misForum:ws-nlcomputer
Hoi Roel,

>> Als ik een plaats invoer in het comboveld die nog niet in de
tabel bestaat wordt de volgende procedure geactiveerd:
< knip >

> De procedure blijft hangen op:
> Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
> met de mededeling: Error 13, Type mismatch.
> Wat gaat er fout...? Verkeerde bibliotheek?

waarschijnlijk staat ADO en DAO in verwijzingen

je moet dan (is trouwens altijd goed idee) met
de te gebruiken methode prefixen: DAO.Objecttype

If MsgBox("De plaats " & NewData & _
" staat nog niet in de Plaats-tabel" & _
" deze toevoegen?", vbYesNo) = vbYes Then

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
'
strSQL = "Select * From tblPlaats"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
'
With rs
.AddNew
!Plaats = NewData
.Update
.Close
End With
'
Response = acDataErrAdded
Else
Response = acDataErrContinue
'
End If

--Groetjes John



Bericht 3 van 4

NL Computer Forum ~ Word, Excel & Office
Van:MEDiXDatum:07-07-2004
Aan:John Kopmels (Sysop)MsgID:1439.3
Onderwerp:VBA in Access gaat misForum:ws-nlcomputer
John,
<knip>

>waarschijnlijk staat ADO en DAO in verwijzingen

DAO wel, ADO niet. Het lijstje referenties is:
Visual Basic
Access 10.0 Object Library
OLE automation
Active-X DataObjects en dan
DAO 3.6

>je moet dan (is trouwens altijd goed idee) met
de te gebruiken methode prefixen: DAO.Objecttype

Ja... en het werkt... weg foutmelding.
Maar dat prefixen ken ik eigenlijk niet. Ik denk, dat je met de prefix naar een bepaalde bibliotheek verwijst. Maar hoe weet ik welke prefix een bibliotheek heeft...?

Groet,

Roel.



Bericht 4 van 4

NL Computer Forum ~ Word, Excel & Office
Van:John Kopmels (Sysop)Datum:08-07-2004
Aan:MEDiXMsgID:1439.4
Onderwerp:VBA in Access gaat misForum:ws-nlcomputer
Hoi Roel

> DAO wel, ADO niet, het lijstje referenties is:
Visual Basic
Access 10.0 Object Library
OLE automation
Active-X DataObjects en dan
DAO 3.6

Je hebt dus *wel* ADO dat is de 'Active-X DataObjects' library

> Maar dat prefixen ken ik eigenlijk niet.
Ik denk, dat je met de prefix naar een bepaalde bibliotheek verwijst.
Maar hoe weet ik welke prefix een bibliotheek heeft...?

Mbv de ObjectBrowser (F2), in de bovenste combobox staan de type library's

Meest voorkomende :
ACCESS
ADODB
DAO
EXCELL
GRAPH
VBA
WORD

Als er geen misverstand *kan zijn* hoef je ze niet te gebruiken

maar bv ingeval ADODB en DAO weet Access niet welk recordset je
wilt openen en raakt danig in de war, met gevolg foutmeldingen

liefst gebruik ik ze ook niet samen maar kies voor 1 methode,
ingeval Access in combinatie met JET kan niets DAO verslaan

va Access 2000 staat ADO default 'aan' als je alleen DAO gebruikt deze
dan best even uitzetten, geen bibliotheken meeslepen die je niet gebruikt

ingeval Access met SQLserver als backend is SQLOLEDB de beste
keus en die benader je met ADODB, daar is DAO weer overbodig

Groetjes --John