P peternmb Well-Known Member Licensed User Longtime User Apr 1, 2022 #1 HAllo, gibt es in B4A eine Möglichkeit, z.B. nach dem Löschen von Datensätzen, die Reihenfolge eines autoincrement-Feldes wieder upzudaten. Was ich bisher im Web gefunden habe funktioniert anscheinend unter B4A nicht, ich erhalte ich eine Syntax-Fehlermeldung. B4X: SQL1.ExecNonQuery2("ALTER TABLE table2 AUTO_INCREMENT=?", Array As Object(1)) Das ist die Fehlermeldung die ich erhalte: android.database.sqlite.SQLiteException: near "AUTO_INCREMENT": syntax error (code 1): , while compiling: ALTER TABLE table2 AUTO_INCREMENT=? Click to expand...
HAllo, gibt es in B4A eine Möglichkeit, z.B. nach dem Löschen von Datensätzen, die Reihenfolge eines autoincrement-Feldes wieder upzudaten. Was ich bisher im Web gefunden habe funktioniert anscheinend unter B4A nicht, ich erhalte ich eine Syntax-Fehlermeldung. B4X: SQL1.ExecNonQuery2("ALTER TABLE table2 AUTO_INCREMENT=?", Array As Object(1)) Das ist die Fehlermeldung die ich erhalte: android.database.sqlite.SQLiteException: near "AUTO_INCREMENT": syntax error (code 1): , while compiling: ALTER TABLE table2 AUTO_INCREMENT=? Click to expand...
b4x-de Active Member Licensed User Longtime User Apr 1, 2022 #2 Hallo, nein, ein Autoincremet wird durch das DBS vergeben. Es wäre falsch, ein Autoinkrement zu verwenden, wenn man damit eine Bedeutung verbinden will. Ich schlage vor, eine weitere Spalte einzufügen, deren Wert dann angepasst werden kann. Viele Grüße Thomas
Hallo, nein, ein Autoincremet wird durch das DBS vergeben. Es wäre falsch, ein Autoinkrement zu verwenden, wenn man damit eine Bedeutung verbinden will. Ich schlage vor, eine weitere Spalte einzufügen, deren Wert dann angepasst werden kann. Viele Grüße Thomas
P peternmb Well-Known Member Licensed User Longtime User Apr 1, 2022 #3 Das verstehe ich soweit, ich habe das Feld ID jetzt als Integer definiert und vergebe die lfd. Nummer bei einem Eintrag selber. Jetzt möchte ich nur, z.B. nach dem Löschen eines Datensatzes alles neu durchnummerieren. So funktioniert es nicht, wo ist mein Fehler? B4X: Sub update_ID Dim TableI As List statement="SELECT ID FROM table2" TableI = ExecuteMemoryTable(SQL1,statement, Null, 0) ' For i = 0 To TableI.Size - 1 SQL1.ExecNonQuery2("UPDATE table2 SET ID=?", Array As Object(i+1)) Next End Sub
Das verstehe ich soweit, ich habe das Feld ID jetzt als Integer definiert und vergebe die lfd. Nummer bei einem Eintrag selber. Jetzt möchte ich nur, z.B. nach dem Löschen eines Datensatzes alles neu durchnummerieren. So funktioniert es nicht, wo ist mein Fehler? B4X: Sub update_ID Dim TableI As List statement="SELECT ID FROM table2" TableI = ExecuteMemoryTable(SQL1,statement, Null, 0) ' For i = 0 To TableI.Size - 1 SQL1.ExecNonQuery2("UPDATE table2 SET ID=?", Array As Object(i+1)) Next End Sub
OliverA Expert Licensed User Longtime User Apr 1, 2022 #4 In SQLite, benuetze rowid und VACUUM. https://www.sqlite.org/rowidtable.html