HSQLDB, AbsoluteRecord
Verfasst: Mi, 11.07.2007 22:17
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
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