SQLite kopieren
Verfasst: 06.11.2017 17:02
SQLite kopieren
Hallo Leute,
möchte aus meiner aktuellen gewählten Base über ein Listicon sortierte Datensätze in einer
Base_Kopie speichern!
Nun habe ich zwar eine Lösung, aber die Funzt sehr, sehr langsam.
Ausserdem reagiert das Window nicht, geschweige der Focus im ListIconGadget!!!
Jemand einen Tip wie ich die Sache beschleunigen kann?
Gruss ... Velindos
Hallo Leute,
möchte aus meiner aktuellen gewählten Base über ein Listicon sortierte Datensätze in einer
Base_Kopie speichern!
Nun habe ich zwar eine Lösung, aber die Funzt sehr, sehr langsam.
Ausserdem reagiert das Window nicht, geschweige der Focus im ListIconGadget!!!
Code: Alles auswählen
Procedure Datenbank_Kopie()
Protected Target = 2
Protected Source = 1
Protected Bildspalte = 5
Protected SQL.s
Protected LoopZeiger = 0
Protected Aktueller_Base_Verezichniss$
Protected Aktueller_Base_Name$
Protected Kopie_Base_Name$
Protected Kopie_Base_File$
Protected Recordzeiger
; --------------------------------
; #Zuerst den Record aufrufen
ListIcon_FocusReset()
; --------------------------------
;{ Neue Base anlegen
Aktueller_Base_Verezichniss$ = GetPathPart(DatabaseFile$)
; ------------------------------
; Database FileName
Aktueller_Base_Name$ = GetFilePart(DatabaseFile$,#PB_FileSystem_NoExtension)
; ------------------------------
; Filenamen kopieren
Kopie_Base_Name$ = Aktueller_Base_Name$ + "_Kopie"
; ------------------------------
; Base File
Kopie_Base_File$ = Aktueller_Base_Verezichniss$ + Kopie_Base_Name$
; ------------------------------
; Neue Base Anlegen
Datenbank_Anlegen(Kopie_Base_File$)
; *************
;Rettung
Rtg_ListIconzeile = ListIconZeile
;}
; *************
;{ SQLite KOPIEREN
For Recordzeiger = 0 To WahlLetzter
;{ Record Zähler einrichten
ListIcon_Record$ = GetGadgetItemText(#Work_L_ListIcon,Recordzeiger,ListIconSpalteRecord)
;}
;{ BASE lesen
If OpenDatabase(Source, DatabaseFile$, "", "", #PB_Database_SQLite)
DatabaseQuery(Source, "Select * From Velindos WHERE ID ="+ ListIcon_Record$)
While NextDatabaseRow(Source)
Read_KEYID$= GetDatabaseString(Source,0)
Read_STICHWORT$= GetDatabaseString(Source,1)
; NOTIZ wegen Richtext
Read_NOTIZ$ = GetDatabaseString(Source,2)
Read_NOTIZ$ = ReplaceString(Read_NOTIZ$, "'", "''")
Read_PFAD$ = GetDatabaseString(Source,3)
Read_Genre$ =GetDatabaseString(Source,4)
; ------------------------------------------------
; Bild
If DatabaseColumnType(Source, Bildspalte) = #PB_Database_Blob
MemSize = DatabaseColumnSize(Source,Bildspalte)
If MemSize
; AllocateMemory
*ImageMemory = AllocateMemory(MemSize)
Debug "MemSize= "+MemSize
; Memory
If *ImageMemory
If GetDatabaseBlob(Source, Bildspalte, *ImageMemory,MemSize)
; ------------------------------------------------
Debug "Read_KEYID$= "+Read_KEYID$
Debug "Read_STICHWORT$= "+Read_STICHWORT$
Debug "Read_NOTIZ$= "+Read_NOTIZ$
Debug "Read_PFAD$= "+Read_PFAD$
Debug "Read_Genre$= "+Read_Genre$
Debug "Read_Ordner$= "+Read_Ordner$
Debug "Read_CODEC$= "+Read_CODEC$
Debug "Read_Source$= "+Read_Source$
Debug "Read_Artikel$= "+Read_Artikel$
; --------------------------------
Debug "LoopZeiger= " +LoopZeiger
Else
Debug "GetDatabaseBlob ist fehlgeschlagen"
EndIf
;FreeMemory(*ImageMemory)
Else
Debug "Nicht genügend Speicher vorhanden"
EndIf
Else
Debug "picsize is null"
EndIf
Else
Debug "DatabaseColumnType(0, 1) ist kein Blob"
EndIf
; ------------------------------------------------
Read_Ordner$ = GetDatabaseString(Source,6)
Read_CODEC$ = GetDatabaseString(Source,7)
Read_Source$ = GetDatabaseString(Source,8)
Read_Artikel$ =GetDatabaseString(Source,9)
; ------------------------------------------------
Wend
FinishDatabaseQuery(Source)
CloseDatabase (Source)
Else
MessageRequester("Database", "Fehlende Database")
EndIf
; ------------------------------------------------
;}
;{ FOCUS
;Zeiger setzen
SendMessage_(GadgetID(#Work_L_ListIcon),#LVM_ENSUREVISIBLE,ListIconZeile,0)
; FOCUS auf Zeile
SetGadgetState(#Work_L_ListIcon, ListIconZeile)
; Aktivited
SetActiveGadget(#Work_L_ListIcon)
;}
;{ BASE schreiben
If OpenDatabase(Target, Kopie_Base_File$, "", "", #PB_Database_SQLite)
; Bild laden
SetDatabaseBlob(Target, 0, *ImageMemory, MemSize)
; *************
; SQL String new
SQL = "Insert Into Velindos (Stichwort, Notiz, Pfad, Genre, myBild, Ordner, Codec, Source, Artikel) Values "
SQL + " ('"+Read_STICHWORT$+"','"+Read_NOTIZ$+"','"+Read_PFAD$+"','"+Read_GENRE$+"',?,'"+Read_Ordner$+"','"+Read_Codec$+"','"+Read_Source$+"','"+Read_Artikel$+"');"
; INSERT BASE
If DatabaseUpdate(Target, SQL)
Debug "Datensatz eingefügt"
EndIf
; FreeMemory
FreeMemory(*ImageMemory)
CloseDatabase(Target)
Else
Debug DatabaseError()
MessageRequester("Database", "Fehlende Database")
EndIf
;}
Next
;}
; *************
;{ FERTIG
; #Zuerst den Record aufrufen
; ===========
; ListIcon_FocusReset()
DatabaseFile$ = Kopie_Base_File$
; ===========
Datenbank_Wahl()
; ===========
;Rettung
ListIconZeile = Rtg_ListIconzeile
; ===========
; Key
Datenbank_Key()
; ===========
; #Zuerst den Record aufrufen
ListIcon_FocusSet()
;}
EndProcedure
Gruss ... Velindos