Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Access: Preis zum Artikel anzeigen





Frage

Hallo! Ich komme mit einem einfachen Problem gerade nicht weiter. Ich habe eine Tabelle mit Briefarten. Dann habe ich eine Tabelle, mit Preisen je Briefart. Die Briefarten-Nummern sind mit der Preistabelle in Beziehung gesetzt (Jede Briefnummer ist also einem Preis zugeordnet). Jetzt habe ich ein Formular erstellt, in welchem ich ein Kombifeld habe, welches mir die Briefarten vorschlägt. Nehmen wir an, ich wähle Standard-Brief aus. Nach der Auswahl soll in einem anderen Textfeld der dazugehörige Preis ausgegeben werden (Irgendwie als Standardwer, oder so ähnlich...). Wie mache ich das? Ich bekomme es einfach nicht hin... :-( Habe auch schon in der Nordwind-Datei gesucht.... Vielen Dank für Eure Hilfe! Gruß, Michael

Antwort 1 von thomasn1975

Das ist leider unter Access ohne VBScript nicht möglich. Falls Du entsprechende Kenntnisse hast, sieh mal unter der Funktion DomWert nach.

Antwort 2 von Michael9999

Vielen Dank für den Hinweis! Leider bekomme ich das entsprechende Kriterium oder den Code nicht selber hin.

Vielleicht kannst Du mir helfen?

In meinem Formular "frm_sub_inputdata" habe ich ein Auswahlfeld mit "Briefnr".

Briefnummer = Datensatzherkunft: SELECT [tbl Briefarten].[Briefarten], [tbl Briefarten].[Briefnr] FROM [tbl Briefarten];

Datenherkunft des gesamten Formulares ist "tbl Archiv".

Die Briefpreise sind in der Tabelle "tbl Briefpreise" gespeichert. Jeder Brief hat eine Nummer und dazu wird ein Preis eingegeben. Die Spalte mit den Preisen heißt "Briefpreis".

Der jeweilige "Briefpreis" aus "tbl Briefpreise" soll in einem Textfeld des Formulares "frm_sub_inputdata" angezeigt werden, nachdem beim Auswahlfeld "Briefnr" die Briefart gewählt wurde.

Wo muss ich welchen Code oder welche "Formel" eingeben? In der Hilfe von Access habe ich etwas von DLookup gelesen, verstehe das aber noch nicht.

Kannst Du mir helfen?

Vielen Dank!

Michael

Antwort 3 von erik

Hat jeder Brief wirklich nur einen einzigen Preis? Wenn du keine Preishistorie pflegen willst, gäbe es einen relativ simplen Weg. Der Preis wird dabei im Kombinationsfeld unsichtbar mitgeführt.

1. Erstelle ein Abfrage, die den Primärschlüssel des Briefes, seinen Namen und den dazugehörigen Preis anzeigt:

SELECT [tbl Briefarten].[Briefnr], [tbl Briefarten].[Briefarten], [tbl Briefpreise].[Briefpreis] FROM [tbl Briefarten] INNER JOIN [tbl Briefpreise] ON [tbl Briefarten].[Briefnr] = [tbl Briefpreise].[Briefnr]

2. Füge diese Abfrage in die Datenherkunft des Kombinationsfeldes ein.

3. Stelle die Eigenschaften des Kombinationsfeldes folgendermaßen ein:
Spaltenanzahl: 3
Spaltenbreiten: 0cm;3cm;0cm
Gebundene Spalte: 1

4. Füge das NachAktualierung-Ereignis für das Kombinationsfeld hinzu mit dem folgenden Code:

Me.txtBriefpreis = Me.txtBriefnr.Columns(2)

Mit Columns(2) greifst du auf die dritte, unsichtbare Spalte des Kombinationsfeldes zu und trägst den Wert in das Textfeld ein. Zu beachten ist, dass des Spaltenzählung bei 0 beginnt.

Antwort 4 von Michael9999

Hallo erik!

Vielen Dank für Deine nette Hilfe.

Folgendes ist nun in meinem Formular "frm_sub_inputdata":

Auswahlfeld "Briefnr" mit der Datensatzherkunft aus einer Abfrage SELECT [tbl Briefarten].[Briefnr], [tbl Briefarten].[Briefarten], [tbl Briefpreise].[Briefpreis] FROM [tbl Briefarten] INNER JOIN [tbl Briefpreise] ON [tbl Briefarten].[Briefnr]=[tbl Briefpreise].[Briefnr];

Außerdem bedindet sich ein dort ein Textfeld. Hier sollen die Preise automatisch erscheinen. Das Textfeld hat den Steuerelementinhalt "Briefnr", da das das Feld aus der Tabelle tbl Archiv ist. Hier sollen die Werte auch gespeichert werden.

Ich wähle mittels dem o.g. Auswahlfeld eine Briefart aus (Den Namen der Briefart, aber eigentlich die Briefnummer [Primkey], da die anderen Spalten verborgen sind).

Wie bekomme ich jetzt den Preis aus der dritten Spalte, welche verborgen mitgeführt wird in dem Auswahlfeld in das Textfeld "Briefpreis"?

Das haut noch nicht so genau hin. Ab Punkt 4 verstehe ich das nicht so ganz *g*

>>> 4. Füge das NachAktualierung-Ereignis für das Kombinationsfeld hinzu mit dem folgenden Code:

Me.txtBriefpreis = Me.txtBriefnr.Columns(2) <<<

Muss ich dem Feld Briefpreis nicht irgendwie beibringen, dass der Wert der Spalte automatisch dorthin übertragen wird?

Bitte helf mir nocheinmal!

Vielen Dank!

Michael

Antwort 5 von Michael9999

Nochmal zur Info:

Wenn ich den Code

Private Sub Briefnr_AfterUpdate()
Me.txtBriefpreis = Me.txtBriefnr.Columns(2)
End Sub

als Ergeignisprozedur bei dem Feld NachAktualisierung eingebe, dann bekomme ich immer die folgende Fehlermeldung:

Fehler beim Kompilieren:
Methode oder Datenobjekt nicht gefunden

Dabei ist ".txtBriefnr" blau markiert.

Die Ereignisprozedur habe ich dem Auswahlfeld zugeordnet.

Was mache ich falsch?

Viele Grüße,
Michael

Antwort 6 von RalfH

Hallo,
Ich glaube Du solltest in der VBA Umgebung auf EXTRAS>VERWEISE und dann Microsoft DAO 3.6 ankreuzen.
Gruß Ralf

Antwort 7 von erik

Hallo Michael,

die von mir verwendeten Namen "txtBriefpreis" und "txtBriefnr" sind nur Beispielnamen. Du musst sie an deine Gegebenheiten anpassen. Hier ist txtBriefpreis das Textfeld, das letztendlich den Preis erhalten soll, und txtBriefnr ist das Kombinationsfeld, mit dem du den Brieftyp auswählen kannst.

Zitat:
Muss ich dem Feld Briefpreis nicht irgendwie beibringen, dass der Wert der Spalte automatisch dorthin übertragen wird?


Aber das tust du doch. Im Ereignis "NachAktualisierung"(!) des Kombinationsfeldes wird dessen dritte Spalte in das Textfeld übertragen. :-)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: