Seite 1 von 1

ClearGadgetItemList und SQLite

Verfasst: 04.01.2006 13:14
von Scream
Hallo
hab ein relativ komisches Problem.
Und zwar habe ich zwei GadgetItemLists. Wenn in der linken ein Item ausgewählt wird, sollen aus einer SQLite Datenbank ein paar Einträge gelesen werden, und sollen in der rechten Liste aufgeführt werden.

Dies funktioniert insofern auch, bloss wenn ich in der linken Liste etwas anderes anklicke, dann soll er mir die rechte Liste wierder leeren, und gleich dannach wieder mit die neuen Daten eintragen.
Und das funktioniert leider nicht. Er zeigt mir nämlich dannach nicht mehr die neuen Daten an.
Wenn ich das selbe Spielchen ohne Datenbank mache, also nur mit AddGadgetItemList() funktioniert das ganze.....

Ich habe hier mal den Code angefügt....
Vielleicht weiß jemand was ich da tun kann.....

Gruß Scream

Code: Alles auswählen

Enumeration
#Window_Kategorien
#Listview_Kategorien_Kategorien  
#Listview_Inhalte
#Text_02222
#Text_12222
#Hinzufgen_Kategorien
#Lschen_Kategorien
#ndern_Kategorien
#OK_Kategorien
EndEnumeration
  
  
  
  If OpenWindow(#Window_Kategorien, 216, 0, 501, 320,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Kategorien")
    If CreateGadgetList(WindowID())
      ListViewGadget(#Listview_Kategorien_Kategorien, 10, 30, 170, 280)
      ListViewGadget(#Listview_Inhalte, 190, 30, 170, 280)
      TextGadget(#Text_02222, 10, 10, 90, 20, "Kategorien")
      TextGadget(#Text_12222, 190, 10, 100, 20, "Inhalte")
      ButtonGadget(#Hinzufgen_Kategorien, 380, 30, 100, 30, "Hinzufügen")
      ButtonGadget(#Lschen_Kategorien, 380, 70, 100, 30, "Löschen")
      ButtonGadget(#ndern_Kategorien, 380, 110, 100, 30, "Ändern")
      ButtonGadget(#OK_Kategorien, 380, 280, 100, 30, "OK")
      AddGadgetItem(#Listview_Kategorien_Kategorien, 0, "Personal")
      AddGadgetItem(#Listview_Kategorien_Kategorien, 1, "SanD")
      AddGadgetItem(#Listview_Kategorien_Kategorien, 2, "Kunden")
      AddGadgetItem(#Listview_Kategorien_Kategorien, 3, "Material")
      AddGadgetItem(#Listview_Kategorien_Kategorien, 4, "Fahrzeug")
      AddGadgetItem(#Listview_Kategorien_Kategorien, 5, "Ausbildung")
    EndIf
  EndIf 
      
  Repeat    
     Select WaitWindowEvent()
       Case #PB_Event_Gadget
         Select EventGadgetID()  
           Case #Listview_Kategorien_Kategorien
           ClearGadgetItemList(#Listview_Inhalte)
           
           If SQLite3_InitLib("sqlite3.dll") = #False 
                MessageRequester("Vereinsprog - Kritischer Fehler", "Fehler beim intialisieren der sqlite3.dll")
                End
              EndIf

              dbHandler = SQLite3_OpenDatabase("Kategorien.db")
              
              RS.SQLite3_Recordset         
            
          
          Ergebnis = GetGadgetState(#Listview_Kategorien_Kategorien) 
          
          
          
          If Ergebnis = 0
          
              SQL$ = "SELECT Personal FROM Kategorien"
              SQLite3_GetRecordset(SQL$, dbHandler, @RS)

              While RS\EOF = 0
                If SQLite3_GetRecordsetValueByName("Personal", @RS)    
                  AddGadgetItem(#Listview_Inhalte, a, RS\sValue)
                  a=a+1
                Else
                  MessageRequester("", SQLite3_GetLastMessage())
                EndIf
                SQLite3_RecordsetMoveNext(@RS)
              Wend
              
         ElseIf Ergebnis = 1
 
              SQL$ = "SELECT SanD FROM Kategorien"
              SQLite3_GetRecordset(SQL$, dbHandler, @RS)

              While RS\EOF = 0
                If SQLite3_GetRecordsetValueByName("SanD", @RS)    
                  AddGadgetItem(#Listview_Inhalte, a, RS\sValue)
                  a=a+1
                Else
                  MessageRequester("", SQLite3_GetLastMessage())
                EndIf
                SQLite3_RecordsetMoveNext(@RS)
              Wend

         ElseIf Ergebnis = 2
 
              SQL$ = "SELECT Kunden FROM Kategorien"
              SQLite3_GetRecordset(SQL$, dbHandler, @RS)

              While RS\EOF = 0
                If SQLite3_GetRecordsetValueByName("Kunden", @RS)    
                  AddGadgetItem(#Listview_Inhalte, a, RS\sValue)
                  a=a+1
                Else
                  MessageRequester("", SQLite3_GetLastMessage())
                EndIf
                SQLite3_RecordsetMoveNext(@RS)
              Wend

         ElseIf Ergebnis = 3
 
              SQL$ = "SELECT Material FROM Kategorien"
              SQLite3_GetRecordset(SQL$, dbHandler, @RS)

              While RS\EOF = 0
                If SQLite3_GetRecordsetValueByName("Material", @RS)    
                  AddGadgetItem(#Listview_Inhalte, a, RS\sValue)
                  a=a+1
                Else
                  MessageRequester("", SQLite3_GetLastMessage())
                EndIf
                SQLite3_RecordsetMoveNext(@RS)
              Wend
     
         ElseIf Ergebnis = 4
 
              SQL$ = "SELECT Fahrzeuge FROM Kategorien"
              SQLite3_GetRecordset(SQL$, dbHandler, @RS)

              While RS\EOF = 0
                If SQLite3_GetRecordsetValueByName("Fahrzeuge", @RS)    
                  AddGadgetItem(#Listview_Inhalte, a, RS\sValue)
                  a=a+1
                Else
                  MessageRequester("", SQLite3_GetLastMessage())
                EndIf
                SQLite3_RecordsetMoveNext(@RS)
              Wend

         ElseIf Ergebnis = 5
 

              SQL$ = "SELECT Ausbildung FROM Kategorien"
              SQLite3_GetRecordset(SQL$, dbHandler, @RS)

              While RS\EOF = 0
                If SQLite3_GetRecordsetValueByName("Ausbildung", @RS)    
                  AddGadgetItem(#Listview_Inhalte, a, RS\sValue)
                  a=a+1
                Else
                  MessageRequester("", SQLite3_GetLastMessage())
                EndIf
                SQLite3_RecordsetMoveNext(@RS)
              Wend
 
         EndIf
         SQLite3_ReleaseRecordset(@RS)

              SQLite3_CloseDatabase(dbHandler)

              SQLite3_End()


         EndSelect
     EndSelect
  ForEver

Re: ClearGadgetItemList und SQLite

Verfasst: 04.01.2006 13:26
von Kiffi
> Vielleicht weiß jemand was ich da tun kann.....

Nach dem ersten Überfliegen des Codes:

arbeitest Du mit der neuesten Version der SQLite-Lib? Die Version davor
hatte Probleme mit dem Zurücksetzen des EOF bzw. BOF-Flags.

Download: http://pbosl.purearea.net/

Oder versuch mal alternativ das EOF-Flag manuell zurückzusetzen:

Code: Alles auswählen

RS\EOF=0
SQLite3_GetRecordset([...])
While RS\EOF = 0
  [...]
Grüße ... Kiffi

Verfasst: 04.01.2006 13:42
von Scream
jo ist die aktuellste Version....
ich hab deinen code auch mal ausprobiert....hat aber leider nichts geholfen....

Du hast mich aber schon richtig verstanden, das wenn ich das ClearGadgetItemList auskommentiere ich die daten schon anzeigen kann, mein Problem hierbei ist dann aber das sich die rechte Liste immer mehr füllt.

Gruß Scream

Verfasst: 04.01.2006 13:59
von Kiffi
> hat aber leider nichts geholfen....

wenn nichts dagegen spricht, dann würde ich vorschlagen, dass Du mit die
Datenbank nebst Code mal per eMail zuschickst: kiffi24[klammeraffe]gmx[punkt]de

Ich schau mir die Sache dann mal an.

Grüße ... Kiffi