Hallo zusammen,
durch die beiden hier dargestellten Subroutinen kann ich einmal nach einem bestimmten Kundendatensatz suchen
sub Formulardatensatz_suchen(aForm,aKundenID)
Dim Sql as String
Sql = "Select"
Sql = Sql +" * from "
Sql = Sql + chr(34)+"Kunden"+chr(34)
Sql = Sql + " where "
Sql = Sql + chr(34)+"KundenID"+chr(34)
Sql = Sql + " = "+aKundenID
Felder_schreiben(Sql)
end Sub
und den gefundenen Kundendatensatz mit der nachfolgenden Subroutine in die Formularfelder schreiben
sub Felder_schreiben(sql)
dim oDoc as object
dim odrawpage as object
Dim oform as object
dim oList as Object
Dim ResultSet as Object 'Ergebnis einer SQL-Abfrage
dim Ergebnis as String 'Auslesen des Resultset
Datenbankkontakt(Sql,ResultSet)
oDoc = thisComponent 'das Dokument
odrawpage = oDoc.Drawpage 'Zeichenfläche des Formulars einer Datenbank
oForm = odrawpage.Forms.getByName("Kunden") 'Das Formular selbst
oList = oForm.getByName("ListBox-Auswahl") 'Das Kontrollelement
'msgbox oList.name
i=0
if not isNull(resultSet) then
while resultset.next
'ergebnis = resultSet.getstring(1)
oForm.getByName("fmtKundenID").Text = resultSet.getstring(1)
oForm.getByName("txtTitel").Text = resultSet.getstring(2)
oForm.getByName("txtVorname").Text = resultSet.getstring(3)
oForm.getByName("txtNachname").Text = resultSet.getstring(4)
oForm.getByName("txtAdresse").Text = resultSet.getstring(5)
oForm.getByName("txtLand").Text = resultSet.getstring(6)
oForm.getByName("txtPLZ").Text = resultSet.getstring(7)
oForm.getByName("txtOrt").Text = resultSet.getstring(8)
oForm.getByName("txtTelefonnr").Text = resultSet.getstring(9)
oForm.getByName("txtHandynr").Text = resultSet.getstring(10)
oForm.getByName("txteMail").Text = resultSet.getstring(11)
oForm.getByName("txtFax").Text = resultSet.getstring(12)
oForm.getByName("txtFirma").Text = resultSet.getstring(13)
oForm.getByName("txtAbteilung").Text = resultSet.getstring(14)
oForm.getByName("txtAnmerkung").Text = resultSet.getstring(15)
i=i+1
wend
else
msgbox "kein Ergebnis"
exit Sub
end if
end Sub
sub Datensatzanzahl
Dim ResultSet as Object 'Ergebnis einer SQL-Abfrag
Dim Sql as String
Sql = "Select"
Sql = Sql + " count ('"
Sql = Sql + "KundenID"
Sql = Sql + "') from "
Sql = Sql + chr(34)+"Kunden"+chr(34)
Datenbankkontakt(Sql,ResultSet)
if not isNull(resultSet) then
while resultset.next
'resultSet.last()
'ergebnis = resultSet.getRow(1) 'liefert die Nummer des aktuellen Datensates als Long, 1.Zeile = 1
ergebnis = resultSet.getstring(1) + chr(44)
i=i+1
wend
else
msgbox "kein Ergebnis"
exit Sub
end if
Ergebnis = RTrim(left(ergebnis,(len(ergebnis)-1)))
if i=0 then
msgbox "kein Datensatz gefunden"
exit Sub
end if
msgbox ergebnis 'anzahl Records = Datensätze
end Sub
selbst den Dispatcher könnte ich manipulieren und in ihn die KundenID-Nummer hinterlegen. Nur die KundenID-Nummer ist nach mehreren Löschungen nicht der absolute Datenbankrecord.
Gibt es eine Möglichkeit, die erste Subroutine so umzuschreiben, daß sie auch die absolute Recordzahl zum gefundenen Datensatz ausgibt?
Wäre toll, wenn eine/r eine Lösung wüßte.
mit freundlichem Gruß
Werner
HSQLDB, AbsoluteRecord
Moderator: Moderatoren
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: HSQLDB, AbsoluteRecord
...ich habe noch immer nicht verstanden, was Du mit einer solchen (falls überhaupt vorhandenen) Nummer anfangen willst. EINDEUTIG sollte Deine KundenID sein - und das ist doch relevant für Suchen, Verknüpfungen zu anderen Tabellen etc.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: HSQLDB, AbsoluteRecord
Hallo Winfried,
also das Ganze ist so:
Ich habe 3 Auswahlbutton: "Firma", "Nachname" und "Ort". Je nachdem, wie ich mich an meine Kontaktadresse erinnere,
wähle ich den Button an.
In einer Listbox wird mir jetzt die Firma, der Nachname oder der Ort angezeigt. Nun kann ich diese Liste mit dem Ziehbalken durchlaufen, bis ich meine Kontaktadresse gefunden habe. Nun ein doppelklick auf die gefundene Zeile in der Listbox und meine Formularfelder, die ja den Recordsatz der Datentabelle "Kunden" wiedergibt, wird komplett gefüllt.
Für eine Info und für eine Verknüpfung zu einer anderen Tabelle gut genug und ausreichend.
ABER, wenn Du jetzt in den Eingabefeldern eine Änderung vornimmst, z.B. die Telefonnummer aktualisierst, und speicherst, dann hast Du den gerade im Dispatcher dargestellten Recordsatz überschrieben, aber nicht den, den Du im Formular siehst. Den die Formularfelder sind im augenblick nur temporär.
Willst Du aber den wirklichen Recordsatz manipulieren, dann mußt Du auch die wirkliche, physikalischem, absolute Recordnummer wissen.
Ich hoffe, die Erklärung ist ausreichend.
viele Grüße und Danke für Dein Interesse
Werner
also das Ganze ist so:
Ich habe 3 Auswahlbutton: "Firma", "Nachname" und "Ort". Je nachdem, wie ich mich an meine Kontaktadresse erinnere,
wähle ich den Button an.
In einer Listbox wird mir jetzt die Firma, der Nachname oder der Ort angezeigt. Nun kann ich diese Liste mit dem Ziehbalken durchlaufen, bis ich meine Kontaktadresse gefunden habe. Nun ein doppelklick auf die gefundene Zeile in der Listbox und meine Formularfelder, die ja den Recordsatz der Datentabelle "Kunden" wiedergibt, wird komplett gefüllt.
Für eine Info und für eine Verknüpfung zu einer anderen Tabelle gut genug und ausreichend.
ABER, wenn Du jetzt in den Eingabefeldern eine Änderung vornimmst, z.B. die Telefonnummer aktualisierst, und speicherst, dann hast Du den gerade im Dispatcher dargestellten Recordsatz überschrieben, aber nicht den, den Du im Formular siehst. Den die Formularfelder sind im augenblick nur temporär.
Willst Du aber den wirklichen Recordsatz manipulieren, dann mußt Du auch die wirkliche, physikalischem, absolute Recordnummer wissen.
Ich hoffe, die Erklärung ist ausreichend.
viele Grüße und Danke für Dein Interesse
Werner
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: HSQLDB, AbsoluteRecord
Werner,wega hat geschrieben:[...]die Formularfelder sind im augenblick nur temporär.
Willst Du aber den wirklichen Recordsatz manipulieren, dann mußt Du auch die wirkliche, physikalischem, absolute Recordnummer wissen.
ich "arbeite" nicht mit Formularen - kenne daher das von Dir erwähnte Verhalten mit der "temporären" "Dispatcher"-Darstellung nicht.
Wenn Dein Formular mit den Daten der Tabelle(n) verbunden ist, sollte IMHO die Aktualisierung automatisch passieren (die Form wurde "update-fähig" erstellt (letzte Seite des FORM-Wizards, IIRC)
Vielleicht kann Dir einer der anderen Kollegen hier weiter helfen. Noch viel Erfolg!
P.S.: die angezeigte Datensatznummer in einem Form-Browser ist keine DatensatzID - nur die lfd. Nummer des Resultsets. Zwar gibt es in den meisten Datenbanken interne, eindeutige Nummern, die aber nur zur internen Verwaltung genutzt werden. Sie können sich bspw. bei einer Reorganisation ändern...
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)