Hallo Users,
ich habe eine Datenbank erstellt, die ich im Internet zur Verfügung
stellen möchte.
Vorher habe ich in den Tabellen natürlich meine eigenen Daten gelöscht.
Da alle Tabellen einen Index (ID) besitzen, möchte ich Diesen vorher
noch auf 0 (Null) zurücksetzen.
Das Makro: Tabellenindex_runter
erscheint mir für diese Aufgabe geeignet zu sein.
Ich habe das Makro in die Datenbank eingefügt und starte es über einen
Button auf einem Formular.
Dabei erscheint leider schon bei der ersten Zeile die Fehlermeldung:
"BASIC-Laufzeitfehler. Falscher Wert für Eigenschaft."
Ich habe das Makro, so wie es im Handbuch steht in die Datenbank kopiert
und gestartet.
Lediglich offensichtliche Zeilenumbrüche habe ich entfernt, bzw. dort wo
offensichtlich Kommentar vorhanden ist, Diesen auch auskommentiert.
Das Makro sieht jetzt so aus:
SUB Tabellenindex_runter(stTabelle AS STRING)
REM Mit dieser Prozedur wird das automatisch hochgeschriebene
Primärschlüsselfeld
REM mit der vorgegebenen Bezeichnung "ID" auf den niedrigst möglichen Wert
REM eingestellt.
DIM inAnzahl AS INTEGER
DIM inSequence_Value AS INTEGER
oDatenquelle = ThisComponent.Parent.CurrentController '
Zugriffsmöglichkeit aus dem Formular heraus
IF NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
stSql = "SELECT MAX(""ID"") FROM """+stTabelle+"""" ' Der höchste in
"ID" eingetragene Wert wird ermittelt
oAbfrageergebnis = oSQL_Anweisung.executeQuery(stSql) ' Abfrage starten
und den Rückgabewert in einer Variablen oAbfrageergebnis speichern
WHILE oAbfrageergebnis.next
inAnzahl = oAbfrageergebnis.getInt(1) ' Erstes Datenfeld wird ausgelesen
WEND
' nächster Datensatz, in diesem Fall nicht mehr erforderlich, da nur ein
Datensatz existiert
IF inAnzahl = "" THEN ' Falls der höchste Wert gar kein Wert ist, also
die Tabelle leer ist wird der höchste Wert als -1 angenommen
inAnzahl = -1
END IF
inSequence_Value = inAnzahl+1 ' Der höchste Wert wird um 1 erhöht
REM Ein neuer Befehl an die Datenbank wird vorbereitet. Die ID wird als
neu startend ab inAnzahl+1 deklariert.
REM Diese Anweisung hat keinen Rückgabewert, da ja kein Datensatz
ausgelesen werden muss
oSQL_Anweisung1 = oVerbindung.createStatement()
oSQL_Anweisung1.executeQuery("ALTER TABLE """ + stTabelle + """ ALTER
COLUMN ""ID"" RESTART WITH " + inSequence_Value + "")
END SUB
Wo ist denn da mein Fehler?
MfG L-H
--
Liste abmelden mit E-Mail an: discuss+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/discuss/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
Context
- [de-discuss] Tabellenindex_runter · Leo-Hubert Kappes
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.