Hoi Guus ,
de ID die ik graag terug terbeschikking heb is die van de materialen .
Zal het eens uitgebreider uitleggen .
Ik heb een tabel materialen en die is gekoppeld aan een tabel materiaalcategorien
In mijn combobox category kan ik een bepaalde category selecteren.(bv kledij , werktuigen ,....)
Als ik eenmaal een category geselecteerd heb( dus in mijn after-update) laat ik afhankelijk van mijn selectie een 2de combobox vullen (combobox met materialen)
Code:
StrSQl = "SELECT Distinct Materiaal.MateriaalNaam, Materiaal.MateriaalCategoryID "
StrSQl = StrSQl & "FROM Materiaal "
StrSQl = StrSQl & "WHERE (((Materiaal.MateriaalCategoryID)=" & Me.CboMateriaalCategory & "));"
Als ik nu als category kledij kies heb ik in mijn tabel van materialen Hemd , schoenen , t-shirt ,Jas , .... staan. Deze materialen komen er meerdere keren in voor omdat er voor elk materiaal meerdere modellen bestaan.
Daarom gebruik ik een distinct om alles maar 1X in mijn lijst te zien en kan ik geen gebruik maken van Materiaal.MateriaalID in deze strSQl.
Als ik een materiaal gekozen heb, bv een Hemd dan wordt een volgende combobox gevuld waar ik het type kan selecteren.Dit doe ik met de volgende code
Code:
StrSQl = "SELECT Materiaal.MateriaalType, Materiaal.MateriaalNaam, Materiaal.MateriaalID "
StrSQl = StrSQl & "FROM Materiaal "
StrSQl = StrSQl & "WHERE (((Materiaal.MateriaalNaam)='" & Me.CboMateriaalnaam.Column(0) & "')) "
StrSQl = StrSQl & "Order BY Materiaal.MateriaalType;"
Me.cboMateriaalnaam.Column(0) geeft me een string weer nl de naam van het materiaal.
Een volgende combobox die gevuld wordt zijn de maten(grote) die je beschikbaar hebt deze komen uit een andere tabel Materiaal eenheidsprijs
die gebeurd met volgende code
Code:
StrSQl = "SELECT MateriaalEenheidsPrijs.Maat, MateriaalEenheidsPrijs.MateriaalPrijsID, Materiaal.MateriaalID, Materiaal.MateriaalNaam, Materiaal.MateriaalType "
StrSQl = StrSQl & "FROM MateriaalEenheidsPrijs INNER JOIN Materiaal ON MateriaalEenheidsPrijs.MateriaalID = Materiaal.MateriaalID "
StrSQl = StrSQl & "WHERE (Materiaal.MateriaalNaam)='" & Me.CboMateriaalnaam.Column(0) & "' "
If Len(Me.CboTypeMAteriaal & "") > 0 Then ' sommige materialen zijn enkel en hebben geen type
StrSQl = StrSQl & "AND (Materiaal.MateriaalType) = '" & Me.CboTypeMAteriaal.Column(0) & "' "
End If
Me.TXTEenheidsprijs = ""
If Me.CboMaat.ListCount <= 1 Then
Me.CboMaat = DLookup("[Maat]", "MateriaalEenheidsPrijs", "[MateriaalType]='" & Me.CboTypeMAteriaal.Column(0) & "' And '" & Me.CboMateriaalnaam.Column(0) & "'")
If Len(Me.CboTypeMAteriaal & "") > 0 Then
Me.TXTEenheidsprijs = DLookup("[EenheidsPrijs]", "MateriaalEenheidsPrijs", "[MateriaalType]='" & Me.CboTypeMAteriaal.Column(0) & "' And '" & Me.CboMateriaalnaam.Column(0) & "'")
Else
Me.TXTEenheidsprijs = DLookup("[EenheidsPrijs]", "MateriaalEenheidsPrijs", "[MateriaalNaam]='" & Me.CboMateriaalnaam.Column(0) & "'")
End If
If IsNull(Me.CboMaat.Column(0)) Then
Me.CboMaat.Enabled = False
Me.CboMaat.Locked = True
Exit Sub
End If
End If
En als ik deze gegevens allemaal heb kom ik maar op 1 materiaal uit met zijn eigen materiaalID die ik dan wil gebruiken om de prijs op te zoeken in mijn tabel.
Hiervoor gebruik ik dan een DlookUp maar vermits ik hier geen materiaalID ter beschikking heb moet ik gebruik maken van combinaties in mijn where , Denk ik

Denk dat ik in volgende code (vermits ik geen materiaalId heb ) een where moet uitvoeren van materiaalnaam , materiaaltype en de maat ?(code klopt nog niet helemaal)
Code:
Me.TXTEenheidsprijs = DLookup("[EenheidsPrijs]", "MateriaalEenheidsPrijs", "[MateriaalType]='" & Me.CboTypeMAteriaal.Column(0) & "' And '" & Me.CboMateriaalnaam.Column(0) & "'")
Hoop dat je een beetje kunt helpen
Groetjes
Romain