Office: (Office 2013) 2 dimensionales Array als Parameter übergeben

Helfe beim Thema 2 dimensionales Array als Parameter übergeben in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Leute, ich würde gerne an eine Funktion ein 2 dimensionales Array für die weiter Verarbeitung übergeben. Mir ist zwar klar, dass ich Zeile für... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Crashbreaker, 30. Januar 2016.

  1. 2 dimensionales Array als Parameter übergeben


    Hallo Leute,

    ich würde gerne an eine Funktion ein 2 dimensionales Array für die weiter Verarbeitung übergeben. Mir ist zwar klar, dass ich Zeile für Zeile die Arrays vorher aufbauen und übergeben kann. Doch wie könnte ich es Syntax-technisch viel einfacher und praktischer auf einem rutsch das bewerkstelligen?

    Z.B. in PHP ist es ziehmlich leicht.

    PHP:
             $classe->methode(array("key1" => "value1""key2" => "value2", ....))
    :)
     
    Crashbreaker, 30. Januar 2016
    #1
  2. die array Funktion gibt es in Access genauso.
    In der VBA Hilfe findest du Beispiele.

    LG Markus
     
    markusxy, 1. Februar 2016
    #2
  3. Ah super, danke Markus.

    Jedoch wo genau finde ich das denn?
    Weil ich suche vergebens danach.

    Wäre dir sehr dankbar, wenn du mir da noch Link oder Beispiele nennen könntest.

    MfG
    Daniel
     
    Crashbreaker, 1. Februar 2016
    #3
  4. 2 dimensionales Array als Parameter übergeben

    die Hlfe der VBA Entwicklungsumgebung kann man nutzen indem man
    dort wo steht: hier Frage eingeben das eingibt was man sucht und enter drückt.
    F1 drückt und die Frage eingibt.
    den gewünschten Text markiert und F1 drückt.

    LGM

    du kannst Werte übergeben Array("Test",2,3,"X")
    zum überladen einer Funktion schau auch unter ParamArray nach.
     
    markusxy, 1. Februar 2016
    #4
  5. Okay habe mit F1 nach geschaut aber das hat mich nicht weiter gebracht auch dein Beispiel nicht. Denn dein Beispiel ist 1 dimension.

    Die Rede ist aber von 2 dimension.

    Wie kann ich 2 dimensions Array erstellen?
     
    Crashbreaker, 1. Februar 2016
    #5
  6. Hallo,

    es gibt in Access eine Array-Funktion, die z. B. aus mehreren Zahlen ein Array bastelt:

    Dim A As Variant
    A = Array(10,20,30)
    B = A(2)

    (Originaltext aus der Hilfe)

    Ich glaube aber eher, dass du ein bereits "befülltes" Array an eine Funktion übergeben möchtest. Das wäre dann so möglich (einfach ein Formular mit einem Tetfeld definieren...):

    Code:
    Der Begriff "Array" ist zweideutig, da er erstens die Array-Funktion und zweitens die simple Definition eines ein- oder mehrdimensionalen Feldes meint.

    In meinem primitiven Beispiel kenne ich ja den Aufbau von sMyArr (nämlich sMyArr(2,5) as string) und kann in aufgerufenen Funktionen bzw. Subs damit umgehen. Ansonsten müsste man die Dimensionen des Arrays in der aufgerufenen Funktion erst ermitteln.

    Hoffe, das hilft.

    Gruß

    Dinkel
     
  7. Hallo Dinkel,

    danke für dein Vorschlag aber auch das ist nicht das was ich suche. Solche Beispiele habe ich Zahlreich dank Google im Internet gefunden.

    Was ich suche ist, dass was ich im 1. Beitrag (Beitrag #1) in PHP gezeigt habe.
    Man definiert einfach ein oder mehrere 2 dimensionales Array und sendet den Inhalt an eine Funktion. Nicht mehr und nicht weniger.

    Also sprich:
    Code:
    So was ähnliches suche ich.
    Markus sagte, dass das geht aber nirgendswo ein Beispiel gesehen wo es geht.

    Daher bitte ich euch mir da zu helfen.

    MfG
    Daniel
     
    Crashbreaker, 1. Februar 2016
    #7
  8. 2 dimensionales Array als Parameter übergeben

    Schlüssel-Wert Paarungen gibt es von Hause aus in VBA nicht (außer in einer Collection, wo man aber den Key kennen muss, um auf ein bestimmtes Item zugreifen zu können). Du kannst aber auch die Microsoft Scripting Runtime Bibliothek in die Verweise aufnehmen, die u. a. ein Dictionary-Objekt beinhaltet, das ähnlich Deiner gewohnten php-Umgebung ausgelegt ist. Hier ist etwas zum Spielen. Code:
     
  9. Hallo Nouba,

    das ist ja mal interessant.
    Aber brauche da etwas genauere Erläuterung zu.


    Was ist das für ein Schlüssel und wo hole ich das von mir? Sieht nach einer Regedit-Schlüssel. Wieso braucht man das?

    Des weiteren habe ich festgestellt, dass die Arrays hier in Access verkehrt rum geritten wird. Laut deinem Beispiel ist es verdeutlich worden.

    Aber warum muss man durch eine "Add" Funktion die Array Paare einzeln hinzufügen? Dann kann ich mir doch die ganzen Bibliotheken ersparen und das ganze selbst durch eine Funktion definieren und eigenhändisch (durch zig Zeilencode, wie oben ja auch) realisieren.

    Da muss doch echt noch was besseres geben. Kommt leute, enttäuscht mich nicht was Access betrifft. Access kann doch nicht so beschränkt sein.
     
    Crashbreaker, 1. Februar 2016
    #9
  10. Also es scheint doch wohl so zu sein, dass der Access-Befehl Array nur ein eindimensionales Feld erzeugen kann. Aber das wäre auch ok, denn man kann ja aus einem solchen eindimensionalen Verktor leicht ein zweidimensionales Feld bauen.

    Code:
    Die von Nouba dargestellte Lösung beschreibt eine Klasse, die leider nur die Add-Funktion kennt.
    Also: vielleicht doch selber etwas bauen...

    Eine Frage, die sich mir stellt:
    Was sind das für Daten, die du in ein Array speichern möchtest? Wenn diese Daten extern vorliegen, kann man sie sicher einfach in ein Array einlesen. Wenn es sich bei diesen Daten um Texte im Sourcecode handelt, wäre es ja noch einfacher, diese einem Array zuzuordnen.

    Access hat seine Eigenarten und Vorzüge. Wie bei vielen anderen Microsoft-Programmen auch vermisst man gelegentlich Sprach-Konstrukte, die anderswo längst usus sind.

    Es ist m. E. in Access besonders wichtig, eine saubere Trennung zwischen Code und Daten vorzunehmen. Code wird übrigens immer (?) im ASCII-Code geschrieben, jedenfalls ist mir keine Programmiersprache bekannt, die das anders macht. Im Code mit non-ASCII-Daten umzugehen ist dann eine andere Sache.

    Vielleicht solltest du etwas genauer beschreiben, wo und wann du Code für die Übergabe einer (Klartext?-)Werteliste brauchst. Vielleicht kann man dir dann auch besser helfen, nämlich konzeptionell.

    Access-VBA ist nicht php und kann es vermutlich auch nie werden.

    Grüsse...
     
  11. Die Class-IID oder die Program-ID braucht man nur in Verbindung mit Late-Binding. Wenn Du einen Verweis auf die Scriptimg Runtime Bibliothek setzt, ist das überflüssig.

    In VBA können Konstanten nur mit einfachen Datentypen initialisiert werden. Das finde ich auch nicht so schön, aber damit muss ich mich abfinden.
     
  12. Eine Variant-Variable kann ein Array übernehmen, auch ein 60-dimensionales. Erzeugen müsste man es selber.

    2-dimensional: In einer Datenbank wird man sich viel eher mit Tabellen und Recordsets beschäftigen, weil da typischerweise SQL das native Handwerkszeug ist.

    Bei einem Array kann man nur feste Schleifen laufen, weil wohl kaum einer für einen bestimmten Wert die Auflistungsindizes pro Dimension kennt.
    In Excel ist ein zweidimensionales Array ein sehr probates Mittel, weil man simpel und schnell einen Bereich eines Arbeitsblattes in ein Array überführen kann wie auch umgekehrt. Aber Excel und eine Datenbank sind bekanntlich verschiedene Dinge.
     
  13. 2 dimensionales Array als Parameter übergeben

    also dass mit der zweiten Dimension habe ich übersehen.
    Falls übrigens die Daten aus der Datenbank stammen, gäbe es bei ADO noch die getString Funktion der eben gleich das Recordset verwenden.

    Ansonsten warum nicht selbst eine kleine Funktion schreiben die ein mehrdimensionales Array als Ergebnis liefert, ist ja auch keine Hexerei.

    Mach man sonst doch auch, wenn einem eine Funktionalität abgeht, die es in einer anderen Programmierumgebung gibt.

    LGM
     
    markusxy, 1. Februar 2016
    #13
  14. Habe ich mir gedacht. Also wird es mir leider nicht erspart bleiben für eine einfache Sache der Welt eine umständliche Zeilencode zu generieren.
    Naja Access halt *stupid

    So in etwa hatte ich mir das quasi zwar vorgestellt, wollte jedoch mich davor distanziieren. Aber anscheinend bleibt mir leider keine andere Wahl.

    Nun ja, mein Vorhaben ist folgendes:

    ich habe eine Funktion Namens Prepare. An diese Funktion übergebe ich einfach ein SQL-String als Parameter.
    Ein sehr abstraktes Beispiel sehe so aus:
    "Select * from :tbl where id = :id ... "

    Nun in eine andere Funktion, Beispielsweise BindParam übergebe ich dann 2 weitere Parameter. Z.B.:
    Code:
    Diese Funktion nimmt dann mein SQL-Anweisung und ersetzt die Stellen wo die Schlüsseln (:tbl oder :id) sich befinden usw.

    Im nächsten Schritt wollte ich das ganze auch Optional so handhaben, dass ich per Array gleichzeitig mehrere solche Parameter in einem Rutsch an die Funktion übergebe.
    Beispiel:

    Code:
    so könnte ich dann quasi später SQL-Injection Überprüfungen tätigen.

    Ich hoffe ich konnte mich Verständlich ausdrücken. Falls nicht, dann würde ich es gerne nochmal etwas anders Beschreiben.

    Daher meine Frage mit dem 2 dimensionale Arrays.

    MfG
    Daniel
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    Crashbreaker, 1. Februar 2016
    #14
  15. Man könnte auch der Funlktion einen ordentlichen SQL-String übergeben und die Funktion mehrfach aufrufen.

    Ein eindimenionales Array kann man auch mit 2-er Schrittweite auswerten.

    "Der Kopf ist rund, damit das Denken die Richtung wechseln kann."
     
Thema:

2 dimensionales Array als Parameter übergeben

Die Seite wird geladen...
  1. 2 dimensionales Array als Parameter übergeben - Similar Threads - dimensionales Array Parameter

  2. Mittelwert aus mehreren Spalten als dynamisches Array

    in Microsoft Excel Hilfe
    Mittelwert aus mehreren Spalten als dynamisches Array: Hallo liebes Forum, ich bin bei folgendem Problem ratlos: Ich berechne für verschiedene Dozenten Feedback anhand von 3 verschiedenen Kriterien. Die Stammdaten der Feedbacks stehen in einer...
  3. Adressen in eine Zelle bei Übereinstimmung eindeutiger Werte einer anderen Spalte

    in Microsoft Excel Hilfe
    Adressen in eine Zelle bei Übereinstimmung eindeutiger Werte einer anderen Spalte: Hallo zusammen, wer letzteren Thread kennt, hier eine Neuauflage. Problem: Aus Array-Berechnungen (Variablen von Let) ein weiteres Array zu erzeugen, welches für alle eindeutigen Werte aus G die...
  4. Zahlendubletten im Array

    in Microsoft Excel Hilfe
    Zahlendubletten im Array: Guten Morgen liebe Community, anbei ein vereinfachtes Beispiel der Problematik, da das Original mehrere LAMBDA-Funktionen und Tabellen mit einbezieht. Ich benötige die Lösung, um eine weitere...
  5. Array aus Excel Tabelle einlesen Word VBA

    in Microsoft Excel Hilfe
    Array aus Excel Tabelle einlesen Word VBA: Hallo, ich benötige in einer Word Datei die Werte einer Excel Datei. Ich würde gerne eine Spalte als Array einlesen. Wie das Array ein lesen in Excel geht weiß ich, aber wie schaffe ich den...
  6. Summenteilergebnis eines Arrays als Array darstellen

    in Microsoft Excel Hilfe
    Summenteilergebnis eines Arrays als Array darstellen: Hallo Community, Summenteilergebnis eines Arrays als Array darstellen. An dieser Stelle stecke ich fest. Ich habe eine Testmappe erstellt, die die Problematik versucht darzustellen. Bevor jemand...
  7. Formel bei Veränderung von dynamischem Array "mitziehen"?

    in Microsoft Excel Hilfe
    Formel bei Veränderung von dynamischem Array "mitziehen"?: Hallo liebes Forum, ich komme bei folgendem Problem nicht weiter und habe mir hier etwas Hilfe erhofft: Ich habe eine Tabelle mit Feedbacks zu Lehrgängen/Kursen. Diese will ich nach Dozent erst...
  8. 2 Dimensionales Array an andere Sub übergeben

    in Microsoft Excel Hilfe
    2 Dimensionales Array an andere Sub übergeben: Hallo zusammen wie kann ich ein 2 Dimensionales Array an eine andere Prozedur übergeben ? Hätte gerne eine allgemeine Erklärung, da die Beispiele im Netz in der Regel auf ein Excel-Sheet bezogen...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden