Daten-Export von SQLite mit ListView

  • Hi @all,

    wie kann ich einen Inhalt von einem ListView (GUI) in eine txt-Datei exportieren, damit dieser dann ausgedruckt werden kann?

    Vielen Dank schon im Voraus!
    Gruß
    Peter

    Einmal editiert, zuletzt von Peter81 (30. Dezember 2008 um 18:42)

  • Hi,

    Listview und SQLite sind eigentlich zwei unterschiedlich Dinge.. Also wenn Du die Daten bereits in einem Listview hast, dann kannst Du den einfach auslesen z.B. mit _GUICtrlListView_GetItemText (siehe Hilfe) und dann jede Zeile des Listviews in eine Datei schreiben z.B. mit FileWriteLine.

    Und drucken kannst Du mit _FilePrint ..
    steht alles ziemlich gut inder Hilfe beschrieben.

    Ich hoffe das hilft Dir weiter.

    Franz

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Hi franzp,

    erst einmal vielen Dank für Deine Antwort!
    Ich habe folgenden Code geschrieben. Leider wird bei diesem jedoch nur die erste Spalte des ersten Datensatzes in die TXT-Datei geschrieben. Weiß jemand, warum?

    [autoit]

    #include <Sqlite.au3>
    #include <SQLite.dll.au3>
    #Include <GuiListView.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    _SQLite_Startup()
    $sqldb = _SQLite_Open('C:\Data\testdb.db3')
    Global $hQuery, $hZeile, $aRow, $i, $id, $aItem

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

    GUICreate("Test")
    GUISetState(@SW_SHOW)

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

    $ListView1 = GUICtrlCreateListView("id|Name|Vorname",20,20,320,140)
    GUICtrlSendMsg(-1, 0x101E, 0, 0)
    GUICtrlSendMsg(-1, 0x101E, 1, 100)
    GUICtrlSendMsg(-1, 0x101E, 2, 100)
    $btdel = GUICtrlCreateButton('Löschen',20,160)
    $btAdd = GUICtrlCreateButton('neuer Datensatz', 100, 160)

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

    $handle= GUICtrlGetHandle($ListView1)
    _GUICtrlListView_DeleteAllItems($handle)
    _SQLite_Query($sqldb,"SELECT * FROM ASB",$hQuery)
    $file = FileOpen('test7.txt',2)
    While _SQLite_FetchData ($hQuery, $aRow) = $SQLITE_OK
    _GUICtrlListView_AddItem($handle, $aRow[0])
    _GUICtrlListView_AddSubItem ($handle, $i, $aRow[1], 1)
    _GUICtrlListView_AddSubItem ($handle, $i, $aRow[2], 2)
    $i = $i + 1
    WEnd

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

    $i1 = 1
    Do
    $aItem = _GUICtrlListView_GetItemText($handle, 0,$i1)
    FileWriteLine($file,$aItem)
    $i1 = $i1 +1
    Until $i1 = 10

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

    FileClose($file)
    _SQLite_Close("C:\Data\testdb.db3")
    _SQLite_Shutdown ()
    Exit

    [/autoit]

    Gruß
    Peter

    Einmal editiert, zuletzt von Peter81 (30. Dezember 2008 um 18:23)

  • Hi Peter,

    da hast du einen dreher drinnen und mit einer Zeile liest du auch nur eine Spalte ein:

    [autoit]

    $aItem = _GUICtrlListView_GetItemText($handle, 0,$i1)

    [/autoit][autoit]


    $aItem0 = _GUICtrlListView_GetItemText($handle, $i2,0)
    $aItem1 = _GUICtrlListView_GetItemText($handle, $i2,1)
    $aItem2 = _GUICtrlListView_GetItemText($handle, $i2,2)

    [/autoit]

    Und dann die Zeilen schreiben. z.B.

    [autoit]

    FileWriteLine($file,$aItem0 & "," & $aitem1 & "," & $aitem2)

    [/autoit]

    Mit until $i1 = 10 sinds halt nur 10 Einträge...

    Du kannst aber auch
    _GUICtrlListView_GetItemTextString benutzen, damit liest er die ganze Zeile des listviews.

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Cool!!! Vielen Dank!!!
    Es funktioniert jetzt. Ich habe "until $i1 =...listviewcolumncount...." geschrieben.

    Gruß
    Peter