Hallo Leute,
ich habe in einem Formular "Angebot" die Felder, ,,Kunden-Code", ,,Distributor" und im Unterformular das Feld ,,Productcode".
Ich hätte nun gerne, dass im Feld ,,Unit Price" im Unterformular automatisch der Wert aus dem Feld Listenpreis aus der Tabelle ,,Artikel" gezogen wird, wenn die Werte dieser drei Felder mit dem Wert ,,Pricecode" aus der Tabelle ,,Artikel" übereinstimmen. Der Wert ,,Pricecode" in der Tabelle Artikel ist ein berechneter Wert von Formular ,,Artikel".
Wie bekomme ich das hin?
Danke schon einmal für eure Hilfe!
Hallo,
du könntest den Preis mit Hilfe der DLookUp-Methode auslesen.
Als Steuerelementinhalt des Textfeldes könnte bspw. folgender Ausdruck dienen:
=DomWert("Unit Price";"Artikel";"PriceCode='" & [Parent].[KundenCode] & [Parent].[Distributor] & [ProductCode] & "'")
Hi, danke für deinen Vorschlag.
ich habe das jetzt mal so versucht.
Me.Unit_Price.Value = DLookup("Listenpreis", "Artikel", "[Pricecode] =" & Me.Parent!Customer_ID.Column(1) & Me.Parent!Kombinationsfeld115.Column(1) & Me.Product_ID.Text)
Kann es sein, dass man nicht auf ein berechnetes Feld abfragen kann? Pricecode ist ein berechnetes Feld.
Hi,
was kommt denn dabei heraus, gibt es eine Fehlermeldung?
Und wie sieht die Berechnungsformel für das Datenfeld aus?
Der Bezug auf die Spalten der Kombifelder - die überraschenderweise gar nicht ,,Kunden-Code" und ,,Distributor" heißen - ist korrekt?
Hier ist mein Code nochmal. Ich bekomme keine FehlermeldungPrivate Sub Product_ID_Change()
On Error GoTo err_handler:
Me.UnitPrice.Value = DLookup("Listenpreis", "Artikel", "[Pricecode] =" & Me.Parent!CustomerID.Column(1) & Me.Parent!Company.Column(1) & Me.ProductID.Text)
'Me.Unit_Price.Value = DLookup("Preis", "Preisliste_" & Me.Parent!Kombinationsfeld115.Column(1), "[Produktcode] = '" & Me.Product_ID.Text & "'")
Me.Artikelname.Value = DLookup("Artikelname", "Artikel", "[produktcode] = '" & Me.Product_ID.Text & "'")
Me.Produktcode.Value = DLookup("produktcode", "Artikel", "[produktcode] = '" & Me.Product_ID.Text & "'")
Exit Sub
err_handler:
Me.UnitPrice.Value = DLookup("Listenpreis", "Artikel", "[Pricecode] =" & Me.Parent!CustomerID.Column(1) & Me.Parent!Company.Column(1) & Me.ProductID.Text)
'Me.Unit_Price.Value = DLookup("Listenpreis", "Artikel", "[Produktcode] = '" & Me.Product_ID.Text & "'")
Me.Artikelname.Value = DLookup("Artikelname", "Artikel", "[produktcode] = '" & Me.Product_ID.Text & "'")
Me.Produktcode.Value = DLookup("produktcode", "Artikel", "[produktcode] = '" & Me.Product_ID.Text & "'")
End Sub
Er zieht jetzt nicht mal mehr den Artikelname....
Ich verzweifel hier ???
Hi,
das Change-Ereignis ist ungeeignet (-> Access-Hilfe dazu lesen!), statt dessen kannst du das Formular-Ereignis "Beim Anzeigen" nehmen, sowie die AfterUpdate-Ereignisse der beteiligten Steuerelemente.
Hi, ich hab es hinbekommen...
Dim xyz As String
xyz = DLookup("[Listenpreis]", "Artikel", "[Produktcode] ='" & Me.Product_ID.Text & "' and [Usercode] ='" & Me.Parent!Customer_ID.Column(1) & "' and [Customercode] = '" & Me.Parent!Kombinationsfeld115.Column(1) & "'")
Me.Unit_Price.Value = xyz
Exit Sub
Danke!
Hi,
wenn DLookUp nichts findet liefert es den Rückgabewert NULL, daher ist eine Stringvariable als Ziel ungeeignet. Außerdem ist der Einsatz einer Variablen hier völlig überflüssig, du kannst die Zuweisung direkt auf das Steuerelement anwenden.