Hallo,
per SQL-Befehl erzeuge ich eine temporäre Tabelle, die ich zum Vorbelegen eines Kombinationsfeldes in einem Formular benötige (dieses greift auf die temporäre Tabelle zu). Die temporäre Tabelle kann ich aber kein zweites Mal erzeugen, da sie noch geöffnet ist (Laufzeitfehler 3211). Wie kann ich diese Tabelle schließen?
Das hängt davon ab, wo und womit du sie jeweils öffnest (z.B. in einem Recordset, in einer Connection, in einem gebundenen Formular, in einem Kombinationsfeld oder was weiss ich noch …).
Reinhard
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo,
ich erstelle die Tabelle in einem Access-Formular (Person), das seinerseits als Unterformular (unter Firma) eingesetzt wird. Nach Feldaktualisierung bei der Person wird folgender Ereignisprozedur-Code ausgeführt (damit suche ich die kurze Titelform zu einer langen Titelform (TitelLangHilf)):
SqlText = „SELECT DISTINCT TitelLkp.Titlkz INTO TbLkpTtl FROM TitelLkp WHERE TitelLkp.TitlLg = '“ & TitelLangHilf & „’“
MsgBox SqlText
DoCmd.RunSQL SqlText
Diesen Code kann ich nach dem Programmstart ausführen, obwohl die Tabelle bereits existiert - sie wird also überschrieben. Nur ein zweites Mal klappt es nicht, da die Tabelle als geöffnet betrachtet wird. Die Tabelle verwende ich als Nachschlagetabelle für ein weiteres Kombinationsfeld (nämlich Titel Kurzform) im Unterformular.
Warum so kompliziert, wenn es auch einfacher geht?
Ändere halt die Tabellenerstellungsabfrage zu einer Anfügeabfrage und lösche vorher die Daten in der Tabelle (ist ohnehin effizienter!)
ich probiere gerade eine parametrisierte
Abfrage im zweiten Kombinationsfeld aus
(mit Parameter = 1. Feldinhalt)
Parametrisierte Abfragen sind eigentlich überflüssig - man kann sich genausogut (oder besser!) die SQL der Abfrage per Code zusammensetzen. (Sie haben ihre Berechtigung in C/S-Umgebungen, wo der Server die Abfrage schon vorbereiten kann, bevor er die eigentlichen Parameter bekommt, aber für Access bzw. Jet gilt das ja nicht…)
Hallo,
ich erstelle die Tabelle in einem
Access-Formular (Person), das seinerseits
als Unterformular (unter Firma)
eingesetzt wird. Nach Feldaktualisierung
bei der Person wird folgender
Ereignisprozedur-Code ausgeführt (damit
suche ich die kurze Titelform zu einer
langen Titelform (TitelLangHilf)):
SqlText = „SELECT DISTINCT
TitelLkp.Titlkz INTO TbLkpTtl FROM
TitelLkp WHERE TitelLkp.TitlLg = '“ &
TitelLangHilf & „’“
MsgBox SqlText
Warum schreibst Du an dieser Stelle die SQL nicht direkt in die RowSource-Eigenschaft Deines Kombinationsfeldes?
Also:
SqlText = „SELECT DISTINCT TitelLkp.Titlkz FROM TitelLkp WHERE TitelLkp.TitlLg = '“ & TitelLangHilf & „’“
Me!MeinKombinationsfeld.RowSource = SQLText
Evtl. noch
Me!MeinKombinationsfeld.Requery
falls das von Access nicht automatisch ausgeführt wird.
die Liste automatisch aufklappen, falls das erwünscht ist. Das kannst Du dann auch noch davon abhängig machen, ob in der Liste mindestens ein Eintrag ist (Eigenschaft ListCount).