Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Konvertieren eines Arrays
Gehe zu Seite 1, 2  Weiter
zurück: Beziehung zwischen 2 unterschiedlichen Datumsformaten weiter: Select * from Table+Id Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Offen Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Librasia
Gast


Verfasst am:
10. Dez 2013, 12:12
Rufname:

Konvertieren eines Arrays - Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Hallo Zusammen,

in einer Sub erstelle und befülle ich ein Array aus einem Recordset.
Dieses Array möchte ich an eine andere Sub übergeben, das funktioniert auch soweit.
Allerdings müsste ich das übergebene Array in einen benutzerdefinierten Typ (Type) umwandeln.

Geht das? Wenn ja, wie? Wenn nein, welche Möglichkeiten bestehen sonst noch?

Im Voraus besten Dank für eure Antworten.
KlausMz
Moderator Access


Verfasst am:
10. Dez 2013, 13:17
Rufname:
Wohnort: Irgendwo in der Pfalz


AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Hallo,
Zitat:
welche Möglichkeiten bestehen sonst noch?
um das beantworten zu können, müsste man wissen, wozu man in einer DB ein Array braucht, bzw. was mit dem Array (bzw. dessen Werte) dann passieren soll.

Ein Array ist in einer korrekt aufgebauten Datenbank eher selten bis gar nicht notwendig. Eine Datenbanktabelle ist ja im Grunde genommen bereits ein Array.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Librasia
Gast


Verfasst am:
10. Dez 2013, 14:26
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Hallo,

vielen Dank für deine Antwort.
Die Daten sollen aus der Datenbank gelesen werden, damit ich Berechnungen durchführen kann. Diese sollen aber nicht auf Datenbankebene, sondern im Speicher passieren (ist vielleicht nicht so performant, aber der Code dazu besteht bereits und die Umstellung wäre sehr zeitintensiv).

Viele Grüße
Gast



Verfasst am:
10. Dez 2013, 14:55
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Also Rumwurschteln und Daten hin- und herschichten statt effizient rechnen.
Zitat:
Geht das?
Klar. An die Inhalte eines Arrays kommt man doch ganz simpel.
Zitat:
Wenn ja, wie?
Das fragst Du den, der den benutzerdefinierten Typ vor der Nase hat. Du glaubst, Deine Benutzerdefinition ist allgemein öffentlich bekannt?
Zitat:
welche Möglichkeiten bestehen sonst noch?
Auch das könnte vielleicht jemand beurteilen, der das unbekannte Wesen "Berechnungen im Speicher" kennt - wobei ich mich frage, welche Berechnung nicht in einem Arbeitsspeicher/Gehirn stattfindet ...

Übrigens: Eine Datenbank kann nicht nur Daten speichern, sondern auch mächtige Berechnungen ausführen, und das sehr effizient.
Zitat:
Die Daten sollen [NUR?] aus der Datenbank gelesen werden
Das klingelt schon ein erstes Alarmglöckchen.
Librasia
Gast


Verfasst am:
10. Dez 2013, 15:36
Rufname:


AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Das Problem ist, dass ich die Werte aus dem RecordSet nicht so einfach in den Type speichern kann.
Der Type ist einfach aufgebaut.

Beispiel:

Code:

Type xy
a As Variant
b As Integer
c As Long
End Type


Jetzt möchte ich die erste Spalte aus dem RecordSet in die Variable a aus dem Type schreiben. Warum ich da jetzt nicht weiterkomme weiß ich leider auch nicht Sad
Librasia
Gast


Verfasst am:
10. Dez 2013, 15:38
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Achja, zur Vervollständigung:

Der Type deklariere ich in einer Sub als Array.

Code:

Dim arr() As xy
ReDim arr(10000)
Marmeladenglas
komme zurecht


Verfasst am:
10. Dez 2013, 15:41
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Zitat:
Warum ich da jetzt nicht weiterkomme weiß ich leider auch nicht Sad

Wir allerdings auch nicht Laughing
Wie sehen denn die Versuche dazu aus ?
Gast



Verfasst am:
10. Dez 2013, 15:45
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Übergabe aus dem Recordset
Code:
With rs
   If Not .EOF    ' nicht leer
       .MoveFirst   ' falls Datenzeiger nicht auf erstem Datensatz

       x = .Fields("Feld1")
       y = .Fields("Feld2")

   End If
End With
Gast



Verfasst am:
10. Dez 2013, 15:46
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Nachtrag: Aus dem Recordset kommen die Werte wenigstens datentypensicher. Das Array kennt nut einen Datentyp über alles.
KlausMz
Moderator Access


Verfasst am:
10. Dez 2013, 15:48
Rufname:
Wohnort: Irgendwo in der Pfalz

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Hallo,
und ich bin nach wie der Überzeugung, dass hier ein Array fehl am Platz ist.
Was sind denn das für Berechnungen die ein Array erfordern.
Auch SQL bietet effiziente Berechnungsmöglichkeiten. Und wahrscheinlich auch noch um Längen schneller.

_________________
Gruß
Klaus . . . . . Feedback wäre wünschenswert.
Ich möchte bitte keine unaufgeforderten PN. Fragen bitte im Forum.
Librasia
Gast


Verfasst am:
10. Dez 2013, 16:12
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

@Klaus
Zitat:
und ich bin nach wie der Überzeugung, dass hier ein Array fehl am Platz ist.
Was sind denn das für Berechnungen die ein Array erfordern.

Wie gesagt, es ist zu zeitintensiv um die Umstellung vorzunehmen. Ich weiß, dass die Berechnungen auf Datenbankebene schneller wären.
Das sind Berechnungen die aus einem WordDokument kommen. Konsistenzprüfungen etc.

Mit dem Template von Gast komme ich auch nicht weiter.

Ich habe zwar mehrere Felder, wollte es aber mal mit einem Testen.

Code:

 Set rs = cn.Execute("Select * from Tabelle")

    With rs
        If Not rs.EOF Then
            rs.MoveFirst
            xy(i).a= rs.Fields("a")
        End If
    End With

Hier erhalte ich die Fehlermeldung "Index außerhalb des gültigen Bereichs"

Wenn ich
Code:
xy.a = rs.Fields("a")
laufen lasse, dann erhalte ich die Fehlermeldung "Ungültiger Bezeichner"

Die Daten waren zuvor nur im Hauptspeicher gespeichert und wurden dann berechnet, aufgrund einiger Änderungen würde ich einfach gerne die Daten in die Datenbank schreiben, wieder ausgeben lassen und dann im Speicher berechnen.
Gast



Verfasst am:
10. Dez 2013, 16:21
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Zitat:
Mit dem Template von Gast komme ich auch nicht weiter.
Unter Template verstehe ich etwas anderes (umfassenderes).
Ich zeigte nur, wie Du Daten aus dem Recordset übergeben kannst, in der Annahme, dass Du mit Deinem benutzerdefinierten Typ (der Dir am Herzen liegt) umgehen kannst.
Code:
    Dim xy_0815 AS xy

    With rs
        If Not rs.EOF Then
            xy_0815= rs.Fields("a")
        End If
    End With
Librasia
Gast


Verfasst am:
10. Dez 2013, 16:22
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Nachtrag:

MIt
Code:
xy("a") = rs.Fields("a")

Erhalte ich die Meldung:

"Nur benutzerdefinierte Typen, die in öffentlichen Objektmodulen definiert sind, können in den oder aus dem Typ Variant umgewandelt werden oder an einer zur Laufzeit auflösbare Funktion weitergeleitet werden."

Ich habe xy (also den Type) bereits als Public deklariert. Es liegt alles im gleichen Modul.
Gast



Verfasst am:
10. Dez 2013, 16:23
Rufname:

AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Mist. Es muss natürlich heißen:
Code:
xy_0815.a = rs.Fields("a")
Librasia
Gast


Verfasst am:
10. Dez 2013, 16:26
Rufname:


AW: Konvertieren eines Arrays - AW: Konvertieren eines Arrays

Nach oben
       Version: Office 2010

Code:
Mist. Es muss natürlich heißen:
Code:
xy_0815.a = rs.Fields("a") 


Genau das funktioniert ja nicht.
Wobei ich den Type ja als Array angelegt habe. (Siehe die Posts davor)
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Formulare: Diagramm mittels vba in MS-Grapd Diagramm konvertieren 1 Alex_Alex 400 15. Feb 2012, 13:06
Alex_Alex Diagramm mittels vba in MS-Grapd Diagramm konvertieren
Keine neuen Beiträge Access Berichte: Betrag in Ziffern in Betrag in Worten konvertieren 4 Stachelbär 8685 12. Nov 2011, 17:43
Willi Wipp Betrag in Ziffern in Betrag in Worten konvertieren
Keine neuen Beiträge Access Tabellen & Abfragen: Strings in Datum Konvertieren 8 toef82 1316 13. Sep 2011, 20:44
toef82 Strings in Datum Konvertieren
Keine neuen Beiträge Access Programmierung / VBA: Muss Zahl aus einem Feld lesen und konvertieren... 7 mist3r 707 04. Okt 2010, 11:02
Gast Muss Zahl aus einem Feld lesen und konvertieren...
Keine neuen Beiträge Access Tabellen & Abfragen: Text in Zahlen konvertieren 6 Quester 608 09. Sep 2009, 07:53
Quester Text in Zahlen konvertieren
Keine neuen Beiträge Access Programmierung / VBA: String in Datumsformat konvertieren 23 Knop 4466 10. Jun 2009, 13:46
MissPh! String in Datumsformat konvertieren
Keine neuen Beiträge Access Programmierung / VBA: Datum konvertieren 3 barongsay 1014 25. Mai 2009, 11:39
MissPh! Datum konvertieren
Keine neuen Beiträge Access Programmierung / VBA: Arrays vereinen 1 Gast 702 04. Nov 2008, 23:15
Gasth Arrays vereinen
Keine neuen Beiträge Access Programmierung / VBA: Konvertieren: Text -> Zahl ; Custom -> Zahl 4 gogo80 497 08. Nov 2007, 13:59
gogo80 Konvertieren: Text -> Zahl ; Custom -> Zahl
Keine neuen Beiträge Access Tabellen & Abfragen: In Großbuchstaben "konvertieren" 3 TheBAT 2006 18. Jun 2007, 15:12
TheBAT In Großbuchstaben "konvertieren"
Keine neuen Beiträge Access Programmierung / VBA: Boolean Deutsch zu Englisch Konvertieren? 2 Riggy 1728 17. Jan 2007, 13:33
Riggy Boolean Deutsch zu Englisch Konvertieren?
Keine neuen Beiträge Access Tabellen & Abfragen: date in string konvertieren innerhalb einer select Abfrage 4 samba 5443 23. Nov 2006, 18:50
samba date in string konvertieren innerhalb einer select Abfrage
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: PHP Forum