Neue AutoIT Version liest aus SQLite DB die Umlaute nicht mehr korrekt

  • Moin Leute,
    2007 hab ich ein Reisekostentool programmiert, welches Daten in eine SQLite DB speichert.

    Seit irgendeiner neueren Version von AutoIT (so vermute ich zumindest), werden die Umlaute aus der DB falsch ausgelesen, was natürlich zu Problemen führt.
    Er setzt beim Auslesen für alle Umlaute eine Raute ein, indem sich ein Fragezeichen befindet
    Ich kann quasi an den DB-Skript's, des Tools keine Updates programmieren.

    Ich suche jetzt schon einige Zeit, aber bin scheinbar blind.

    Kann mir jemand helfen, dass ich wieder ä,ü,ö usw. aus der DB auslesen kann?


    Vielen Dank vorab

    Einmal editiert, zuletzt von Aducarab (24. November 2011 um 08:39) aus folgendem Grund: zu wenig Infos...

  • Wie wäre es die Umlaute anders zu speichern z.b. wie in HTML

    Spoiler anzeigen


    ä -> ä
    Ä -> Ä
    ö -> ö
    Ö -> Ö
    ü -> ü
    Ü -> Ü
    ß -> ß
    € -> €
    & -> &
    < -> &lt;
    > -> &gt;
    “ -> &quot;
    © -> &copy;


    und beim auslesen die String wieder ersetzen druch die Umlaute (ä,ü,ö usw..)
    eventuell gibt es auch eine bessere Lösung seitens Autoit ..nur diese ist mir halt spontan eingefallen :P
    Gruß Marvin

  • Hey Marvin,
    vielen Dank für deine Antwort!!!

    Ich habe derzeit ca 17000 DS in der DB.
    Deine Idee würde sicherlich nur bei Aufruf älterer DS und in der Übergangszeit stören, trotzdem warte ich noch mal eine andere Idee ab.

    Ansonsten werde ich die &auml usw. nehmen...

    Grüße

  • Hi Aducarab,

    hast du schonmal die sqlite.dll angesehen?

    Ansonsten bräuchten wir Teile deines Skripts.

    Ich habe auch ein Tool zum Speichern von Daten in ne sqlite DB und bei mir
    funktionieren Umlaute und Sonderzeichen Problemlos, genauso wie Bilder :)

    Gruß

    Prajoss

    "Never touch a running System!"

  • Includes

    Spoiler anzeigen

    #include <SQLite.au3>
    #include <SQLite.dll.au3>

    Datenbank öffnen

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    func DBoeffnen()
    Local $DatenbankDatei = (@ScriptDir&"\SQLite\DBs\ReiKo2007.db")
    _SQLite_Startup () ;Sicherheitsabfragen bezüglich der Datenbank
    If @error > 0 Then
    MsgBox(16, "SQLite Error", "SQLite.dll kann nicht geladen werden!")
    Exit - 1
    EndIf
    $hDB_a = _SQLite_Open ($DatenbankDatei) ; Öffnet die Datenbank ReiKo2007 Sicherheitsabfragen bezüglich der Datenbank
    If @error > 0 Then
    MsgBox(16, "SQLite Error", "Die Datenbank kann nicht geladen werden!")
    Exit - 1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ;Inhalt für das Feld Monteur
    _SQlite_Query (-1, "SELECT DBPersonalNR, * FROM [Mitarbeiter] ORDER BY DBPersonalNR;",$hQuery)
    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK ; Read Out the next Row
    Dim $Trenner = "|"
    Dim $Comma = ", "
    Dim $Leerzeichen = " "
    $sMsg &= $aRow[2] & $Leerzeichen & $aRow[4] & $Comma & $aRow[3] & $Trenner
    WEnd
    EndFunc

    [/autoit]

    Abfragebeispiel


    Spoiler anzeigen
    [autoit]


    ;~ ; Es ist eine Ausländische Montage
    if $Stunden >= "24" Then
    _SQLite_QuerySingleRow (-1, "SELECT min_24h FROM [Laendertabelle] WHERE Land = '" & $aRow1[3] & "';",$aRow)
    $Spesen = $aRow[0]
    MsgBox(1, "Test", StringToBinary($aRow1[3],4))
    ElseIf $Stunden >= "14" and $Stunden < "24" Then
    _SQLite_QuerySingleRow (-1, "SELECT kleiner_24h_min_14h FROM [Laendertabelle] WHERE Land = '" & $aRow1[3] & "';",$aRow)
    $Spesen = $aRow[0]
    elseIf $Stunden >= "8" and $Stunden < "14" Then
    _SQLite_QuerySingleRow (-1, "SELECT kleiner_14h_min_8h FROM [Laendertabelle] WHERE Land = '" & $aRow1[3] & "';",$aRow)
    $Spesen = $aRow[0]
    ElseIf $Stunden < "8" Then
    _SQLite_QuerySingleRow (-1, "SELECT kleiner_8h FROM [Laendertabelle] WHERE Land = '" & $aRow1[3] & "';",$aRow)
    $Spesen = $aRow[0]
    EndIf
    EndIf
    $SpesenUebergabe = $Spesen + $aRow1[34] ; Neu programmiert: "Spesen(Aufschlag)" 11.02.2010
    return StringFormat("%.2f",$SpesenUebergabe)

    [/autoit]
  • Hi,

    bitte guck in die Datenbank mit folgendem Tool rein (Ist ein GUI für Sqlite, recht simple ohne viele Funktionen^^)

    Wenn hier auch die Umlaute schon falsch sind, probier die aktuellste sqlite.dll zu nehmen und wenns dann nicht geht
    vllt ein freeware sqlite viewer/gui laden und damit reinschauen. Evlt. sind die Umlaute in der Datenbank schon verkehrt.

    Spoiler anzeigen
    [autoit]

    #include <sqlite.au3>
    #include <sqlite.dll.au3>
    #include <GuiConstantsEx.au3>
    #include <GuiTreeView.au3>
    #include <GuiImageList.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <ArrayMore.au3>
    #include <GuiListView.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Opt ("GUIOnEventMode", 1)
    Opt("GUIResizeMode",$GUI_DOCKALL)

    [/autoit] [autoit][/autoit] [autoit]

    Global $gui, $menue, $db_oeffnen, $db_schliessen, $beenden, $db_offen
    Global $TreeView, $TreeView_Items[1], $TreeView_Item_Context[1], $TreeView_Item_ContextItem1[1], $TreeView_Item_ContextItem2[1]
    Global $ListView
    Global $db_path, $a_row, $DB_Table_Names[1], $DB_Table_Data

    [/autoit] [autoit][/autoit] [autoit]

    $gui = GUICreate("Sqlite Viewer", 1000, 600)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetOnEvent ($GUI_EVENT_CLOSE, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    $menue = GUICtrlCreateMenu( "&Menü")

    [/autoit] [autoit][/autoit] [autoit]

    $db_oeffnen = GUICtrlCreateMenuItem( "&Datenbank öffnen", $menue)
    GUICtrlSetOnEvent(-1, "_db_oeffnen")

    [/autoit] [autoit][/autoit] [autoit]

    $db_schliessen = GUICtrlCreateMenuItem( "&Datenbank schließen", $menue)
    GUICtrlSetOnEvent(-1, "_db_schliessen")

    [/autoit] [autoit][/autoit] [autoit]

    $beenden = GUICtrlCreateMenuItem( "&Programm beenden", $menue)
    GUICtrlSetOnEvent(-1, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    While 1

    [/autoit] [autoit][/autoit] [autoit]

    DllCall("Psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(50)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    _Exit()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _db_oeffnen()

    [/autoit] [autoit][/autoit] [autoit]

    If $db_offen = 1 Then _db_schliessen()

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $DB_Table_Names[1]

    [/autoit] [autoit][/autoit] [autoit]

    $db_path = ""

    [/autoit] [autoit][/autoit] [autoit]

    $db_path = FileOpenDialog("Datenbank öffnen", @WorkingDir, "sqlite Datenbank (*.sql)")

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Open($db_path)
    If @error Then _Fehlerausgabe("_SQLite_Open", "Kann Datenbank nicht öffnen")

    [/autoit] [autoit][/autoit] [autoit]

    $db_name = StringTrimRight(StringTrimLeft($db_path, StringInStr($db_path, "\", 0, -1)), 4)

    [/autoit] [autoit][/autoit] [autoit]

    WinSetTitle("Sqlite Viewer", "", "Sqlite Viewer - " & $db_name)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Exec(-1,"Select name From sqlite_master where type ='table' order by name","_callback_tables")

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()

    [/autoit] [autoit][/autoit] [autoit]

    If UBound($DB_Table_Names) < 2 Then Return

    [/autoit] [autoit][/autoit] [autoit]

    _Create_TreeView()

    [/autoit] [autoit][/autoit] [autoit]

    $db_offen = 1

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _db_schliessen()

    [/autoit] [autoit][/autoit] [autoit]

    If $TreeView Then GUICtrlDelete($TreeView)
    If $ListView Then GUICtrlDelete($ListView)

    [/autoit] [autoit][/autoit] [autoit]

    $db_offen = 0

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Create_TreeView()

    [/autoit] [autoit][/autoit] [autoit]

    Local $TreeView_Main, $TreeView_Context

    [/autoit] [autoit][/autoit] [autoit]

    $TreeView = GUICtrlCreateTreeView(10, 15, 200, 550, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)

    [/autoit] [autoit][/autoit] [autoit]

    $TreeView_Context = GUICtrlCreateContextMenu($TreeView)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateMenuItem("Datenbank öffnen", $TreeView_Context)
    GUICtrlSetOnEvent(-1, "_db_oeffnen")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateMenuItem("Datenbank schließen", $TreeView_Context)
    GUICtrlSetOnEvent(-1, "_db_schliessen")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateMenuItem("", $TreeView_Context)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateMenuItem("Neue Tabelle", $TreeView_Context)
    GUICtrlSetOnEvent(-1, "_db_exec_new_table")

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateMenuItem("", $TreeView_Context)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateMenuItem("SQL Query", $TreeView_Context)
    ;~ GUICtrlSetOnEvent(-1, "_db_query")

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlTreeView_BeginUpdate($TreeView)

    [/autoit] [autoit][/autoit] [autoit]

    $TreeView_Main = GUICtrlCreateTreeViewItem("Tabellen", $TreeView)

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $TreeView_Items[UBound($DB_Table_Names)]
    ReDim $TreeView_Item_Context[UBound($DB_Table_Names)]
    ReDim $TreeView_Item_ContextItem1[UBound($DB_Table_Names)]
    ReDim $TreeView_Item_ContextItem2[UBound($DB_Table_Names)]

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($DB_Table_Names) -1

    [/autoit] [autoit][/autoit] [autoit]

    $TreeView_Items[$i] = GUICtrlCreateTreeViewItem($DB_Table_Names[$i], $TreeView_Main)
    GUICtrlSetOnEvent(-1, "_TreeViewClick")
    $TreeView_Item_Context[$i] = GUICtrlCreateContextMenu($TreeView_Items[$i])
    $TreeView_Item_ContextItem1[$i] = GUICtrlCreateMenuItem("Löschen", $TreeView_Item_Context[$i])
    GUICtrlSetOnEvent(-1, "_db_exec_drop_table")
    $TreeView_Item_ContextItem2[$i] = GUICtrlCreateMenuItem("Umbenennen", $TreeView_Item_Context[$i])
    GUICtrlSetOnEvent(-1, "_db_exec_rename_table")

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlTreeView_EndUpdate($TreeView)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _TreeViewClick()

    [/autoit] [autoit][/autoit] [autoit]

    If $ListView Then GUICtrlDelete($ListView)

    [/autoit] [autoit][/autoit] [autoit]

    $h_item = GUICtrlSendMsg($TreeView, $TVM_GETNEXTITEM, $TVGN_CARET, 0)
    _Create_ListView(_GUICtrlTreeView_GetText($TreeView, $h_item))

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Create_ListView($s_Table)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hQuery, $DB_Column_Names, $iRows, $iColumns

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Open($db_path)

    [/autoit] [autoit][/autoit] [autoit]

    _SQlite_Query (-1, "Select ROWID,* FROM " & $s_Table & " ;", $hQuery)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_FetchNames ($hQuery, $DB_Column_Names)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_GetTable2d (-1, "Select ROWID,* FROM " & $s_Table & " ;", $DB_Table_Data, $iRows, $iColumns)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_QueryFinalize($hQuery)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()

    [/autoit] [autoit][/autoit] [autoit]

    $ListView = GUICtrlCreateListView("", 220, 15, 770, 550)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($DB_Table_Data, 2) - 1

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_AddColumn($ListView, $DB_Column_Names[$i], 100)

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 To UBound($DB_Table_Data, 1) - 1

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_AddItem($ListView, $DB_Table_Data[$i][1])

    [/autoit] [autoit][/autoit] [autoit]

    For $j = 2 To UBound($DB_Table_Data, 2) - 1

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlListView_AddSubItem($ListView, $i-1, $DB_Table_Data[$i][$j], $j-1)

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _db_exec_new_table()

    [/autoit] [autoit][/autoit] [autoit]

    Local $result, $values

    [/autoit] [autoit][/autoit] [autoit]

    $result = _create_table_childgui()

    [/autoit] [autoit][/autoit] [autoit]

    If $result <> "" Then

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 0 To Ubound($result,1) - 2

    [/autoit] [autoit][/autoit] [autoit]

    $values = $values & $result[$i][0] & " " & $result[$i][1] & ","

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    $values = StringTrimRight($values, 1)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Open($db_path)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Exec(-1, "Create Table " & $result[UBound($result,1)-1][0] & " (" & $values & ");")

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $DB_Table_Names[1]

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Exec(-1,"Select name From sqlite_master where type ='table' order by name","_callback_tables")

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlDelete($TreeView)

    [/autoit] [autoit][/autoit] [autoit]

    _Create_TreeView()

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _db_exec_drop_table()

    [/autoit] [autoit][/autoit] [autoit]

    Local $table

    [/autoit] [autoit][/autoit] [autoit]

    For $i=0 To Ubound($TreeView_Item_ContextItem1)-1
    If $TreeView_Item_ContextItem1[$i]=@GUI_CTRLID Then
    $table = _GUICtrlTreeView_GetText($TreeView, $TreeView_Items[$i])
    ExitLoop
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    If $table <> "" Then

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Open($db_path)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Exec(-1, "Drop Table " & $table & ";")

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $DB_Table_Names[1]

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Exec(-1,"Select name From sqlite_master where type ='table' order by name","_callback_tables")

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlDelete($TreeView)

    [/autoit] [autoit][/autoit] [autoit]

    _Create_TreeView()

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _db_exec_rename_table()

    [/autoit] [autoit][/autoit] [autoit]

    Local $old_table, $table

    [/autoit] [autoit][/autoit] [autoit]

    For $i=0 To Ubound($TreeView_Item_ContextItem1)-1
    If $TreeView_Item_ContextItem1[$i]=@GUI_CTRLID Then
    $old_table = _GUICtrlTreeView_GetText($TreeView, $TreeView_Items[$i])
    ExitLoop
    EndIf
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $table = InputBox("Sqlite Viewer - Tabelle Umbenennen", "Bitte geben Sie den neuen Tabellennamen ein:")

    [/autoit] [autoit][/autoit] [autoit]

    If $table <> "" And $old_table <> "" Then

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Open($db_path)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Exec(-1, "Alter Table " & $old_table & " Rename To " & $table & ";")

    [/autoit] [autoit][/autoit] [autoit]

    ReDim $DB_Table_Names[1]

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Exec(-1,"Select name From sqlite_master where type ='table' order by name","_callback_tables")

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlDelete($TreeView)

    [/autoit] [autoit][/autoit] [autoit]

    _Create_TreeView()

    [/autoit] [autoit][/autoit] [autoit]

    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _create_table_childgui()

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $column[1], $attrib[1], $result[1][2]
    Local $height = 50, $gheight = 140

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_HIDE, $gui)

    [/autoit] [autoit][/autoit] [autoit]

    $child = GUICreate("Sqlite Viewer - Neue Tabelle", 380, 140, -1, -1, BitOr($GUI_SS_DEFAULT_GUI, $WS_CHILD), -1, $gui)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Tabellenname:", 15, 15, 80, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $tabellenname = GUICtrlCreateInput("", 110, 15, 120, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUICtrlCreateLabel("Spaltennamen:", 15, 50, 80, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $column[0] = GUICtrlCreateInput("", 110, 50, 120, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $attrib[0] = GUICtrlCreateCombo("", 245, 50, 120, 20)
    GUICtrlSetData(-1, "Text|Int|Real|Blub")

    [/autoit] [autoit][/autoit] [autoit]

    $plus = GUICtrlCreateButton("", 260, 10, 30, 30, $BS_ICON)
    GUICtrlSetImage(-1, "shell32.dll", 5)

    [/autoit] [autoit][/autoit] [autoit]

    $minus = GUICtrlCreateButton("", 310, 10, 30, 30, $BS_ICON)
    GUICtrlSetImage(-1, "shell32.dll", 32)

    [/autoit] [autoit][/autoit] [autoit]

    $anlegen = GUICtrlCreateButton("Anlegen", 15, 80, 80, 20)

    [/autoit] [autoit][/autoit] [autoit]

    $abbrechen = GUICtrlCreateButton("Abbrechen", 15, 110, 80, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW, $child)

    [/autoit] [autoit][/autoit] [autoit]

    While 1

    [/autoit] [autoit][/autoit] [autoit]

    $msg = GUIGetMsg()

    [/autoit] [autoit][/autoit] [autoit]

    Select
    Case $msg = $GUI_EVENT_CLOSE Or $msg = $abbrechen
    GUIDelete($child)
    GUISetState(@SW_SHOW, $gui)
    Opt("GUIOnEventMode", 1)
    Return 0

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $plus
    _ArrayAdd($column, "")
    _ArrayAdd($attrib, "")
    $column[UBound($column)-1] = GUICtrlCreateInput("", 110, $height + (UBound($column) - 1)*30, 120, 20)
    $attrib[UBound($attrib)-1] = GUICtrlCreateCombo("", 245, $height + (UBound($attrib) - 1)*30, 120, 20)
    GUICtrlSetData(-1, "Text|Int|Real|Blub")
    WinMove("Sqlite Viewer - Neue Tabelle", "", Default, Default, 386, $gheight + (UBound($column) - 1)*30)

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $minus
    If UBound($column) > 1 Then
    GUICtrlDelete($column[UBound($column) - 1])
    GUICtrlDelete($attrib[UBound($attrib) - 1])
    _ArrayDelete($column, UBound($column))
    _ArrayDelete($attrib, UBound($attrib))
    WinMove("Sqlite Viewer - Neue Tabelle", "", Default, Default, 386, $gheight + (UBound($column)*30))
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Case $msg = $anlegen
    For $i = 0 To Ubound($column) -1
    If GUICtrlRead($column[$i]) = "" Then ExitLoop
    $result[$i][0] = StringReplace(GUICtrlRead($column[$i]), " ", "")
    $result[$i][1] = GUICtrlRead($attrib[$i])
    _Array2DAdd($result,"")
    Next
    $result[UBound($result,1)-1][0] = GUICtrlRead($tabellenname)
    GUIDelete($child)
    GUISetState(@SW_SHOW, $gui)
    Opt("GUIOnEventMode", 1)
    Return $result

    [/autoit] [autoit][/autoit] [autoit]

    EndSelect

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(30)

    [/autoit] [autoit][/autoit] [autoit]

    DllCall("Psapi.dll", 'int', 'EmptyWorkingSet', 'long', -1)

    [/autoit] [autoit][/autoit] [autoit]

    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _callback_tables($a_row)

    [/autoit] [autoit][/autoit] [autoit]

    _ArrayAdd($DB_Table_Names, $a_row[0])

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Fehlerausgabe($s_Funktion, $s_Fehlermeldung)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(48, "Fehler", "Funktion:" & @TAB & $s_Funktion & @CRLF & @crlf & $s_Fehlermeldung, 0, $gui)

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _Exit()

    [/autoit] [autoit][/autoit] [autoit]

    GUIDelete($gui)
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]

    Gruß

    Prajoss

    "Never touch a running System!"

  • Ich administriere die DB mit sqliteadmin.
    Die Umlaute in der DB sind einwandfrei (zumindest über das Tool).

    Bei mir kennt er kein
    #include <ArrayMore.au3> ???????????

    Mit welcher install kommt die?

  • Ja, ich hatte se dann auch gefunden... danke!!!

    Also, dein Tool schmeisst auch nicht die korrekten Umlaute aus.
    Sqliteadmin hingegen schon!


    Ich hab jetzt auch schon eine neue sqlite.au3 in die Includes geladen

    und
    die SQLite3.dll angesprochen:
    _SQLite_Startup (@ScriptDir&"\SQLite\SQLite3.dll")
    statt
    _SQLite_Startup ()

    eine neue SQLite.dll finde ich gar nicht!
    meine ist vom 19.12.2005

    --> Das gibts doch net!!!!

    Einmal editiert, zuletzt von Aducarab (24. November 2011 um 14:51)

  • Hallo Aducarab,

    und was passiert bei neu aufgenommen Datensätzen?
    Behauptung: SQLiteAdmin zeigt die D>aten falsch an, aber dein Programm gint sie korrekt aus. Richtig?
    Wenn ja kannst du entweder alle bereits erfassten Daten einmal konvertieren oder in der neuen Version beim speichern in das alte Format wandeln und bem auslesen zurückwandeln.

    Kannst du einmal eine kleine (hier loch ladbare) DB erstellen in der das Probelm ist?

  • Hey autoBert,
    negativ: Wenn ich einen neuen DS erfasse, dann zeigt er es in sqliteadmin korrekt an und in meinem Tool wieder falsch.
    In einem Teil des Tools, dass ich im Februar 2010 das letzte mal compiliert habe, wird z.B. ein Mitarbeiter namens Vosskämper,
    der aus der DB geladen wird nach wie vor korrekt angezeigt!

  • Hey Leute,
    hat keiner mehr eine Idee, oder?
    Trotzdem danke für eure Meldungen.

    Zitat

    In einem Teil des Tools, dass ich im Februar 2010 das letzte mal compiliert habe, wird z.B. ein Mitarbeiter namens Vosskämper,
    der aus der DB geladen wird nach wie vor korrekt angezeigt!


    Wenn ich das jetzt noch mal neu Compiliere, dann liest er Vossk?mper.

    Ich hab AutoIt auch einem anderen Rechner installiert und diverse Tests gemacht... bringt alles nichts.

    Wie gesagt SQLiteadmin zeigt alles korrekt an.
    Wenn ich über SQLiteadmin Daten nach Excel exportiere, werden Umlaute auch korrekt dargestellt!

    Ein anderes Tool liest Daten aus einer MS SQL Dqatenbank. Das läuft einwandfrei.

    Vielleicht hat ja doch noch jemand eine Idee.

    Einmal editiert, zuletzt von Aducarab (29. November 2011 um 11:53)

  • Hey,
    ich habe AutoIT jetzt noch mal auf einem anderen Rechner installiert.
    Habe eine Testdatenbank erstellt und ein Testprogramm.

    Spoiler anzeigen
    [autoit]


    #include <sqlite.au3>
    #include <sqlite.dll.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $hQuery, $aRow , $sMSG
    Local $Datenbankdatei = (@ScriptDir & "\DB\test.s3db")
    _SQLite_Startup()
    if @error > 0 Then
    MsgBox(1, "Test", "dll kann nicht geladen werden")
    Exit -1
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    $hDB_a = _SQLite_Open($Datenbankdatei)
    If @error > 0 Then
    MsgBox(1, "Test", "Die Datenbank kann nicht geladen werden!")
    EXIT -1
    EndIf

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _SQLite_Query(-1, "SELECT Name1, * FROM [Laendertabelle] ORDER BY NAME1;", $hQuery)
    WHILE _SQLite_FetchData($hQuery, $aRow) = $SqLITE_OK
    DIM $Trenner = "|"
    $sMSG &= $Trenner & $aRow[0]
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(1, "Test", $sMsg)
    _SQLite_Close()
    _SQLite_Shutdown()

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    #

    Die DB findet ihr in Test.zip

    Wenn ich die Daten auslese, werden keine Umlaute dargestellt.
    Irgendeiner muss doch ne Info dazu haben! Das gibts doch net!
    Ich glaube ja, dass es an der Autoit-Version liegt.
    Vielleicht wird beim Compilieren die Codierung nicht korrekt umgemodelt?!
    Kann das denn wenigsten einer wiederlegen?

  • Versuch doch mal deine Tabellen so zu erstellen.
    Also ohne Datentyp:

    [autoit]


    _SQLite_Startup()

    [/autoit][autoit][/autoit][autoit]

    $Op=_SQLite_Open(@ScriptDir & "\Test.db")
    ConsoleWrite("[" & $Op & "]" & @CRLF)
    _SQLite_Exec(-1, "CREATE TABLE Laendertabelle (Name1, Name2);") ; Erzeugt Tabelle

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    _SQLite_Close()
    _SQLite_Shutdown()

    [/autoit]

    3 Mal editiert, zuletzt von Kizum (2. Dezember 2011 um 19:15)

  • Nur mal so zur Info:

    SQLiteSpy zeigt (bei mir) auch keine Umlaute bei Deinen Testdatensätzen an.

    sqliteadmin zeigt dagegen immer Umlaute an - egal welche Version von sqlite3.dll sich im Verzeichnis befindet!

    Würde sagen: sqliteadmin setzt da intern etwas um (was autoit zumindest aktuell nicht mehr umsetzt)!

    3 Mal editiert, zuletzt von Thias (6. Januar 2012 um 01:49)

  • ich habe zwar mit der DB von dir das Problem mit den Umlauten, bei eigen erstellten DB z.B.:

    Spoiler anzeigen
    [autoit]

    #include <SQLite.au3>
    #include <SQLite.dll.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $aSqldb = @ScriptDir & "\Laendertest.db"

    [/autoit] [autoit][/autoit] [autoit]

    If Not FileExists($aSqldb) Then _DatenbankAnlegen()

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Startup()
    _SQLite_Open($aSqldb)

    [/autoit] [autoit][/autoit] [autoit]

    Local $aSql = "SELECT * FROM Laendertabelle"
    Local $aResult, $iRows, $iColumns
    Local $iRval = _SQLite_GetTable2d(-1, $aSql, $aResult, $iRows, $iColumns)
    If $iRval = $SQLITE_OK Then _ArrayDisplay($aResult)

    [/autoit] [autoit][/autoit] [autoit]

    _SQLite_Close()
    _SQLite_Shutdown()
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    Func _DatenbankAnlegen()
    Local $aSql, $res
    _FileCreate($aSqldb)
    _SQLite_Startup()
    If @error > 0 Then
    MsgBox(16, "SQLite Fehler", "SQLite.dll kann nicht geladen werden!")
    Exit
    EndIf
    _SQLite_Open($aSqldb)
    $aSql = "CREATE TABLE [Laendertabelle] ([LfdNr] INTEGER NOT NULL PRIMARY KEY, [Name1] NVARCHAR(100) NULL, [Name2] VARCHAR(100) NULL)"
    $res = _SQLite_Exec(-1, $aSql)
    $aSql = 'Insert into Laendertabelle (LfdNr, Name1, Name2) VALUES (1,' & _SQLite_Escape("Großbritannien") & ',' & _SQLite_Escape("äöüß") & ');' & @CRLF
    $res = _SQLite_Exec(-1, $aSql)
    $aSql = 'Insert into Laendertabelle (LfdNr, Name1, Name2) VALUES (2,' & _SQLite_Escape("Dänemark") & ',' & _SQLite_Escape("ÄÖÜß") & ');' & @CRLF
    $res = _SQLite_Exec(-1, $aSql)
    _SQLite_Close()
    _SQLite_Shutdown()
    EndFunc ;==>_DatenbankAnlegen

    [/autoit]

    kann ich das Problem nicht nachvollziehen. Die Ausgabe obigen Programmes ist

    Code
    [0]|LfdNr|Name1|Name2
    [1]|1|Großbritannien|äöüß
    [2]|2|Dänemark|ÄÖÜß

    die Daten werden jedoch in SQLiteAdmin 0.8.3.2 Public BETA falsch angezeigt. Ich benutze AutoIt in der Version 3.3.6.1. Ich habe die SQLite.dll.au3 angehängt aus der ja die DLL beim Programmstart generiert wird,

    frohes neues Jahr

    autoBert