German Mehrere SQL.db in einer ViewList anzeigen

dreamfile

Member
Licensed User
Longtime User
Hallo liebe B4A-Freunde,

mein aktuelles Lernprojekt erstellt jeden Tag eine neue SQLlite Datenbank.
Nach mehreren Tagen gibt es nun mehrere Datenbanken.
zB. Tag1.db, Tag2.db, Tag3.db usw.

Am Anfang der App steht eine ViewList die beim Start eine Liste der verfügbaren Datenbanken anzeigen soll.

Leider will mir keine Möglichkeit einfallen wie ich an eine Liste der verfügbaren Datenbanken komme und hoffe auf Eure Hilfe.

Ich wünsche Euch noch schöne Ostertage.

LG dreamfile :sign0104:
 

klaus

Expert
Licensed User
Longtime User
Beiliegend findest Du ein kleines Testprogramm das dein Problem veranschaulicht.
Und hier der Code:
B4X:
Sub Process_Globals
    Dim PathName As String    : PathName = File.DirInternal
End Sub

Sub Globals
    Dim ltvDatanbanken As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Dim i As Int
    Dim txt As String
    
    If FirstTime Then
        File.Copy(File.DirAssets, "Tag1.db", PathName, "Tag1.db")
        File.Copy(File.DirAssets, "Tag2.db", PathName, "Tag2.db")
        File.Copy(File.DirAssets, "Tag3.db", PathName, "Tag3.db")
    End If
    
    Activity.LoadLayout("main")
    
    Dim lst As List
    lst = File.ListFiles(PathName)
    For i = 0 To lst.Size - 1
        txt = lst.Get(i)
        If txt.EndsWith(".db") Then
            ltvDatanbanken.AddSingleLine(txt)
        End If
    Next
End Sub
Je nach dem wie un wo Du die Datenbanken erstellst und speicherst musst Du den Code an Dein Programm anpassen.

Beste Grüsse.
 

Attachments

  • MultiDB.zip
    9.5 KB · Views: 275

dreamfile

Member
Licensed User
Longtime User
Hallo Klaus,
danke dir von tiefsten Herzen und werde mich natürlich gleich mal drüberstürzen.

LG dreamfile :sign0104:
 

dreamfile

Member
Licensed User
Longtime User
Hallo ihr lieben,
mein Übungsprojekt wächst aber jetzt hänge ich mal wieder an einem Punkt.
B4X:
Sub Activity_Resume
ltvDatanbanken.Clear
lst = File.ListFiles(PathName2)
   For i = 0 To lst.Size - 1
      txt = lst.Get(i)
      If txt.EndsWith(".db") Then
         ltvDatanbanken.AddSingleLine(txt)
      weiter=(i)+2
      End If
   Next
End Sub
Hiermit lade ich alle .db in eine Liste. Die .db´s haben den Namen des aktuellen Datum. Zum Testen hänge ich einfach eine Nummer hinten an, die später nicht mehr benutz wird.

B4X:
Sub Button2_Click
SQL1.Initialize(PathName2, Datum&"_"&weiter&".db",True)
End Sub
Zum Testen erstelle ich mit einem Klick eine neue .db.

B4X:
Sub ltvDatanbanken_ItemClick (Position As Int, Value As Object)
   Dim listenpos As String
   listenpos=weiter-Position-1
   ToastMessageShow("Listenr.: "& listenpos, True)
End Sub
Wenn ich ihn die Liste klicke bekomme ich die Position angezeigt. (5te Datei = Position 5)

Mit dieser Lösung komme ich nicht weiter, da mit einem Klick in die Liste auch die .db geladen und angezeigt werden soll.

Meine Frage: Gibt es eine Möglichkeite mit einem Klick in die Liste den .db Namen auszulesen? bzw. den Dateinamen der .db?

Viele Dank für jede Hilfe
LG dreamfile :sign0104:
 

klaus

Expert
Licensed User
Longtime User
Ganz einfach mit:
B4X:
Sub ltvDatanbanken_ItemClick (Position As Int, Value As Object)
    DateiName = Value
End Sub
Zwei Kommentare zu Deinem Code:
- Was ist der Nutzen der Variablen 'weiter' ?
- In der ListView ist die 5. Datei in Position 4, fängt mit 0 an.

Beste Grüsse.
 

dreamfile

Member
Licensed User
Longtime User
Hallo Klaus,

erstmal ein dickes Danke für deine Hilfe, das hilft mir sehr. Zu deiner Frage.

Die Variable "weiter" ist ein einfacher Zähler (Position + 1 oder (i)+2) um meiner nächsten Datei eine Nummer zu geben.
Da die .db´s mit einem Datum als Namen gespeichert werden, müsste ich zb. 5 Tage jeden Tag eine Datei speichern um 5 Dateien in der Liste zu haben. Die Variable "weiter" hängt hinten nur eine fortlaufende Nummer an. Früher oder später verschwindet diese Variable.

LG dreamfile :sign0104:
 
Top