Nix&Alleswisser
Grünschnabel
Hallo,
ich probiere das Forum einfach mal aus - bin ein New-User. Habe mich natürlich mit der Suche bemüht
Aufgabenstellung:
Eine Listbox stellt die Feldwerte mehrere Felder da, die z.B. durch Kommata und/oder Klammern getrennt werden. Der Anwender (AW) kann neue Einträge der Listbox hinzufügen, ändern oder löschen (über Textfelder und entsprechende Schaltflächen). Beim Schließen des Formulars werden die Änderungen in eine SQL-Tabelle zurückgeschrieben.
Vorgeschichte:
Ich habe aus der SQL-Tabelle ein Recordset (RS) nach VB6 geladen. Danach habe ich aus diesem RS noch einmal ein weiteres RS "rsListe" per Schleife erzeugt (nicht per Clone, da ich an "rsListe" noch eine weitere Spalte drangehängen musste - die gibt dann die Info, was mit dem Datensatz geschehen ist).
Das RS "rsListe" ist gut angekommen - die Tests für jedes Feld jedes "Datensatzes" des RS belegen dies. Das RS "rsListe" bleibt auch solange bestehen, bis das Formular geschlossen wird. Das ursprüngliche RS von SQL ist jetzt ohne weitere Bedeutung (existiert nicht mehr).
Problembeschreibung:
Im RS "rsListe" gibt es ein Feld "ID" mit Ganzahlwerte. Wenn der AW einen neuen Eintrag in die Listbox erfasst, bekommt gleichzeitig im Hintergrund das RS per rsListe.AddNew einen neuen Datensatz, mit der nächsthöheren ID (und den entsprechenden Eingabewerten in den Feldern).
Ich benötige nun einen Befehl, der mir den bisher höchsten ID-Wert aus diesem RS liefert. ACHTUNG: Ich arbeite nicht mit einer Tabelle, sondern nur mit einem RS, dass ständig erweitert werden kann. Am RecordsetCount kann ich das nicht festmachen, da die ID`s z.B. so lauten: 1, 2, 7, 12.
Man kann das auf 3 Arten lösen:
a) Schon beim Erzeugen des RS lasse ich mir von SQL ein Rückgabeparameter mitgeben, welcher mir die höchste ID angibt [in SQL per Max(Feldname) ermittelt]. Diesen lege ich in einer Variablen (Gültigkeit auf Formularebene) ab und sie wird immer hochaddiert.
b) Ich könnte das RS per Schleife im Feld ID durchlaufen lassen und immer, wenn es eine höhere ID ist, in einer Variablen ablegen. Zum Schluss dann habe ich den höchsten Wert der ID`s herausbekommen und kann damit weitermachen.
c) Ich gehe im RS zum letzten Datensatz und lasse mir die ID anzeigen. Das setzt aber voraus, dass das RS aufsteigend nach der ID erstellt wurde.
Nun a, b, c sind eigentlich Krücken. Gibbet es da nicht sowas ähnliches wie:
Max(rsListe("ID")) ? VB6 kennt den Befehl nicht.
Danke und Gruß
Nix&Alleswisser
ich probiere das Forum einfach mal aus - bin ein New-User. Habe mich natürlich mit der Suche bemüht

Aufgabenstellung:
Eine Listbox stellt die Feldwerte mehrere Felder da, die z.B. durch Kommata und/oder Klammern getrennt werden. Der Anwender (AW) kann neue Einträge der Listbox hinzufügen, ändern oder löschen (über Textfelder und entsprechende Schaltflächen). Beim Schließen des Formulars werden die Änderungen in eine SQL-Tabelle zurückgeschrieben.
Vorgeschichte:
Ich habe aus der SQL-Tabelle ein Recordset (RS) nach VB6 geladen. Danach habe ich aus diesem RS noch einmal ein weiteres RS "rsListe" per Schleife erzeugt (nicht per Clone, da ich an "rsListe" noch eine weitere Spalte drangehängen musste - die gibt dann die Info, was mit dem Datensatz geschehen ist).
Das RS "rsListe" ist gut angekommen - die Tests für jedes Feld jedes "Datensatzes" des RS belegen dies. Das RS "rsListe" bleibt auch solange bestehen, bis das Formular geschlossen wird. Das ursprüngliche RS von SQL ist jetzt ohne weitere Bedeutung (existiert nicht mehr).
Problembeschreibung:
Im RS "rsListe" gibt es ein Feld "ID" mit Ganzahlwerte. Wenn der AW einen neuen Eintrag in die Listbox erfasst, bekommt gleichzeitig im Hintergrund das RS per rsListe.AddNew einen neuen Datensatz, mit der nächsthöheren ID (und den entsprechenden Eingabewerten in den Feldern).
Ich benötige nun einen Befehl, der mir den bisher höchsten ID-Wert aus diesem RS liefert. ACHTUNG: Ich arbeite nicht mit einer Tabelle, sondern nur mit einem RS, dass ständig erweitert werden kann. Am RecordsetCount kann ich das nicht festmachen, da die ID`s z.B. so lauten: 1, 2, 7, 12.
Man kann das auf 3 Arten lösen:
a) Schon beim Erzeugen des RS lasse ich mir von SQL ein Rückgabeparameter mitgeben, welcher mir die höchste ID angibt [in SQL per Max(Feldname) ermittelt]. Diesen lege ich in einer Variablen (Gültigkeit auf Formularebene) ab und sie wird immer hochaddiert.
b) Ich könnte das RS per Schleife im Feld ID durchlaufen lassen und immer, wenn es eine höhere ID ist, in einer Variablen ablegen. Zum Schluss dann habe ich den höchsten Wert der ID`s herausbekommen und kann damit weitermachen.
c) Ich gehe im RS zum letzten Datensatz und lasse mir die ID anzeigen. Das setzt aber voraus, dass das RS aufsteigend nach der ID erstellt wurde.
Nun a, b, c sind eigentlich Krücken. Gibbet es da nicht sowas ähnliches wie:
Max(rsListe("ID")) ? VB6 kennt den Befehl nicht.
Danke und Gruß
Nix&Alleswisser