Access 97: Tabelle schliessen für neues Create

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?

Christian

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]

Das hängt davon ab, …
Reinhard

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.

Ich würde mich freuen, wenn das weiterhilft.

Christian

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!)

Reinhard

Danke für den Tipp
ich probiere gerade eine parametrisierte Abfrage im zweiten Kombinationsfeld aus (mit Parameter = 1. Feldinhalt)

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

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…)

Reinhard

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.

Du kannst dann noch mit

Me!MeinKombinationsfeld.SetFocus
Me!MeinKombinationsfeld.DropDown

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).

Harald