Form.Textfeld dynamisch füllen (Wert suchen)

Hallo zusammen!

Basics:

  1. MS ACCESS 2000
  2. Tabelle: „WzgNr“ mit Spalte „WzgHer“
    -> Als Frontend dieser Tabelle das Formular: „frmWzgNr“
    -> verknüftes Kombinationsfeld: „WzgHer“
    -> unverknüpftes Textfeld: „txtHersteller“
  3. Tabelle „Adressen“ mit Spalten „Nr“ und „Firma“

Ich möchte, passend zu dem Eintrag im Kombinationsfeld „WzgHer“ in dem die Lieferantennummer steht, im Textfeld „txtHersteller“ dynamisch auch den Namen des Lieferanten anzeigen lassen. Diese sind in der Tabelle [Adressen].[Nr] [Adressen].[Firma] hinterlegt.

Lösungen über den Ereignis-Code sind langsam und aufwendig.

Gibt es eine Möglichkeit, dies als berechnetes Steuerelement zu realisieren? Evtl. mit SQL-Befehlen?

Vorab danke & Gruß,
Markus

Hallo.

„txtHersteller“ dynamisch auch den Namen des Lieferanten
anzeigen lassen. Diese sind in der Tabelle [Adressen].[Nr]
[Adressen].[Firma] hinterlegt.

Gibt es eine Möglichkeit, dies als berechnetes Steuerelement
zu realisieren? Evtl. mit SQL-Befehlen?

Mach ein Kombinationsfeld daraus. Dann in die Eigenschaft „Datenherkunft“ des Feldes die SQL-Anweisung klabastern, z.B. SELECT HerstellerName FROM tbl_Hersteller ORDER BY HerstellerName;. Das sollte eigentlich funktionieren - die SQL- Klausel kannst Du nach Belieben weiter verbramseln …

Gruß kw

Mach ein Kombinationsfeld daraus. Dann in die Eigenschaft
„Datenherkunft“ des Feldes die SQL-Anweisung klabastern…

Sorry kw, ich habe mich wohl nicht gut ausgedrückt:

Das Textfeld „txtHersteller“ soll, abhängig vom Eintrag im Kombinationsfeld „WzgHer“ (enthält die Lieferantennummer), den entsprechenden Namen der Herstellerfirma aus der Tabelle „Adressen“ mit den Spalten „Nr“ und „Firma“ heraussuchen und nur anzeigen.

Gruß, Markus

Nochmal Hallo.

Das Textfeld „txtHersteller“ soll, abhängig vom Eintrag im
Kombinationsfeld „WzgHer“ (enthält die Lieferantennummer), den
entsprechenden Namen der Herstellerfirma aus der Tabelle
„Adressen“ mit den Spalten „Nr“ und „Firma“ heraussuchen und
nur anzeigen.

Sub WzgHer_AfterUpdate()

Dim HstTab As Recordset
Dim SQLStr As String

SQLStr=„SELECT * FROM Adressen WHERE Nr=“&Str$(WzgHer)
Set HstTab=CurrentDb.OpenRecordset(SQLStr)
Me.txtHersteller=HstTab!Firma
HstTab.Close
Set HstTab=Nothing

End SubVoraussetzung ist, dass WzgHer und Nr numerische Felder sind. NB : Deine Variablennamen solltest Du nochmal überarbeiten …

Gruß kw

SQLStr=„SELECT * FROM Adressen WHERE Nr=“&Str$(WzgHer)
Set HstTab=CurrentDb.OpenRecordset(SQLStr)…

Diese (eine ähnliche) Version habe ich z. Zt. in Betrieb. Da ich aber etliche Felder habe, die so gefüllt werden, wird das Laden eines Datensatzes recht langsam.
Ich habe mittlerweile die Funktion DLookUp bzw. DomWert gefunden, die ich direkt als Steuerelementinhalt v. txtHersteller eintragen kann. Funktioniert jedoch auch nocht nicht so ganz…

Danke & Gruß, Markus

PS: Die Datenbank ist mittlerweile recht groß und bis auf das Tuning fast fertig… es sei denn es kommen mal wieder wieder weitere Anpassungswünsche der Kollegen. Als ich die Sache angefangen habe, waren mir die Restriktionen für Tabellen-, Feld- und Steuerelementnamen mir noch gänzlich unbekannt…

Ich habe mittlerweile die Funktion DLookUp bzw. DomWert
gefunden, die ich direkt als Steuerelementinhalt v.
txtHersteller eintragen kann. Funktioniert jedoch auch nocht
nicht so ganz…

Wenn Dein Problem die Schnelligkeit ist, sind Domänenfunktionen der falsche Weg. Die sind wesentlich langsamer als die dynamische SQL … letzten Endes führt ja die DLookup auch wieder ein SQL- Statement aus.

PS: Die Datenbank ist mittlerweile recht groß und bis auf das
Tuning fast fertig … es sei denn es kommen mal wieder wieder
weitere Anpassungswünsche der Kollegen.

Das heißt, Du hast beinahe angefangen?

Als ich die Sache
angefangen habe, waren mir die Restriktionen für Tabellen-,
Feld- und Steuerelementnamen mir noch gänzlich unbekannt…

Learning by DOING (das ist das Geräusch, das der Dez macht, wenn man ihn auf den Schreibtisch haut). Die Namensvergabe hat keinen direkten Einfluss auf das Antwortzeitverhalten. Eher schon das von Dir beschriebene Problem der vielen Steuerelemente mit dynamischer Abfrage - Abhlife kannst Du evtl. schaffen, indem Du entsprechende, fest verdrahtete Queries hinter Deine Steuerelemente legst - aber um das konkret zu beurteilen, müsste ich Deine DB schon vor mir haben.

Gruß kw

Ich bevorzuge in solchen Fällen (unter ACCESS97) das Erstellen von Beziehungen zwischen den Tabellen und erstelle für meine Formulare entsprechende Abfragen.

Vorgehensweise hab ich hier prinzipiell für ähnliches Problem beschrieben http://www.wer-weiss-was.de/cgi-bin/forum/showarticl…

gruß
Franz

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]