Thanks voor je antwoord! Dat leek inderdaad niet zo moeilijk.
Maar...het werkt niet zoals het hoort.
Ik heb dus drie tabellen
'Dogs' met o.a. de kolom:
- DogID (text)
- Current (= de naam van de groep waar de hond zich in bevindt, hier filter ik op zodat de keuzelijsten beperkt blijven)
'Sightings' met o.a. de kolom:
- SightingID (primary key, autonumber)
'DogsatSighting' met 3 kolommen:
- ID (autonumber en primary key)
- SightingID
- DogID
De selectiequery die ik hiervoor maakte was als volgt:
Code:
SELECT Dogs.DogID, Sightings.SightingID
FROM Dogs, Sightings
WHERE (((Sightings.SightingID)=[Sighting]) AND ((Dogs.Current)=[Pack seen]));
Run ik deze query met als parameter voor
Sighting '16' en
Pack seen naam pack dan krijg ik keurig de ID's van de 3 honden te zien bij dat pack en in de SightingID kolom '16'.
De append query werd vervolgens als volgt (gewoon het type query verandert):
Code:
INSERT INTO DogsatSighting ( DogID, SightingID )
SELECT Dogs.DogID, Sightings.SightingID
FROM Dogs, Sightings
WHERE (((Sightings.SightingID)=[Sighting]) AND ((Dogs.Current)=[Pack seen]));
Hier krijg ik nog de juiste resultaten.
Vervolgens plaats ik een multi select list box op een form wat mij bij het openen de SightingID en Pack name vraagt.
Die vul ik in en ik krijg netjes de honden in de multi select box te zien die bij het pack horen.
Vervolgens heb ik een knop die die data naar de goeie tabel zou moeten schrijven.
Daar had ik de volgende VB code voor, maar die werkte alleen voor de DogID's:
Code:
Option Compare Database
Option Explicit
Private Sub cmdOK_Click()
On Error GoTo Err_Handler
' Declare variables
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim varItem As Variant
Dim strCriteria As String
Dim strSQL As String
' Get the database and stored query
Set db = CurrentDb()
Set qdf = db.QueryDefs("qryAppendSelectDogsatSighting")
' Loop through the selected items in the list box and build a text string
If Me!lstDogIDs.ItemsSelected.Count > 0 Then
For Each varItem In Me!lstDogIDs.ItemsSelected
strCriteria = strCriteria & "Dogs.DogID = " & Chr(34) _
& Me!lstDogIDs.ItemData(varItem) & Chr(34) & "OR "
Next varItem
strCriteria = Left(strCriteria, Len(strCriteria) - 3)
Else
MsgBox "Must Select An Item From The List First"
Exit Sub
End If
' Build the new SQL statement incorporating the string
strSQL = "[B]INSERT INTO DogsatSighting ( DogID ) " & _
"SELECT Dogs.DogID FROM Dogs " & _
"WHERE " & strCriteria & ";"[/B]
' Apply the new SQL statement to the query
qdf.SQL = strSQL
' Open the query
DoCmd.SetWarnings False
DoCmd.OpenQuery "qryAppendSelectDogsatSighting"
DoCmd.SetWarnings True
' Empty the memory
Set db = Nothing
Set qdf = Nothing
Exit_Handler:
Exit Sub
Ook als ik het vetgedrukte stuk verander naar een nieuwe INSERT INTO statement werkt het nog niet.
Deze heb ik geprobeert:
Code:
strSQL = "INSERT INTO DogsatSighting ( DogID, SightingID ) " & _
"SELECT Dogs.DogID, Sightings.SightingID FROM Dogs, Sightings " & _
"WHERE " & strCriteria & ";"
Ik snap dat er nog meer aangepast moet worden, maar hoe en wat weet ik niet precies (zie mij nick...).
Nog idealer zou zijn als de 'SightingID' en 'Pack name' reeds automatisch ingevuld worden aan de hand van zojuist op het formulier ingevulde velden (SightingID is een autonumber) zodat ik alleen de DogIDs hoeft te selecteren en met de knop kan toevoegen aan de tabel 'Dogs at Sighting'.