[VB 6.0] Problem mit DAO und sortieren der Datenbank!

charmin

Fleet Admiral Pro
Registriert
Mai 2004
Beiträge
10.274
Hallo,


also ich habe ein Projekt am Laufen für die Schule und bin soweit fast fertig. Nur muss ich jetzt noch die Datenbank (Access 2000) soriteren, damit ich Plätze zuweisen kann und des beim Drucken von Urkunden berücksichtigen kann.
Zur Steuerung verwende ich DAO. Ich kann problemlos ne Tabelle (Flex-Grid) sortieren, aber des mit der Datenbank heut net hin. Ich jhab auch keine Literatur etc. gefunden. Ich weis mit ADO sollte es gehen, aber in der Schule arbeiten wir mit DAO. Ausser mann könnte nur die sortierung über ADO laufen lassen, dass wäre OK.

Ich brauche eure Hilfe um das in Code umzusetzen! :D



gruß CHarmin
 
Mal allgemein formuliert.

Generiere einen Index mit der gewünschten Sortierung und setze diesen als aktiv.
Das müsste doch in ADO und DAO gehen.

MfG

Arnd
 
?? da steh ich jetz aufm schlauch :eek: .

Ich hab eine DB wo nach ner Zeitmessung die zeiten zu den Teilnehmern dazugespeichert werden. Die haben ja unterschiedliche Zeiten und die würde ich jetzt gerne auf- / absteigend sortieren können. Dann könnte ic hanhand der sortierung, also der Position in der DB denen Plätze zuweisen, welche ich dann beim drucken autom. auf der Urkunde anzeigen könnte.
(wenn ich mich unklar ausdrücke bitte brüllen! :D )
ich kann auch das Projekt per mail schicken an die die es mal vor Augen haben wollen zum finden einer Lösung.


gruß Charmin

BTW: Es gibt ne Eingenschaft "sort", aber des klappt net, steht auch in der MSDN das des net geht.
 
Hallo charmin,

in C++ gibt es

CDaoTableDef::CreateIndex
void CreateIndex( CDaoIndexInfo& indexinfo );

D.h. DAO kann es, damit sollte es dann doch auch in VB6 gehen?
Wie das konkret heisst musst Du in der Online Hilfe nachschauen.

Wenn mich meine Erinnerung nicht trügt basiert DAO doch auf ODBC und damit SQL.
D.h. schlimmstenfalls musst Du ein SQL Statement (CREATE INDEX) an den ODBC Treiber absetzen.

MfG

Arnd
 
Zuletzt bearbeitet:
Hi,

also ich hatte gehofft das es ein wenig unkomplizierter geht. Na ja drückt mir die Daumen das ich das noch Hinbekomm den in 10 Tagen ist abgabe. :( ;)

gruß Charmin
 
Hallo charmin,

es geht auch einfacher, durchlaufe einfach die gesamte Datenbank und sortiere den aktuellen Datensatz in die Listbox ein.

D.h. im FormLoad eine While Schleife die die DB durchskipped und eine zweite Routine die einen Datensatz in eine Listbox einsortiert.

Ist nur ein bisschen Logik und hat nichts mit Windows API Tiefen zu tun.

Der Nachteil ist dann das man nicht direkt in der Listbox (so wie im DBGrid) Daten eingeben kann. Das muss dan halt über eine Eingabemaske erfolgen.

MfG

Arnd
 
Danke! nach sowas hab ich gesucht. Ich hatte mir überlegt alles in ein Dyn. Array zu laden. Aber ich glaub das mit der list ist besser. Danke.


gruß Charmin
 
Hallo charmin,

der Nachteil dabei ist halt das bei einer grossen DB, also wenn es an die tausend Datensätze oder noch besser zehntausend DS :-) geht die Anwendung oder eben der Dialog sehr lange braucht bis er sichtbar ist.
Schliesslich muss die ganze DB durchsucht werden. Da sind also einige Optimierungen sinnvoll.

Z.B. wäre ein separater Thread praktisch der die Aufgabe erledigt. D.h. die Listbox wird sofort angezeigt und im Hintergrund füllt ein Thread die Listbox mit Daten.

Es ist auch nicht unbedingt nötig die Listbox komplett zu füllen, schliesslich werden nur eine Bildschirmseite Daten angezeigt. Der Trick ist dann nur sich in das scrollen der Listbox zu hängen und dann die nächste Seite an Daten erst zu holen wenn der User in der Listbox scrollt.

Und zu dem Array, auch das muss dem Anwender irgendwie angezeigt werden.

MfG

Arnd
 
Na ja so ein Problem hab ich nicht, da da höchstens so 50 Einträge drinne sind, eher sogar weniger. Deshalb hab ic auch Dao genommen, weil der Speed bei so wenig Datensätzen eigentlich egal ist.


gruß Charmin


EDIT:angezeigt werden die Datensätze in ner Tabelle und in Textfeldern. Die Tabelle kann ich auch sortieren, aber damit alles automatisch abläuft (und es tut alles bis auch die blöde sortierung) muss ich halt die Datenbank sortieren (die Tabelle) damit ich auf der Urkunde die Plazierung autom. eintragen kann beim drucken. Ich werd heute mal en bissel rumprobieren. :D
 
Zuletzt bearbeitet:
Dann ginge es aber auch ganz ohne Datenbankengine.
Siehe dynamisches Array und eine einfache Textdatei.

MfG

Arnd
 
Ich weis hatte ich mir auch überlegt, aber des war glaub so gefordert mit ner DB in Access. Is eigentlich Schwachsinn bei den paar Datensätzen aber was solls. :lol:


groß Charmin
 
So nochmal ich :D .

ich hab mich ne Weile hingesetzt und was anderes programmiert da ist mir was eingefallen. Eigentlich hatte ich dasschon ausprobiert, aber da hatte es nicht geklappt :freak: , aber jetzt klappts :eek: ! na ja danke für deine Ideen.

Die Lösung:

ich habe die Datensätze ja in ner FlexGrid. Die kann ich auch sortieren und nach dem sortieren lade ich jeden Datensatz zurück in die Datrenbank, ich leg die also neu an und so funktionierts. Ist ein bisschen umständlich aber des ist ja egal.


gruß Charmin
 

Ähnliche Themen

Antworten
4
Aufrufe
1.347
Zurück
Oben