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