Spaltennamen auslesen!

Hi board,

ich muss gerade an einem Access Projekt arbeiten.
Dabei greife ich auf eine bestehende Datenbank zu.

Folgendes Problem stellt sich mir nun:

Ich habe ein Formular, in dem Eingaben für Zahlungsaufträge vorgenommen werden.
Dort gibt es ein Combi-Feld, in dem der „Absender“ und eines in dem die Bank des Absenders abgefragt wird. Was ich nun machen möchte ist, dass nach Auswahl des „Absenders“ in dem darunterliegenden Feld die für diesen Absender verfügbaren Banken angezeigt werden.

Mein Problem ist dabei, dass ich nur eine Tabelle ansprechen kann, in der die verfügbaren Kontonummern der verschiedenen Absender stehen. Die Kontonummen sind dabei in Spalten geordnet, die nach den entsprechenden Banken heissen.

Jetzt ist die frage, ob man da lieber eine Abfrage bastelt, mit der man das Combi-feld verlinkt, oder ob man das lieber mit VBA macht.

Für eine Abfrage fehlt mir eine passendes SQL Statement, das nach der suche der Zeile (Absender_ID) nur die SpaltenNAMEN ausgibt, zu denen es Kontonummern gibt, da DESC z.B. in Abfragen bei mir (Access2003) nicht unterstützt wird.

Wenn ich es mit Code versuche kann ich zwar (alle) Spaltennamen auszulesen, schaffe es aber nicht die Abfrage für den Absender zu integrieren.

Hat evtl. jemand von euch eine Idee??

Vielen DAnk im Voraus,
cosPhi

Hi cosPhi,

Die Kontonummen sind dabei in Spalten
geordnet, die nach den entsprechenden Banken heissen.

oh wie clever, und so flexibel wie ein Hinkelstein :smile:
das wäre dringend zu ändern!!

Jetzt ist die frage, ob man da lieber eine Abfrage bastelt,
mit der man das Combi-feld verlinkt, oder ob man das lieber
mit VBA macht.

Abfragen werten Daten vertikal aus. Was du brauchst ist eine „Umwandlung“ von horizontal in vertikal. Das geht nur per VBA.

Für eine Abfrage fehlt mir eine passendes SQL Statement, das
nach der suche der Zeile (Absender_ID) nur die SpaltenNAMEN
ausgibt, zu denen es Kontonummern gibt, da DESC z.B. in
Abfragen bei mir (Access2003) nicht unterstützt wird.

wie gesagt, mit Abfragen wirst du das Problem nicht lösen können.

Wenn ich es mit Code versuche kann ich zwar (alle)
Spaltennamen auszulesen, schaffe es aber nicht die Abfrage für
den Absender zu integrieren.

Hat evtl. jemand von euch eine Idee??

Also ich würde es so machen:

  1. eine leere Tabelle erstellen
  2. per VBA die Daten der Banken des Kunden auslesen (horizontal)
  3. diese Daten in die Tabelle schreiben (vertikal)
  4. diese Tabelle für mein Kombifeld nutzen

ODER
ggf. besser: statt der Tabelle einfach ein ARRAY nutzen.

UND
die Ursprungstabelle dringend umprogrammieren !!!

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

Hi Netwolf,

wow!!
vielen Dank für diese SUPERschnelle Antwort!!- ich bin geplättet.

Hi cosPhi,

Die Kontonummen sind dabei in Spalten
geordnet, die nach den entsprechenden Banken heissen.

oh wie clever, und so flexibel wie ein Hinkelstein :smile:
das wäre dringend zu ändern!!

leider nicht möglich … liegt auf dem Firmenserver und wird von mehreren anderen Applikationen genutzt :frowning:
Und da sich diese Daten öfter mal ändern, kann ich die auch nicht manuell in eine neue Tabelle schreiben.

Also ich würde es so machen:

  1. eine leere Tabelle erstellen
  2. per VBA die Daten der Banken des Kunden auslesen
    (horizontal)
  3. diese Daten in die Tabelle schreiben (vertikal)
  4. diese Tabelle für mein Kombifeld nutzen

genial einfach - einfach genial!
klar, dann brauch ich mich nicht mehr in additems verlieren …

ODER
ggf. besser: statt der Tabelle einfach ein ARRAY nutzen.

Okay, hierzu eine Frage:
Ich kenne Arrays bisher nur aus Excel. Werden die in Access genauso angesprochen? bzw. wie würdest du dieses Array dann benutzen?

Grüße aus Barcelona
Jörg
(cosPhi)

Hi cosPhi,

Okay, hierzu eine Frage:
Ich kenne Arrays bisher nur aus Excel. Werden die in Access
genauso angesprochen?

ja, ist alles M$ ist alles VB …

bzw. wie würdest du dieses Array dann benutzen?

z.B. als eindimensionales Array, wenn du die Daten in einem String benötigst: Bankname & " " & BLZ & " " & Kontonummer

oder halt als mehrdimensionales Array, wenn du die Daten aufgeteilt benötigst:
Daten(1,1) = Bank
Daten(1,2) = BLZ
Daten(1,3) = Konto

Wenn du damit nicht so firm bist, verwende besser die Tabellen-Variante.

Grüße aus Barcelona

*auchhinwill*

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

Okay,
ich habe in der Zwischenzeit schon mal versucht, das mit Tabellen zu regeln und stehe gerade wie der Hirsch vor der Eisenbahn!!

folgender code:

 For i = 3 To RS1.Fields.Count - 1
 b = RS1.Fields(i).Name
 SQLSTR = "ALTER TABLE temp1 add " & b & " char(30)"

kannst du mir sagen, watum Access das nicht mag?
da kommt immer der Fehler 3292 „Fehler in syntax“

ich verstehe es nicht … der String stimmt, und wenn ich ihn manuell angebe funktioniert es auch!

Gruss, cosPhi

Ach du ******

jetzt habe ich das Problem gefunden … Kann es aber nicht lösen!

die Spaltenüberschriften der „falschen“ Tabelle haben 2 Wörter z.B. „BCO POPULAR“ und müssen auch so heissen …

Die Frage ist nur, wie ich das meinem SQL-Statement beibringe?

GRuss,
cosPhi

Hi,

For i = 3 To RS1.Fields.Count - 1
b = RS1.Fields(i).Name
SQLSTR = „ALTER TABLE temp1 add " & b & " char(30)“

kannst du mir sagen, watum Access das nicht mag?
da kommt immer der Fehler 3292 „Fehler in syntax“

ja, was soll & " char(30)" werden? = char(30) ist schon ein String!

ich verstehe es nicht … der String stimmt, und wenn ich ihn
manuell angebe funktioniert es auch!

hmmm, nicht zu glauben, da der String auf jeden Fall falsch ist!

BTW: Warum so umständlich über SQL - Strings?
Warum nicht einen Recordset definieren und dann mit ADD etc. die Daten einfach hinzufügen?

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)