Zum Inhalt springen

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


MichaK

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...