habe ja schon ab und an mal etwas Hilfe hier bekommen und dachte mir, warum versuchst du dich nicht mal an einem Tool für andere.
Vielleicht ist ja der angehängte Quellcode für PureBasic 4.20 (Final) für die SQLite-Datenbank für den einen oder anderen ganz hilfreich oder bietet gewisse Denkanstösse...?
Hoffe er funktioniert wie vorgesehen, bietet aber derzeit nur die Möglichkeit, die Datenbanktabellen anzuzeigen, zu löschen und die Inhalte der Datenbanktabellen darzustellen.
Code: Alles auswählen
; SQLite-Editor
; Harry Wessner 2008 - bamsagla
#Fenster = 0
#Fenster_Edit = 1
#Database = 0
Ende.b = 0
NewList Sternspeicher.s()
; LinkedList für den Fall, dass mehrere Spalten PrimaryKeys enthalten
Enumeration
#Gadget_Frm_Db
#Gadget_Frm_Tb
#Gadget_Frm_Ct
#Gadget_But_Db_Nw
#Gadget_But_Db_Op
#Gadget_But_Db_Cl
#Gadget_But_Tb_Nw
#Gadget_But_Tb_Op
#Gadget_But_Tb_Dl
#Gadget_But_Tb_Ed
#Gadget_But_Ct_Nw
#Gadget_But_Ct_Dl
#Gadget_But_Ct_Ed
#Gadget_Txt_In
#Gadget_Txt_Cr
#Gadget_Lic_Db
#Gadget_Lic_Tb
#Gadget_Edit_Lic
#Gadget_Edit_Txt_Tb
#Gadget_Edit_Txt_Nm
#Gadget_Edit_Txt_Tp
#Gadget_Edit_Str_Tb
#Gadget_Edit_Str_Nm
#Gadget_Edit_But_Nw
#Gadget_Edit_But_Dl
#Gadget_Edit_But_Ed
#Gadget_Edit_But_Md
#Gadget_Edit_But_Sv
#Gadget_Edit_But_Ab
#Gadget_Edit_Frm_Ed
#Gadget_Edit_Cmb_Tp
#Gadget_Edit_Chk_Un
#Gadget_Edit_Chk_Nn
EndEnumeration
Procedure Allebuttons()
DisableGadget(#Gadget_But_Tb_Op, 1)
DisableGadget(#Gadget_But_Tb_Dl, 1)
DisableGadget(#Gadget_But_Tb_Ed, 1)
DisableGadget(#Gadget_But_Ct_Nw, 1)
DisableGadget(#Gadget_But_Ct_Dl, 1)
DisableGadget(#Gadget_But_Ct_Ed, 1)
EndProcedure
Procedure Aktualisieren(Tabellenname$)
If CountGadgetItems(#Gadget_Lic_Tb) > 0: ClearGadgetItemList(#Gadget_Lic_Tb): EndIf
If DatabaseQuery(#Database, "SELECT * FROM " + Tabellenname$ + ";")
Spalten = DatabaseColumns(#Database)
While NextDatabaseRow(#Database)
Datensatz$ = ""
For Allespalten = 0 To Spalten - 1
Datensatz$ + GetDatabaseString(#Database, Allespalten) + Chr(10)
Next
AddGadgetItem(#Gadget_Lic_Tb, -1, Datensatz$)
Wend
EndIf
SetGadgetState(#Gadget_Lic_Tb, -1)
DisableGadget(#Gadget_But_Ct_Nw, 1)
DisableGadget(#Gadget_But_Ct_Dl, 1)
DisableGadget(#Gadget_But_Ct_Ed, 1)
EndProcedure
Procedure Tabellenladen(Dateiname$)
If Not Dateiname$ = ""
SetWindowTitle(#Fenster, "SQLite-Editor (" + Dateiname$ + ")")
EndIf
If CountGadgetItems(#Gadget_Lic_Db) > 0: ClearGadgetItemList(#Gadget_Lic_Db): EndIf
If CountGadgetItems(#Gadget_Lic_Tb) > 0: ClearGadgetItemList(#Gadget_Lic_Tb): EndIf
Spaltenzahl = SendMessage_(GetWindow_(GadgetID(#Gadget_Lic_Tb), #GW_CHILD), #HDM_GETITEMCOUNT, 0, 0)
For Entferner = 0 To Spaltenzahl - 1
RemoveGadgetColumn(#Gadget_Lic_Tb, 0)
Next
AddGadgetColumn(#Gadget_Lic_Tb, 0, "Tabelleninhalte", 680)
If DatabaseQuery(#Database, "SELECT name FROM sqlite_master WHERE type='table';")
While NextDatabaseRow(#Database)
AddGadgetItem(#Gadget_Lic_Db, -1, GetDatabaseString(#Database, 0))
Wend
EndIf
Allebuttons()
SetGadgetText(#Gadget_Txt_Cr, "SQL: ")
DisableGadget(#Gadget_But_Db_Cl, 0)
EndProcedure
If UseSQLiteDatabase()
If OpenWindow(#Fenster, 0, 0, 750, 550, "SQLite-Editor", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_Invisible)
If CreateGadgetList(WindowID(#Fenster))
Frame3DGadget(#Gadget_Frm_Db, 10, 10, 730, 60, "Datenbankaktionen")
ButtonGadget(#Gadget_But_Db_Nw, 20, 30, 150, 30, "Neue Datenbank erstellen")
ButtonGadget(#Gadget_But_Db_Op, 180, 30, 115, 30, "Datenbank öffnen")
ButtonGadget(#Gadget_But_Db_Cl, 305, 30, 125, 30, "Datenbank schließen")
TextGadget(#Gadget_Txt_In, 440, 30, 290, 30, "Beachten Sie bitte: Jede Änderung in diesem Programm wird sofort in der Datenbank vorgenommen!", 1)
SetGadgetColor(#Gadget_Txt_In, #PB_Gadget_FrontColor, RGB(200, 0, 0))
Frame3DGadget(#Gadget_Frm_Tb, 10, 80, 730, 180, "Tabellen in der Datenbank")
ListIconGadget(#Gadget_Lic_Db, 20, 100, 410, 150, "Datenbanktabellen", 380, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
ButtonGadget(#Gadget_But_Tb_Nw, 440, 100, 290, 30, "Neue Tabelle erstellen")
ButtonGadget(#Gadget_But_Tb_Op, 440, 140, 290, 30, "Markierte Tabelle öffnen")
ButtonGadget(#Gadget_But_Tb_Dl, 440, 180, 290, 30, "Markierte Tabelle löschen")
ButtonGadget(#Gadget_But_Tb_Ed, 440, 220, 290, 30, "Markierte Tabelle bearbeiten")
Frame3DGadget(#Gadget_Frm_Ct, 10, 270, 730, 270, "Inhalte der geöffneten Tabelle")
StringGadget(#Gadget_Txt_Cr, 20, 290, 710, 20, "SQL: ", #PB_String_ReadOnly)
ListIconGadget(#Gadget_Lic_Tb, 20, 310, 710, 180, "Tabelleninhalte", 680, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
ButtonGadget(#Gadget_But_Ct_Nw, 20, 500, 230, 30, "Neuen Datensatz erstellen")
ButtonGadget(#Gadget_But_Ct_Dl, 260, 500, 230, 30, "Markierten Datensatz löschen")
ButtonGadget(#Gadget_But_Ct_Ed, 500, 500, 230, 30, "Markierten Datensatz bearbeiten")
DisableGadget(#Gadget_But_Db_Cl, 1)
DisableGadget(#Gadget_But_Tb_Nw, 1)
DisableGadget(#Gadget_But_Tb_Op, 1)
DisableGadget(#Gadget_But_Tb_Dl, 1)
DisableGadget(#Gadget_But_Tb_Ed, 1)
DisableGadget(#Gadget_But_Ct_Nw, 1)
DisableGadget(#Gadget_But_Ct_Dl, 1)
DisableGadget(#Gadget_But_Ct_Ed, 1)
EndIf
If OpenWindow(#Fenster_Edit, 0, 0, 550, 355, "Tabellenverwaltung", #PB_Window_WindowCentered | #PB_Window_Invisible, #Fenster)
If CreateGadgetList(WindowID(#Fenster_Edit))
TextGadget(#Gadget_Edit_Txt_Tb, 10, 10, 260, 20, "Bitte geben Sie einen Namen für die Tabelle ein:", 512)
StringGadget(#Gadget_Edit_Str_Tb, 270, 10, 270, 20, "")
ListIconGadget(#Gadget_Edit_Lic, 10, 40, 350, 270, "PK", 30, #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_CheckBoxes)
AddGadgetColumn(#Gadget_Edit_Lic, 1, "Spaltenname", 110)
AddGadgetColumn(#Gadget_Edit_Lic, 2, "Typ", 70)
AddGadgetColumn(#Gadget_Edit_Lic, 3, "Optionen", 100)
ButtonGadget(#Gadget_Edit_But_Nw, 370, 40, 170, 25, "Neuen Eintrag")
ButtonGadget(#Gadget_Edit_But_Dl, 370, 75, 170, 25, "Eintrag löschen")
ButtonGadget(#Gadget_Edit_But_Ed, 370, 110, 170, 25, "Eintrag bearbeiten")
Frame3DGadget(#Gadget_Edit_Frm_Ed, 370, 145, 170, 165, "Spalte bearbeiten")
TextGadget(#Gadget_Edit_Txt_Nm, 380, 165, 50, 20, "Name:", 512)
StringGadget(#Gadget_Edit_Str_Nm, 430, 165, 100, 20, "")
TextGadget(#Gadget_Edit_Txt_Tp, 380, 195, 50, 20, "Typ:", 512)
ComboBoxGadget(#Gadget_Edit_Cmb_Tp, 430, 195, 100, 20, #PB_ComboBox_Editable)
AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "INTEGER")
AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "TEXT")
AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "VARCHAR(x)")
AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "NUMERIC")
AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "REAL")
AddGadgetItem(#Gadget_Edit_Cmb_Tp, -1, "BLOB")
CheckBoxGadget(#Gadget_Edit_Chk_Un, 380, 225, 150, 20, "Option: UNIQUE")
CheckBoxGadget(#Gadget_Edit_Chk_Nn, 380, 245, 150, 20, "Option: NOT NULL")
ButtonGadget(#Gadget_Edit_But_Md, 380, 275, 150, 25, "Spalte eintragen")
ButtonGadget(#Gadget_Edit_But_Sv, 10, 320, 250, 25, "Tabelle speichern")
ButtonGadget(#Gadget_Edit_But_Ab, 270, 320, 270, 25, "Änderungen verwerfen")
DisableGadget(#Gadget_Edit_But_Nw, 1)
DisableGadget(#Gadget_Edit_But_Dl, 1)
DisableGadget(#Gadget_Edit_But_Ed, 1)
EndIf
EndIf
HideWindow(#Fenster, 0)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Ende = 1
Case #PB_Event_Gadget
Aktionstyp = EventType()
Select EventGadget()
Case #Gadget_But_Db_Nw
Speicherdatei$ = SaveFileRequester("Datenbank erstellen", "", "SQLite Datenbank (*.sqlite - *.sql)|*.sqlite;*.sql|Beliebige Erweiterung (*.*)|*.*", 0)
If Not Trim(Speicherdatei$) = ""
If GetExtensionPart(Speicherdatei$) = "": Speicherdatei$ + ".sqlite": EndIf
Killfrage = #PB_MessageRequester_Yes
If FileSize(Speicherdatei$) >= 0
Killfrage = MessageRequester("Datei überschreiben?", "Die gewählte Datei existiert bereits!" + Chr(10) + "Möchten Sie die bestehende Datenbank wirklich überschreiben?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
EndIf
If Killfrage = #PB_MessageRequester_Yes
If CreateFile(#Database, Speicherdatei$)
CloseFile(#Database)
If IsDatabase(#Database): CloseDatabase(#Database): EndIf
If OpenDatabase(#Database, Speicherdatei$, "", "")
Tabellenladen(Speicherdatei$)
Else
MessageRequester("Datenbankfehler","Die Datenbank konnte nicht geöffnet werden." + Chr(10) + "Möglicherweise wurde die Datenbank entfernt oder der Quellpfad ist nicht mehr vorhanden.", #MB_ICONERROR)
EndIf
Else
MessageRequester("Dateifehler","Die Datenbank konnte am gewünschten Pfad nicht erstellt werden." + Chr(10) + "Bitte stellen Sie sicher, dass der Pfad vorhanden ist und Sie entsprechende Rechte besitzen.",#MB_ICONERROR)
EndIf
Else
MessageRequester("Datenerstellung abgebrochen","Die Datenbank wurde nicht erstellt." + Chr(10) + "Der Vorgang wurde durch den Benutzer abgebrochen.", #MB_ICONINFORMATION)
EndIf
EndIf
Case #Gadget_But_Db_Op
Offendatei$ = OpenFileRequester("Datenbank auswählen", "", "SQLite Datenbanken (*.sqlite - *.sql)|*.sqlite;*.sql|Alle Dateien (*.*)|*.*", 0)
If Not Trim(Offendatei$) = ""
If IsDatabase(#Database)
CloseDatabase(#Database)
EndIf
If OpenDatabase(#Database, Offendatei$, "", "")
Tabellenladen(Offendatei$)
Allebuttons()
DisableGadget(#Gadget_But_Tb_Nw, 0)
Else
MessageRequester("Datenbankfehler","Die Datenbank konnte nicht geöffnet werden." + Chr(10) + "Möglicherweise wurde die Datenbank entfernt oder der Quellpfad ist nicht mehr vorhanden.", #MB_ICONERROR)
EndIf
EndIf
Case #Gadget_But_Db_Cl
If IsDatabase(#Database)
CloseDatabase(#Database)
SetWindowTitle(#Fenster, "SQLite-Editor")
If CountGadgetItems(#Gadget_Lic_Db) > 0: ClearGadgetItemList(#Gadget_Lic_Db): EndIf
If CountGadgetItems(#Gadget_Lic_Tb) > 0: ClearGadgetItemList(#Gadget_Lic_Tb): EndIf
Spaltenzahl = SendMessage_(GetWindow_(GadgetID(#Gadget_Lic_Tb), #GW_CHILD), #HDM_GETITEMCOUNT, 0, 0)
For Entferner = 0 To Spaltenzahl - 1
RemoveGadgetColumn(#Gadget_Lic_Tb, 0)
Next
AddGadgetColumn(#Gadget_Lic_Tb, 0, "Tabelleninhalte", 680)
DisableGadget(#Gadget_But_Db_Cl, 1)
Allebuttons()
DisableGadget(#Gadget_But_Tb_Nw, 1)
EndIf
Case #Gadget_Lic_Db
If Aktionstyp = #PB_EventType_Change
If GetGadgetState(#Gadget_Lic_Db) = -1
DisableGadget(#Gadget_But_Tb_Op, 1)
DisableGadget(#Gadget_But_Tb_Dl, 1)
DisableGadget(#Gadget_But_Tb_Ed, 1)
Else
DisableGadget(#Gadget_But_Tb_Op, 0)
DisableGadget(#Gadget_But_Tb_Dl, 0)
;DisableGadget(#Gadget_But_Tb_Ed, 0)
EndIf
EndIf
Case #Gadget_But_Tb_Nw
If CountGadgetItems(#Gadget_Edit_Lic) > 0: ClearGadgetItemList(#Gadget_Edit_Lic): EndIf
SetGadgetText(#Gadget_Edit_Str_Tb, "")
SetGadgetText(#Gadget_Edit_Str_Nm, "")
SetGadgetText(#Gadget_Edit_Cmb_Tp, "")
SetGadgetState(#Gadget_Edit_Chk_Un, 0)
SetGadgetState(#Gadget_Edit_Chk_Nn, 0)
DisableWindow(#Fenster,1)
Xpos = WindowX(#Fenster) + 100
Ypos = WindowY(#Fenster) + 110
ResizeWindow(#Fenster_Edit, Xpos, Ypos, #PB_Ignore, #PB_Ignore)
HideWindow(#Fenster_Edit,0)
SetActiveWindow(#Fenster_Edit)
Case #Gadget_But_Tb_Op
If Not GetGadgetState(#Gadget_Lic_Db) = -1
Tabellenname$ = GetGadgetItemText(#Gadget_Lic_Db,GetGadgetState(#Gadget_Lic_Db),0)
If CountGadgetItems(#Gadget_Lic_Tb) > 0: ClearGadgetItemList(#Gadget_Lic_Tb): EndIf
Spaltenzahl = SendMessage_(GetWindow_(GadgetID(#Gadget_Lic_Tb), #GW_CHILD), #HDM_GETITEMCOUNT, 0, 0)
For Entferner = 0 To Spaltenzahl - 1
RemoveGadgetColumn(#Gadget_Lic_Tb, 0)
Next
If CountList(Sternspeicher()) > 0: ClearList(Sternspeicher()): EndIf
If DatabaseQuery(#Database, "PRAGMA table_info('" + Tabellenname$ + "');")
While NextDatabaseRow(#Database)
If GetDatabaseLong(#Database, 5) = 1
AddElement(Sternspeicher()): Sternspeicher() = GetDatabaseString(#Database, 1)
EndIf
Wend
EndIf
If DatabaseQuery(#Database, "SELECT * FROM " + Tabellenname$ + ";")
Spalten = DatabaseColumns(#Database)
For Allespalten = 0 To Spalten - 1
Spaltenname$ = DatabaseColumnName(#Database, Allespalten)
Select DatabaseColumnType(#Database, Allespalten)
Case #PB_Database_Long: Spaltentyp$ = " [1]"
Case #PB_Database_Double: Spaltentyp$ = " [12]"
Case #PB_Database_Quad: Spaltentyp$ = " [123]"
Case #PB_Database_String: Spaltentyp$ = " [A]"
Case #PB_Database_Float: Spaltentyp$ = " [1.2]"
Default: Spaltentyp$ = " [???]"
EndSelect
ForEach Sternspeicher()
If Sternspeicher() = Spaltenname$
Spaltentyp$ + " [!]"
SetGadgetData(#Gadget_Lic_Tb, Allespalten)
EndIf
Next
AddGadgetColumn(#Gadget_Lic_Tb, Allespalten, Spaltenname$ + Spaltentyp$, 100)
Next
While NextDatabaseRow(#Database)
Datensatz$ = ""
For Allespalten = 0 To Spalten - 1
Datensatz$ + GetDatabaseString(#Database, Allespalten) + Chr(10)
Next
AddGadgetItem(#Gadget_Lic_Tb, -1, Datensatz$)
Wend
EndIf
If DatabaseQuery(#Database, "SELECT sql FROM sqlite_master WHERE type='table' AND name='" + Tabellenname$ + "';")
NextDatabaseRow(#Database)
SetGadgetText(#Gadget_Txt_Cr, "SQL: " + GetDatabaseString(#Database, 0))
EndIf
EndIf
Case #Gadget_But_Tb_Dl
If Not GetGadgetState(#Gadget_Lic_Db) = -1
Tabellenname$ = GetGadgetItemText(#Gadget_Lic_Db,GetGadgetState(#Gadget_Lic_Db),0)
Entscheidung = MessageRequester("Tabelle löschen?", "Alle Daten in der Tabelle " + Tabellenname$ + " gehen unwiederbringlich verloren!" + Chr(10) + "Möchten Sie die Tabelle wirklich aus der Datenbank löschen?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
If Entscheidung = #PB_MessageRequester_Yes
If DatabaseUpdate(#Database, "DROP TABLE " + Tabellenname$ + ";")
Tabellenladen("")
SetGadgetState(#Gadget_Lic_Db, -1)
SetGadgetText(#Gadget_Txt_Cr, "SQL: ")
DisableGadget(#Gadget_But_Tb_Op, 1)
DisableGadget(#Gadget_But_Tb_Dl, 1)
DisableGadget(#Gadget_But_Tb_Ed, 1)
DisableGadget(#Gadget_But_Ct_Nw, 1)
DisableGadget(#Gadget_But_Ct_Dl, 1)
DisableGadget(#Gadget_But_Ct_Ed, 1)
Else
MessageRequester("Datenbankfehler", "Die Tabelle konnte nicht gelöscht werden." + Chr(10) + DatabaseError(), #MB_ICONERROR)
EndIf
EndIf
EndIf
Case #Gadget_But_Tb_Ed
; Noch nicht vorhanden
Case #Gadget_Lic_Tb
If Aktionstyp = #PB_EventType_Change
If GetGadgetState(#Gadget_Lic_Tb) = -1
DisableGadget(#Gadget_But_Ct_Nw, 1)
DisableGadget(#Gadget_But_Ct_Dl, 1)
DisableGadget(#Gadget_But_Ct_Ed, 1)
Else
;DisableGadget(#Gadget_But_Ct_Nw, 0)
DisableGadget(#Gadget_But_Ct_Dl, 0)
;DisableGadget(#Gadget_But_Ct_Ed, 0)
EndIf
EndIf
Case #Gadget_But_Ct_Nw
; Noch nicht vorhanden
Case #Gadget_But_Ct_Dl
If Not GetGadgetState(#Gadget_Lic_Tb) = -1
Primarykey = GetGadgetData(#Gadget_Lic_Tb)
Indexwert$ = GetGadgetItemText(#Gadget_Lic_Tb, GetGadgetState(#Gadget_Lic_Tb), Primarykey)
Indexname$ = GetGadgetItemText(#Gadget_Lic_Tb, -1, Primarykey)
Indexname$ = Left(Indexname$, FindString(Indexname$, " [", 1) - 1)
Entscheidung = MessageRequester("Wert löschen?", "Der markierte Eintrag geht unwiederbringlich verloren!" + Chr(10) + "Möchten Sie den Wert wirklich aus der Tabelle löschen?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
If Entscheidung = #PB_MessageRequester_Yes
If DatabaseUpdate(#Database, "DELETE FROM " + Tabellenname$ + " WHERE " + Indexname$ + "=" + Indexwert$ + ";")
Aktualisieren(Tabellenname$)
Else
; Falls der Index textbasiert sein sollte...
If DatabaseUpdate(#Database, "DELETE FROM " + Tabellenname$ + " WHERE " + Indexname$ + "='" + Indexwert$ + "';")
Aktualisieren(Tabellenname$)
Else
MessageRequester("Datenbankfehler", "Der Eintrag konnte nicht gelöscht werden." + Chr(10) + DatabaseError(), #MB_ICONERROR)
EndIf
EndIf
EndIf
EndIf
Case #Gadget_But_Ct_Ed
; Noch nicht vorhanden
Case #Gadget_Edit_But_Md
Spaltenname$ = GetGadgetText(#Gadget_Edit_Str_Nm)
Spaltentyp$ = GetGadgetText(#Gadget_Edit_Cmb_Tp)
Spaltenoption$ = ""
If GetGadgetState(#Gadget_Edit_Chk_Un) = 1: Spaltenoption$ + "UNIQUE ": EndIf
If GetGadgetState(#Gadget_Edit_Chk_Nn) = 1: Spaltenoption$ + "NOT NULL ": EndIf
If Not (Spaltenname$ = "" And Spaltentyp$ = "")
If Spaltentyp$ = "VARCHAR(x)"
MessageRequester("Datentyp überprüfen", "Bitte geben Sie beim Datentyp VARCHAR() immer auch die Länge des Inhalts mit an." + Chr(10) + "Somit beispielsweise VARCHAR(20) für eine Zeichenbegrenzung von 20 Zeichen.", #MB_ICONERROR)
Else
AddGadgetItem(#Gadget_Edit_Lic, -1, "" + Chr(10) + Spaltenname$ + Chr(10) + Spaltentyp$ + Chr(10) + Spaltenoption$)
SetGadgetText(#Gadget_Edit_Str_Nm, "")
SetGadgetText(#Gadget_Edit_Cmb_Tp, "")
SetGadgetState(#Gadget_Edit_Chk_Un, 0)
SetGadgetState(#Gadget_Edit_Chk_Nn, 0)
EndIf
Else
MessageRequester("Eingaben überprüfen", "Bitte geben Sie mindestens einen Namen für die Spalte und einen Datentyp ein." + Chr(10) + "Beim Datentyp sind auch andere Eingaben als nur die Listeneinträge erlaubt.", #MB_ICONERROR)
EndIf
Case #Gadget_Edit_But_Sv
If CountGadgetItems(#Gadget_Edit_Lic) > 0
Neuername$ = GetGadgetText(#Gadget_Edit_Str_Tb)
If Not Neuername$ = ""
Primaryzahl = 0: Spaltenbefehl$ = ""
For Allespalten = 0 To CountGadgetItems(#Gadget_Edit_Lic) - 1
Zusatz$ = ""
If GetGadgetItemState(#Gadget_Edit_Lic, Allespalten) & #PB_ListIcon_Checked
Primaryzahl + 1: Zusatz$ = "PRIMARY KEY"
EndIf
Spaltenbefehl$ + GetGadgetItemText(#Gadget_Edit_Lic, Allespalten, 1) + " " + GetGadgetItemText(#Gadget_Edit_Lic, Allespalten, 2) + " " + Zusatz$ + " " + Trim(GetGadgetItemText(#Gadget_Edit_Lic, Allespalten, 3)) + ", "
Next
If Right(Spaltenbefehl$, 2) = ", ": Spaltenbefehl$ = Left(Spaltenbefehl$, Len(Spaltenbefehl$) - 2): EndIf
Spaltenbefehl$ = Trim(Spaltenbefehl$)
Primaryantwort = #PB_MessageRequester_Yes
If Primaryzahl = 0
Primaryantwort = MessageRequester("Kein Primärschlüssel", "Zur besseren Verwaltung der Tabelle wird eine Spalte mit Primärschlüssel empfohlen. Diese Spalte sollte auch den Datentyp INTEGER und die Optionen NOT NULL und UNIQUE beinhalten." + Chr(10) + "Möchten Sie die Tabelle wirklich ohne Primärschlüssel erstellen?", #PB_MessageRequester_YesNo | #MB_ICONQUESTION)
EndIf
If Primaryantwort = #PB_MessageRequester_Yes
If DatabaseUpdate(#Database, "CREATE TABLE " + Neuername$ + " (" + Spaltenbefehl$ + ");")
DisableWindow(#Fenster,0)
HideWindow(#Fenster_Edit,1)
SetActiveWindow(#Fenster)
Tabellenladen("")
Else
MessageRequester("Datenbankfehler", "Beim Ausführen des SQL-Kommandos ist ein Fehler aufgetreten." + Chr(10) + DatabaseError(), #MB_ICONERROR)
EndIf
EndIf
Else
MessageRequester("Kein Tabellenname", "Bitte geben Sie einen Namen für die Tabelle ein." + Chr(10) + "Dieser Name ist für weitere SELECT-Anweisungen unbedingt erforderlich.", #MB_ICONERROR)
EndIf
Else
MessageRequester("Keine Spalten vorhanden", "Bitte geben Sie mindestens eine Spalte für die Tabelle ein." + Chr(10) + "Möchten Sie die Erfassung abbrechen, verwenden Sie bitte den Änderungen verwerfen Button, möchten Sie die Tabelle löschen, verwenden Sie bitte den Punkt Tabelle löschen im Hauptmenü.", #MB_ICONERROR)
EndIf
Case #Gadget_Edit_But_Ab
DisableWindow(#Fenster,0)
HideWindow(#Fenster_Edit,1)
SetActiveWindow(#Fenster)
EndSelect
Case 0
Delay(1)
EndSelect
Until Ende = 1
If IsDatabase(#Database)
CloseDatabase(#Database)
EndIf
Else
MessageRequester("Programmfehler","Das Anwendungsfenster konnte nicht erstellt werden." + Chr(10) + "Das Programm wird beendet.",#MB_ICONERROR)
EndIf
Else
MessageRequester("SQLite-Fehler","Beim Initialisieren der SQLite-Umgebung ist ein Fehler aufgetreten." + Chr(10) + "Das Programm wird beendet.",#MB_ICONERROR)
EndIf
End
Rückfragen, Verbesserungsvorschläge und Kritik sind gern gesehen.
Tschausen, Harry.