| |
|
|
- Seite 1 - |
|
holmol93 | Hallo miteinander
Ich bin neu hier und erst seit Kurzem mit xProfan unterwegs. Version wäre X2.
Die xProfan Lehrbücher habe ich zu diesem Thema schon durchsucht, habe jedoch keine spezifische (und für mich nachvollziehbare) Lösung gefunden...
Verzeiht wenn ich ein wenig dumm frage oder so
Nehmen wir an, ich hätte eine Datenbank von Schülern. Gespeichert sind die üblichen Daten wie Name und Adresse, Gebursdatum und die Klasse. In unterschiedlichen für das in der Struktur definierten Spalten.
Ich möchte dann eine Liste aller Schülernamen, die in Klasse 5 sind, auflisten.
Das heisst, ich müsste in der DB zuerst einmal mit db("seek") nach einem Datensatz mit Klasse 5 suchen. Da hört mein Verständnis aber schon auf, die Funktion liefert mir ja nur einen Datensatz, den zutreffendsten...
Wie müsste ich das genau angehen?
Greetz,
Danny |
|
|
| |
|
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
H.Brill | Die Anzahl Datensätze brauchst du noch nicht mal. Es gibt ja Systemvariablen zum Abfragen, hier %dbEof Mal so aus dem Stehgreif :
Code : Declare Satznr& ClearList ' unsichtbare Listbox löschen @db("Go", "Top") ' auf 1. Datensatz springen WhileNot %dbEof ' Systemvariable, die End Of File prüft Satznr& = db("Seek", "Feldname", "Suchbegriff", 2) ' letzter Param. = Genauigkeit ' in deinem Falle z.B. : Satznr& = db("Seek", "Klasse", "5", 2) If Satznr& > 0 ' DS gefunden ' mit db("Get",...) oder db("GetField", ...) Feld oder Felder auslesen ' und z.B. in die unsichtbare und mit ClearList gelöschte Listbox schreiben ' z.B. AddString db("get", "Feldname 1") + db("get", "Feldname 2") usw. ' db("Seek",...) positioniert ja auf gefundenen DS EndIf db("Go", "Next") ' nächster DS EndWhile @Listbox$("Gefundene Datensätze", 1) |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 24.04.2013 ▲ |
|
|
|
|
|
RGH | Hallo Danny,
nach der Suche mit db("seek") ist der aktuelle Datensatz die erste Fundstelle. Da die Suche immer beim aktuellen Datensatz beginnt, gehst Du anschließend mit db("go","NEXT") auf den nächsten Datensatz und suchst erneut mit db("seek"). Dann wird der zweite Datensatz der Klasse gefunden. Das wiederholst Du in einer Schleife so lange, bis kein Datensatz mehr gefunden wird.
Gruß Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 24.04.2013 ▲ |
|
|
|
|
holmol93 | Hey Roland,
viiielen Dank für die schnelle Info, das hab ich nicht gewusst, dass die "seek"- suche beim aktuellen Datensatz anfängt zu suchen... Ich dachte, die sucht jedesmal von Anfang an und dann wäre ich ja immer auf den selben Datensatz gekommen... So ergibt das für mich aber einen Sinn!
Das heisst, ich lese Anfangs aus, wieviele Gesamtdatensätze eine Datenbank hat und lasse die Schleife solange laufen, bis genau diese Anzahl eingelesen ist
Werde es gerade einmal ausprobieren, wenn ich daheim bin
Greeetz, Danny |
|
|
| |
|
|
|
H.Brill | Die Anzahl Datensätze brauchst du noch nicht mal. Es gibt ja Systemvariablen zum Abfragen, hier %dbEof Mal so aus dem Stehgreif :
Code : Declare Satznr& ClearList ' unsichtbare Listbox löschen @db("Go", "Top") ' auf 1. Datensatz springen WhileNot %dbEof ' Systemvariable, die End Of File prüft Satznr& = db("Seek", "Feldname", "Suchbegriff", 2) ' letzter Param. = Genauigkeit ' in deinem Falle z.B. : Satznr& = db("Seek", "Klasse", "5", 2) If Satznr& > 0 ' DS gefunden ' mit db("Get",...) oder db("GetField", ...) Feld oder Felder auslesen ' und z.B. in die unsichtbare und mit ClearList gelöschte Listbox schreiben ' z.B. AddString db("get", "Feldname 1") + db("get", "Feldname 2") usw. ' db("Seek",...) positioniert ja auf gefundenen DS EndIf db("Go", "Next") ' nächster DS EndWhile @Listbox$("Gefundene Datensätze", 1) |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 24.04.2013 ▲ |
|
|
|
|
holmol93 | Heyyy H.Brill
Vielen lieben Dank für die Mühe, das ist die Allzwecklösung für praktisch jede DB Ausleseanfrage, die ich mir überlegt habe, Wahnsinn Hätte vor allem nicht gedacht, dass es dafür nur so wenige Zeilen Quelltext benötigt
Auf jeden Fall vielen herzlichen Dank hat auf Anhieb geklappt, auch das Schreiben damit in ChoiceBoxen und andere Elemente
Gruess,
Danny |
|
|
| |
|
|