AC97 - Tabellenerstellung mit Name aus Formular

Hallo da draußen,

ich möchte gerne per SQL eine Tabelle erstellen.
Geht mit „create table TABELLENNAME (Spalte1 TEXT, SPALTE2 TEXT);“.

Soweit, so schlecht.

Den Namen der zu erzeugenden Tabelle möchte ich gerne aus einem Formular übernehmen,
in dem der User diesen Namen selbst im Feld „NameNeueTabelle“ vorgeben kann.

Irgendwelche Variablen nimmt dieses SQL einfach nicht an!
z. B. „create table forms!formular1.NameNeueTabelle …“

Wie krieg ich´s trotzdem hin?

gruss moritzbock

Hi,

Ist ja klar, SQL kennt ja „forms!formular1.NameNeueTabelle“ gar nicht.
Du kannst aber in forms!formular1.NameNeueTabelle VBA den SQL-String zusammensetzen:
String strSQL= " create table " + forms!formular1.NameNeueTabelle +" …"

Achte auf die Leerzeichen!
Die Ausfürhung geht dann mit einem ExecuteSql-Befehl, den genauen Namen und die Syntax mußt du aus der Hilfe entnehmen.

Ansonsten gibt es unter SQl auch Variablen (@Var_Name),
aber da kann ich dir nciht weiterhelfen

bis dann,
Jan

ich möchte gerne per SQL eine Tabelle erstellen.
Geht mit „create table TABELLENNAME (Spalte1 TEXT, SPALTE2
TEXT);“.

Soweit, so schlecht.

Den Namen der zu erzeugenden Tabelle möchte ich gerne aus
einem Formular übernehmen,
in dem der User diesen Namen selbst im Feld „NameNeueTabelle“
vorgeben kann.

Irgendwelche Variablen nimmt dieses SQL einfach nicht an!
z. B. „create table forms!formular1.NameNeueTabelle …“

Wie krieg ich´s trotzdem hin?

gruss moritzbock

Hi,

Ist ja klar, SQL kennt ja „forms!formular1.NameNeueTabelle“
gar nicht.
Du kannst aber in forms!formular1.NameNeueTabelle VBA den
SQL-String zusammensetzen:
String strSQL= " create table " +
forms!formular1.NameNeueTabelle +" …"

Hallo Jan,

tausendmal Danke …

Du hast mir sehr geholfen!

Allerdings habe ich jetzt das Problem, wenn ich aus einer Abfrage mit WENN-Feldern und Filter (die funktioniert, so wie ich es will) den SQL-Code herausziehe und wieder mit Platzhaltern für den Tabellennamen (kommt aus dem Formular) zusammenbastel, die ganze Geschichte mit „[“, „]“ und den Anführungszeichen langsam aus dem Ruder gerät.

Mal erkennt die Prozedur anhand dem Platzhalter [NameausFormular] den Tabellennamen, mal weigert es sich, die Tabelle zu erkennen (und das innerhalb des SQL-Codes)!

Also Beispiel:

mal ist [NameausFormular].[Feld1] gültig, mal ist´s
NameausFormular.Feld1 (ohne eckige Klammern)!?!

Ich weiss nicht mehr weiter und hoffe, Dich nicht mit diesem Posting überfrachtet zu haben …

gruss moritzbock

Hallo Jan,

tausendmal Danke …

da nich für

Du hast mir sehr geholfen!

Allerdings habe ich jetzt das Problem, wenn ich aus einer
Abfrage mit WENN-Feldern und Filter (die funktioniert, so wie
ich es will) den SQL-Code herausziehe und wieder mit
Platzhaltern für den Tabellennamen (kommt aus dem Formular)
zusammenbastel, die ganze Geschichte mit „[“, „]“ und den
Anführungszeichen langsam aus dem Ruder gerät.

Mal erkennt die Prozedur anhand dem Platzhalter
[NameausFormular] den Tabellennamen, mal weigert es sich, die
Tabelle zu erkennen (und das innerhalb des SQL-Codes)!

Also Beispiel:

mal ist [NameausFormular].[Feld1] gültig, mal ist´s
NameausFormular.Feld1 (ohne eckige Klammern)!?!

Ich benutze immer [forms]![MeinFormular]![MeinTextfeld] bzw.
[forms]![MeinFormular].Methode

Ich glaube, [forms]![MeinFormular] ist das Objekt, und dann kommt die entsprechende Methode…

Musst du versuchen, weiter kann ich dir nicht helfen…

bis dann,
Jan

Wenn Feldnamen in einer Abfrage nicht eindeutig sind, verlangt Jet eine Spezifikation der Herkunft des Feldnamens in der Form:

TabellenName.Feldname

Hierbei ist IMMER der Punkt zu verwenden!
Es ist eine gute Strategie, durch Verwendung von geeigneten Alias-Namen dafür zu sorgen, dass der Feldname eindeutig ist, der Tabellenname also nicht angegeben werden muss.

Ansonsten schadet es nie, den Bezeichner in eckige Klammern einzuschließen - wirklich erforderlich ist es aber nur, wenn der Bezeichner Leer- oder Sonderzeichen enthält.

Strategie 1: IMMER eckige Klammern verwenden.
Strategie 2: (einfacher) In Bezeichnern auf Leer- und Sonderzeichen (und auch: auf Umlaute) verzichten und NIE eckige Klammern verwenden.

Die letztere Strategie erleichtert einem auch die Verknüpfung mit anderen Anwendungen, das Upsizing auf SQL-Datenbanken, das Ablaufen der Anwendung auf anderssprachigen Systemen usw.

Gruss aus dem Norden
Reinhard Kraasch

Wenn Feldnamen in einer Abfrage nicht eindeutig sind, verlangt
Jet eine Spezifikation der Herkunft des Feldnamens in der
Form

Gruss aus dem Norden
Reinhard Kraasch

Hallo Reinhard,

gruss aus dem Südwesten.

Deine Homepage und Deine Antworten sind immer einen Hingucker wert!!!

Danke für Deinen Tipp …

sendet moritzbock