Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: lutschi83 am April 21, 2015, 08:43:04

Titel: Automatisch Werte aus Tabelle ziehen
Beitrag von: lutschi83 am April 21, 2015, 08:43:04
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!
Titel: Re: Automatisch Werte aus Tabelle ziehen
Beitrag von: MaggieMay am April 21, 2015, 12:01:01
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] & "'")
Titel: Re: Automatisch Werte aus Tabelle ziehen
Beitrag von: lutschi83 am April 21, 2015, 14:43:14
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.


Titel: Re: Automatisch Werte aus Tabelle ziehen
Beitrag von: MaggieMay am April 21, 2015, 14:48:30
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?
Titel: Re: Automatisch Werte aus Tabelle ziehen
Beitrag von: lutschi83 am April 22, 2015, 08:39:51
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  ???
Titel: Re: Automatisch Werte aus Tabelle ziehen
Beitrag von: MaggieMay am April 22, 2015, 14:48:01
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.
Titel: Re: Automatisch Werte aus Tabelle ziehen
Beitrag von: lutschi83 am April 23, 2015, 10:49:03
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!
Titel: Re: Automatisch Werte aus Tabelle ziehen
Beitrag von: MaggieMay am April 23, 2015, 11:01:00
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.