updaten combobox

Status
Niet open voor verdere reacties.

VB noob

Gebruiker
Lid geworden
11 feb 2009
Berichten
78
Ik heb een formulier met een combobox erop. In deze combobox kan ik een dier selecteren die op een sighting aanwezig was. Omdat sommige groepen dieren nogal groot zijn, wil ik alleen die dieren in de dropdownlist die nog niet geregistreerd zijn op de betreffende sighting.

De combobox is 'animalID
Code:
SELECT DISTINCT qryAnimalsperGroupSightings.AnimalID, qryAnimalsperGroupSightings.Nickname
FROM qryAnimalsperGroupSightings, qry_AnimalIDsatSighting
WHERE (((Exists (SELECT qryAnimalsperGroupSightings.AnimalID FROM qry_AnimalIDsatSighting 
WHERE qryAnimalsperGroupSightings.AnimalID = qry_AnimalIDsatSighting.AnimalID))=False));

qryAnimalsperGroupSightings:
Code:
SELECT tblAnimals.AnimalID, tblAnimals.Sex, tblAnimals.Nickname, tblAnimals.CurrentGroup, tblAnimals.Species
FROM tblAnimals
WHERE (((tblAnimals.[Dead?])=False) AND CurrentGroup = [forms]![frmAnimalsatSighting]![AnimalGroup2])
ORDER BY tblAnimals.CurrentGroup;

en qry_AnimalIDsatSighting:
Code:
SELECT tblAnimalsatSighting.AnimalID
FROM tblAnimalsatSighting
WHERE (((tblAnimalsatSighting.AnimalGroup)=[forms]![frmAnimalsatSighting]![AnimalGroup2]) And (tblAnimalsatSighting.SightingID=[form]![SightingID]))
ORDER BY tblAnimalsatSighting.AnimalGroup, tblAnimalsatSighting.AnimalID;

Op zich werkt het wel, maar alleen als er al iets geregistreerd is op de betreffende sighting, zelfs als 'AnimalID' leeg is. Hoe krijg ik deze functie werkend zonder eerst een dier zonder 'animalID' te registreren op een sighting?

Alles wordt opgeslagen in tblAnimalsatSighting met de kolommen:
ID, AnimalID, AnimalSightingID, AnimalGroup.
 
Dit soort vragen werkt beter met een voorbeeldje; je code is al zo specifiek dat het geen zin heeft om zelf een tabel met voorbeeldgegevens te maken; dat kost teveel tijd.
 
Bekijk bijlage Update combobox2.zip

Hier een voorbeeld database. Heb codes gekopieerd maar het werkt hier helemaal niet.
Als ik eea invul of form1 dan opent frmAnimalsatSighting, maar er verschijnt niks in de dropdown box. Sluit ik frmAnimalsatSighting en open ik hem weer dan is de lijst wel gevuld. Maar als ik een AnimalID kies dan is verschijnt hij nog steeds in de lijst in de volgende regel, wat dus niet zou moeten.
Sluit ik frmAnimalsatSighting, en open ik hem weer een SightingID die al bestaat, dan zit er weer niks in de lijst.
Query1 is hetzelfde als qry_AnimalIDsatSighting maar met SightingID = 5 en Animalgroup 'Sausage'.

Deze query geeft de juiste AnimalIDs die dus niet meer in de lijst zouden moeten verschijnen, wat ik met een NOT EXIST query probeerde te bereiken in de recordsource van de dropdown list.

Hoop dat je hier meer mee kunt OctaFish!
 
Misschien is het beter om 2 comboboxen op het form te plaatsen. Eentje die alle AnimalIDs weergeeft en eentje die alleen de AnimalIDs weergeeft die nog niet op de betreffende sighting zijn geregistreerd. Aangezien de laatste alleen werkt als de SightingID al in de tabel voorkomt zou de eerste combox weergegeven kunnen worden als de SightingID nog niet in de tabel voorkomt en de andere als die al wel voorkomt.
Iets als:
Code:
IF me.SightingID = <>
Then
me.box1.visible = True
Else
me.box1.visible = False
End if

IF me.SightingID = <>
Then
me.box2.visible = False
Else
me.box1.visible = True
End if
 
Uiteindelijk werkend gekregen met de volgende query als source voor de dropdown list:

Code:
SELECT DISTINCT tblAnimals.AnimalID, tblAnimals.Nickname
FROM tblSightings INNER JOIN (tblAnimals INNER JOIN tblAnimalsatSighting ON tblAnimals.AnimalID = tblAnimalsatSighting.AnimalID) ON tblSightings.SightingID = tblAnimalsatSighting.SightingID
WHERE (((tblAnimals.CurrentGroup)=[form]![AnimalGroup2]) AND ((tblAnimals.[Dead?])=False) AND ((Exists (select tblAnimalsatSighting.AnimalID FROM tblAnimalsatSighting WHERE tblAnimals.AnimalID = tblAnimalsatSighting.AnimalID AND tblAnimals.CurrentGroup = [form]![AnimalGroup2] AND tblAnimalsatSighting.SightingID = [form]![SightingID]))=False));
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan