| |
Visual-Basic EinsteigerZeilenzahl in Datentyp variant ermittel | | | Autor: NMueller | Datum: 22.08.16 09:19 |
| hallo, ich lese aus einer Datenbank felder aus und stelle diese in einen Datentyp variant mit der getrow Methode. Dazu setze ich den numerischen wer von Getrow auf 200.
Nun möchte ich den tatsächlich geladene Zeilenzahl ermitteln, finde aber keine passende Funktion.
Ubound zeigt den wert 2 bei ca 94 zeilen. Jeder über den geladenen WErt gemacht zugriff führt zum Fehler falscher Index | |
Re: Zeilenzahl in Datentyp variant ermittel | | | Autor: Blackbox | Datum: 22.08.16 09:57 |
| Hallo,
Du bekommst durch GetRows immer eine mehrdimensionale Array zurück (wenn mehr als 1 Spalte vorhanden und
diese abgefragt wurden)
Array(Zeilen, Spalten) und dieses noch auf Null basierend.
NumRows = Ubound(Variant-of-GetRows, Anzahl-Spalten) + 1
Anzahl-Spalten ist optional und ist immer 1, wenn nichts angegeben wurde | |
Re: Zeilenzahl in Datentyp variant ermittel | | | Autor: NMueller | Datum: 22.08.16 10:52 |
| danke für die schnelle Antwort.
Ubound (wie vorgeschlagen) erzeugt bei der zuweisung auf eine Variable den Fehler indexwert und den Wert 3
daten = typ variant
anz_for = UBound(daten, 3) + 1 = fehler indexwert
bei
anz_for = UBound(daten, 1) + 1 erhalte ich den wert 3
Statments:
Function get_vhb_forms(daten)
Dim anz_for As Long
dbfile = parampath & "\" & paramfile
Set db = Workspaces(0).OpenDatabase(dbfile, False, False)
Set formulare1 = db.OpenRecordset("Select formnr, eigner, form_art from formulare where eigner = 'VHB'")
anz_for = formulare1.RecordCount
' daten 0 =formular
' daten 1 = eigner
' daten 2 = druckort
While Not formulare1.EOF
daten = formulare1.GetRows(200)
Wend
anz_for = UBound(daten, 1) + 1
formulare1.Close
db.Close
End Function | |
Re: Zeilenzahl in Datentyp variant ermittel | | | Autor: Rippler | Datum: 22.08.16 14:18 |
| siehe hier
http://www.vbarchiv.net/forum/id13_i17962t17953_mdb-felder-auslesen-und-in-array-speichern.html
| |
Re: Zeilenzahl in Datentyp variant ermittel | | | Autor: Blackbox | Datum: 22.08.16 18:46 |
| Hallo,
Du erhälst ein auf Null basiertes Array, das heißt, wenn Du drei Spalten hast,
so musst Du als Spaltenwert 2 eintragen (0=1,1=2, 2=3).
Davon habe ich aber geschreiben ;) | |
Re: Zeilenzahl in Datentyp variant ermittel | | | Autor: NMueller | Datum: 23.08.16 08:03 |
| Besten Dank für den Hinweis, mit der Methode von Rippler funktioniert es | |
Re: Zeilenzahl in Datentyp variant ermittel | | | Autor: Blackbox | Datum: 23.08.16 10:17 |
| Hallo,
natürlich funktioniert das Beispiel von Rippler. Mich wundert es, warum das Beispiel von Microsoft bei Dir nicht funktioniert und habe es mit einer Northwind-DB (Office 2013) geprüft. Ich habe aus der Northwind die Tabelle Customer List in ein altes Excel-Format exportiert und das mit DAO in einen Recordset geladen. Die Excel-Tabelle habe ich vorher in MyTable umbenannt. (Das Datenbankformat
meiner NorthWind-DB ist für DAO nicht bekannt).
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim ar As Variant
Set db = DBEngine.OpenDatabase("C:\Users\Blacky\Desktop\Customer_List.xls", _
False, False, "Excel 8.0")
Set rs = db.OpenRecordset("MyTable$")
ar = rs.GetRows(200) '200 = Maximum angenommener Zeilen
Debug.Print UBound(ar, 2) + 1 Ergebnis ist 29 Zeilen; das ist korrekt. Der Unterschied im Beispiel von Rippler ist die
durch Rs.MoveLast/RS.MoveFirst verbrauchte Zeit.
TB.MoveLast
Anzahl = TB.RecordCount
TB.MoveFirst
wert = TB.GetRows(Anzahl) Mein Irrtum war, dass der zweite Parameter nicht die
Anzahl der Spalten bedeutet, sondern tatsächlich 2 sein muss, wie es MS vorgibt.
Bei ein paar Datensätzen merkt man den Unterschied der beiden Versionen nicht. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|