Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Automatisch Werte aus Tabelle ziehen

Begonnen von lutschi83, April 21, 2015, 08:43:04

⏪ vorheriges - nächstes ⏩

lutschi83

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!

MaggieMay

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] & "'")
Freundliche Grüße
MaggieMay

lutschi83

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.



MaggieMay

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?
Freundliche Grüße
MaggieMay

lutschi83

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  ???

MaggieMay

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.
Freundliche Grüße
MaggieMay

lutschi83

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!

MaggieMay

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.
Freundliche Grüße
MaggieMay