MichaK Geschrieben 27. Juni 2003 Teilen Geschrieben 27. Juni 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sergeant Hartman Geschrieben 27. Juni 2003 Teilen Geschrieben 27. Juni 2003 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
MichaK Geschrieben 27. Juni 2003 Autor Teilen Geschrieben 27. Juni 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sergeant Hartman Geschrieben 27. Juni 2003 Teilen Geschrieben 27. Juni 2003 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. 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
developer Geschrieben 27. Juni 2003 Teilen Geschrieben 27. Juni 2003 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Sergeant Hartman Geschrieben 30. Juni 2003 Teilen Geschrieben 30. Juni 2003 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 ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.