OctaFish
Verenigingslid
- Lid geworden
- 6 feb 2009
- Berichten
- 43.487
- Besturingssysteem
- Windows 10/MacOS
- Office versie
- Office 365
Eerst maar even de query behandelen: die moet dus als volgt zijn:
Zoals je ziet, heb ik de tweede verwijzing naar ProductID verwijderd, en de Inner Join is ook versimpeld.
De reden daarvan is eigenlijk heel simpel: je koppelt twee tabellen met zo min mogelijk gegevens. Dus als je in de brontabel (Producten) een enkelvoudige sleutel hebt (een sleutel van één veld: ProductID) dan koppel je maar één veld in de doeltabel (AlleOrders). Dus: ProductID uit Producten koppelen aan ProductID uit AlleOrders. Verdere koppelingen zijn niet nodig, en zelfs onwenselijk.
Nu het tweede probleem: Op zich zou je de productnaam moeten kunnen zien, als je een productID selecteert m.b.v. de keuzelijst. Je kunt ook vanuit de keuzelijst met VBA het tekstvak vullen. Die code ziet er als volgt uit:
Hierbij ga ik er voor het gemak vanuit dat de keuzelijst <cboProductID> heet, en het tekstvak met de productnaam <txtProductNaam>
Die namen van keuzelijst en tekstvak kun je via <Eigenschappen>, tabblad <Overig> aanpassen.
Als je de keuzelijst cboProductID selecteert, en je gaat naar <Eigenschappen>, <Gebeurtenissen>, en je klikt op de regel <Na bijwerken>, dan moet je via de knop met de drie puntjes naar de onderste optie, <Gebeurtenis opbouwen>.
Vervolgens plak je de code hierboven (d.w.z. de tekst tussen de regels Private Sub en End Sub, want die tekst staat er al)
Dan zou het moeten werken!
Michel
SELECT AlleOrders.ProductID, Producten.NaamProduct
FROM AlleOrders INNER JOIN Producten ON (Producten.ProductId = AlleOrders.ProductID)
WHERE ((Producten.Leverancier=[forms]![BCNW].[Leverancier]) AND (Producten.Bedrijfsonderdeel=[forms]![BCNW].[Bedrijfsonderdeel]))
ORDER BY AlleOrders.ProductID, Producten.NaamProduct;
Zoals je ziet, heb ik de tweede verwijzing naar ProductID verwijderd, en de Inner Join is ook versimpeld.
De reden daarvan is eigenlijk heel simpel: je koppelt twee tabellen met zo min mogelijk gegevens. Dus als je in de brontabel (Producten) een enkelvoudige sleutel hebt (een sleutel van één veld: ProductID) dan koppel je maar één veld in de doeltabel (AlleOrders). Dus: ProductID uit Producten koppelen aan ProductID uit AlleOrders. Verdere koppelingen zijn niet nodig, en zelfs onwenselijk.
Nu het tweede probleem: Op zich zou je de productnaam moeten kunnen zien, als je een productID selecteert m.b.v. de keuzelijst. Je kunt ook vanuit de keuzelijst met VBA het tekstvak vullen. Die code ziet er als volgt uit:
Code:
Private Sub cboProductID_AfterUpdate()
Me.txtProductNaam.Value = Me.cboProductID.Column(1)
End Sub
Hierbij ga ik er voor het gemak vanuit dat de keuzelijst <cboProductID> heet, en het tekstvak met de productnaam <txtProductNaam>
Die namen van keuzelijst en tekstvak kun je via <Eigenschappen>, tabblad <Overig> aanpassen.
Als je de keuzelijst cboProductID selecteert, en je gaat naar <Eigenschappen>, <Gebeurtenissen>, en je klikt op de regel <Na bijwerken>, dan moet je via de knop met de drie puntjes naar de onderste optie, <Gebeurtenis opbouwen>.
Vervolgens plak je de code hierboven (d.w.z. de tekst tussen de regels Private Sub en End Sub, want die tekst staat er al)
Dan zou het moeten werken!
Michel