Bericht 1 van 4NL Computer Forum ~ Word, Excel & Office Van | : | MEDiX | Datum | : | 04-07-2004 |
Aan | : | Allen | MsgID | : | 1439.1 |
Onderwerp | : | VBA in Access gaat mis | Forum | : | 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 4NL Computer Forum ~ Word, Excel & Office Van | : | John Kopmels (Sysop) | Datum | : | 06-07-2004 |
Aan | : | MEDiX | MsgID | : | 1439.2 |
Onderwerp | : | VBA in Access gaat mis | Forum | : | 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 4NL Computer Forum ~ Word, Excel & Office Van | : | MEDiX | Datum | : | 07-07-2004 |
Aan | : | John Kopmels (Sysop) | MsgID | : | 1439.3 |
Onderwerp | : | VBA in Access gaat mis | Forum | : | 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 4NL Computer Forum ~ Word, Excel & Office Van | : | John Kopmels (Sysop) | Datum | : | 08-07-2004 |
Aan | : | MEDiX | MsgID | : | 1439.4 |
Onderwerp | : | VBA in Access gaat mis | Forum | : | 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