Records bewerken dmv een querie

Status
Niet open voor verdere reacties.
Eerst maar even de query behandelen: die moet dus als volgt zijn:

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
 
Hey Michel,

Dankjewel voor je hulp ik heb het helemaal werkend gekregen.
Ik heb nog een klein vraagje. Als ik nu in het formulier door de records ga, is het veld ProductID leeg. Ik heb zelf al een oplossing bedacht (nl het veld naamproduct weer te geven) maar misschien weet jij iets?

Hoe dan ook ontzettend bedankt :thumb:
 
Dat zou er op kunnen duiden, dat het niet goed gekoppeld is aan het juste veld. Dat kun je controleren door in het venster Eigenschappen op het tabblad Gegevens te controleren wat er staat bij Bronbesturingselement.

Weet je zeker dat in de tabel de gegevens allemaal zijn ingevuld?

Michel
 
In de tabel zijn de gegevens goed ingevuld. Het veld ProductID is leeg. Ik denk dat het komt omdat het besturingselement ProductID is en ik heb de kolombreedte van ProductID op 0 gezet. Wellicht toont het formulier uitsluitend het besturingselement als er doorheen genavigeerd wordt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan