Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VBA: msflexgrid mit 122000 Zeilen aus MS SQL Server fuellen (war: VBasic meflexgrid)

Empfohlene Antworten

Hallo zusammen,

ich habe gerade versucht ein msflexgrid mit 122000 Zeilen zu füllen.

VB sagt dazu "Laufzeitfehler 30006 - Reservieren von Speicher für FlexTabelle nicht möglich".

Beim Testen habe ich heraugefunden das VB bis 87500 Zeilen mitgeht danach kommt dieser Fehler.

Hat jemand eine Idee wie ich mehr Zeilen einfügen kann oder eine andere Lösung?

MfG

MichaK

Hmm...

Hört sich so an also ob für FlexGrid nur eine bestimmte

Menge an Speicher verfügbar ist.

Wie wäre es mit einer Art Paging-Funktion wie

bei mehrseitigen Tabellen unter HTML.

Ich würde halt nicht alles auf einmal anzeigen wollen, bzw. die Zeilen indizieren (A-Z, 0100 - 0900 oder so)

Nimmst du Flexgrid für eine Benutzeroberfläche her ?

122000 Zeilen sind meines Erachtens nicht besonders übersichtlich.

Ja das Grid ist für eine Benutzeroberfläche

Das mit der Paging Funktion werde ich wohl machen.

Ich fülle ein recordset mit den Datensätzen aus einem MS SQL Server, kannst du mir vielleicht noch sagen wie ich nur die ersten 80000 Datensätze selektiere und dann die nächsten 80000 Datensätze ?????

MfG

MichaK

Original geschrieben von MichaK

Ja das Grid ist für eine Benutzeroberfläche

Das mit der Paging Funktion werde ich wohl machen.

Ich fülle ein recordset mit den Datensätzen aus einem MS SQL Server, kannst du mir vielleicht noch sagen wie ich nur die ersten 80000 Datensätze selektiere und dann die nächsten 80000 Datensätze ?????

MfG

MichaK

Ok, ich weiss ned wie die Verwendung oder die Datenstruktur deiner Datenbank ausschaut.

Aber 80000 im FlexGrid zu scrollen find ich schon brontal. :D

Gerade wenn ich eine bestimmte Zeile suche.

Zu deiner Selektion...

Eine Möglichkeit wäre in deiner DB-Tabelle eine Indexspalte (Unique) mit Laufnummer einzufügen (AutoID, ist aber nur sinnvoll bei statischen Daten ohne grosses Löschen)

Also:

ID Name, etc....

1 Hans Wurst

...

80000 Axel Schweiss

80001 Anton Reinsch

...

Der PageSelect schaut dann so aus:

SELECT Blabla.... FROM Tabelle WHERE ID BETWEEN 1 AND 80000

letzer:

SELECT Blabla.... FROM Tabelle WHERE ID BETWEEN 80001

AND MAX(ID) --> also 122000

Ich füg noch was hinzu, falls ich was besseres finde.

2. Idee:

Ich weiss jetzt natürlich ned mit welchem FrontEnd du arbeitest, aber unter VB/ASP ist es mit Recordsets einfach zu realisieren. Du kannst ja erstmal alle Daten da reinprügeln und dann bis zur gewünschten Obergrenze durchschleifen (0 -79999, 80000 - 122000)

Das geht halt dann mehr zu Lasten FrontEnds, dafür hast du nur einen Datenbank-Call...

Irgendwie hab ich mal was von Paging-Eigenschaften des Recordsets gelesen. Da empfehle ich dir einfach in der MSDN nachzuschlagen.

Original geschrieben von Sergeant Hartman

SELECT Blabla.... FROM Tabelle WHERE ID BETWEEN 1 AND 80000

letzer:

SELECT Blabla.... FROM Tabelle WHERE ID BETWEEN 80001

AND MAX(ID) --> also 122000

Ich finde das ein wenig problematisch...

Schau doch mal nach der Funktion "LIMIT" in SQL... So kannst du dir z.B. mit "LIMIT = 50" die ersten 50 Datensätze anzeigen lassen...

Original geschrieben von developer

Ich finde das ein wenig problematisch...

Schau doch mal nach der Funktion "LIMIT" in SQL... So kannst du dir z.B. mit "LIMIT = 50" die ersten 50 Datensätze anzeigen lassen...

Seh da keine Probleme.

Das einzigste Unstimmigkeit liegt eventuell darin, das bei vielen Löschenanweisungen Lücken in den Datensätzen entstehen (zwecks Auto-ID), bei der blockweisen Abfrage ergeben sich dann dadurch nicht mehr exakt 80000 Datensätze. Aber daraufhin hab ich ja gewarnt, es eignet sich i.d.R. nur für statische Daten.

Hmm, also speziell für TSQL beim MS SQL Server gibt es dafür

die TOP-Erweiterung für das SELECT-Statement. Ich denke die ist passender als Limit.

SELECT TOP n [PERCENT] Spaltenname1, Spaltenname2,. etc. FROM Tabelle....

n versteht sich hierbei entweder als absolute Zahl, bzw. du kannst sie in Verbindung mit Percent (optional) als Prozentwert angeben.

Allerdings sehe ich darin keine Lösung des Problems, da dadurch nur die ersten 80000 Datensätze abgerufen werden können. Stellt sich dann die Frage wie du die restlichen Datensätze abrufen willst.

@MichaK

Wie schauts denn mit dem FlexGrid bei dir aus ?

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.