In mijn Access database heb ik een formulier dat organisatie-gegevens weergeeft. Op dit formulier bevindt zich een subformulier, waarmee gebruikers trefwoorden kunnen toekennen aan de betreffende organisatie.
Nu wil ik dat gebruikers ook zelf trefwoorden kunnen invullen, die niet in de lijst staan. Er moet dan een schermpje komen met de vraag of de gebruiker het item wil toevoegen.
Op internet en op GoT ben ik meerdere voorbeelden tegengekomen hoe dit moet. Ze werken echter allemaal niet bij mij.
Aangezien ik niets van VB weet en gewoon de scriptjes kopieer en aanpas aan mijn tabellen en velden, weet ik niet zo goed waar het probleem zit. Ik heb het vermoeden dat het of in de definitie van mijn variabelen zit, of dat het komt doordat de scriptjes niet zijn gebouwd op het gebruik van subformulieren en ik daardoor op een verkeerde manier naar de tabel / het gegevensveld verwijs.
De gegevens van mijn database:
- Het formulier heet 'Fondsen"
- Het subformulier heet 'Subformulier Trefwoorden Organisaties'
- De tabel met waarden heet 'Trefwoorden'
- De tabel bestaat uit de kolommen 'Id' en Trefwoord'
- De keuzelijst op het subformulier heet 'Trefwoord' en haalt zijn gegevens uit de kolom 'Trefwoord'
Ik heb onder meer de volgende scriptjes geprobeerd:
Uit het Access handboek:
Met als resultaat de melding: "Compileerfout: een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd", verwijzend naar de regel "Dim dbs As DAO.Database"
Uit [rml][ Access 97] 'Item not in list' melding *[/rml]:
Met als resultaat de melding: "Fout 91 tijdens uitvoering: Objectvariabele of Blokvariabele With is niet ingesteld", verwijzend naar de regel "rst.Open " [Subformulier Trefwoorden Organisaties].Form![Trefwoord] " "
Van More Software Tools:
Met als resultaat de melding: "Compileerfout: een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd", verwijzend naar de regel "db As Database"
Wie kan mij vertellen wat ik fout doe / op welke manier ik een van deze scriptjes werkend krijg?
Nu wil ik dat gebruikers ook zelf trefwoorden kunnen invullen, die niet in de lijst staan. Er moet dan een schermpje komen met de vraag of de gebruiker het item wil toevoegen.
Op internet en op GoT ben ik meerdere voorbeelden tegengekomen hoe dit moet. Ze werken echter allemaal niet bij mij.
Aangezien ik niets van VB weet en gewoon de scriptjes kopieer en aanpas aan mijn tabellen en velden, weet ik niet zo goed waar het probleem zit. Ik heb het vermoeden dat het of in de definitie van mijn variabelen zit, of dat het komt doordat de scriptjes niet zijn gebouwd op het gebruik van subformulieren en ik daardoor op een verkeerde manier naar de tabel / het gegevensveld verwijs.
De gegevens van mijn database:
- Het formulier heet 'Fondsen"
- Het subformulier heet 'Subformulier Trefwoorden Organisaties'
- De tabel met waarden heet 'Trefwoorden'
- De tabel bestaat uit de kolommen 'Id' en Trefwoord'
- De keuzelijst op het subformulier heet 'Trefwoord' en haalt zijn gegevens uit de kolom 'Trefwoord'
Ik heb onder meer de volgende scriptjes geprobeerd:
Uit het Access handboek:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
| Private Sub Trefwoord_NotInList(NewData As String, Response As Integer)
On Error GoTo ErrorHandler
Dim intResult As Integer
Dim strTitle As String
Dim intMsgDialog As Integer
Dim strMsg1 As String
Dim strMsg2 As String
Dim strMs As String
Dim cbo As Access.ComboBox
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim strTable As String
Dim strFieldName As String
strTable = "Trefwoorden"
strFieldName = "Trefwoord"
Set cbo = Me![Trefwoord]
strTitle = "Trefwoord niet in lijst"
intMsgDialog = vbYesNo + vbExclamation + vbDefaultButton1
strMsg1 = "Het door u ingevoerde woord is geen keuzeitem in de lijst. Wilt u het woord "
strMsg2 = " toevoegen aan de trefwoordenlijst?"
strMsg = strMsg1 + NewData + strMsg2
intResult = MsgBox(strMsg, intMsgDialog, strTitle)
If intResult = vbNo Then
Response = acDataErrContinue
cbo.Undo
Exit Sub
ElseIf intResult = vbYes Then
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(strTable)
rst.AddNew
rst(strFieldName) = NewData
rst.Update
rst.Close
Response = acDataErrAdded
End If
ErrorHandlerExit:
Exit Sub
ErrorHandler:
MsgBox "Error No: " & Err.Number & "; Description: " & Err.Description
Resume ErrorHandlerExit
End Sub |
Met als resultaat de melding: "Compileerfout: een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd", verwijzend naar de regel "Dim dbs As DAO.Database"
Uit [rml][ Access 97] 'Item not in list' melding *[/rml]:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| Dim lastno As Variant
Dim rst As ADODB.Recordset
If MsgBox("Wilt u het trefwoord " & NewData & " aan de keuzelijst toevoegen?", vbYesNo, "Niet in lijst") = vbYes Then
rst.Open " [Subformulier Trefwoorden Organisaties].Form![Trefwoord] "
rst.AddNew
rst![Trefwoord] = NewData
rst.Update
rst.Close
Response = acDataErrAdded
Else
Me.Undo
End If
Set rst = Nothing |
Met als resultaat de melding: "Fout 91 tijdens uitvoering: Objectvariabele of Blokvariabele With is niet ingesteld", verwijzend naar de regel "rst.Open " [Subformulier Trefwoorden Organisaties].Form![Trefwoord] " "
Van More Software Tools:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| 'Suppress the default error message. Response = acDataErrContinue ' Prompt user to verify if they wish to add a new value. If MsgBox(NewData & " is geen keuzeitem in de lijst met trefwoorden. Wilt u de term als trefwoord toevoegen?", vbYesNo) = vbYes Then ' Set Response argument to indicate that data is being added. 'Open a recordset of the Trefwoorden Table. Dim db As Database Dim rstTrefwoord As Recordset Dim sqlTrefwoorden As String Set db = CurrentDb() sqlTrefwoorden = "Select * From Trefwoorden" Set rstTrefwoord = db.OpenRecordset(sqlTrefwoorden, dbOpenDynaset) 'Add a new Trefwoord with the value that is stored in the variable NewData. rstTrefwoord.AddNew rstTrefwoord![Trefwoord] = NewData rstTrefwoord.Update 'Inform the combo box that the desired item has been added to the list. Response = acDataErrAdded rstTrefwoord.Close 'Close the recordset End If |
Met als resultaat de melding: "Compileerfout: een door de gebruiker gedefinieerd gegevenstype is niet gedefinieerd", verwijzend naar de regel "db As Database"
Wie kan mij vertellen wat ik fout doe / op welke manier ik een van deze scriptjes werkend krijg?
[ Voor 30% gewijzigd door Millennyum op 15-09-2004 16:54 ]