German ScrollView gibt einen Wert zu wenig wieder.

BMP

Banned
Ich bin mal wieder Ratlos,

Ich habe in meiner DB 3 Datensätze.
Wenn ich allerdings mit diesem Code einen ScrollView erzeuge, bekomme ich nur zwei Datensätze angezeigt:

B4X:
Sub FillScrollViews
   Dim Cursor1 As Cursor
   Cursor1 = SQL1.ExecQuery("SELECT col1, col2, col3, col4 FROM table1")
   lblHeight = 70dip
   lblHeight1 = lblHeight + 1dip
      For i = 0 To Cursor1.RowCount -1
      Cursor1.Position = i
      Dim lbl As Label
      lbl.Initialize("lbl1")
      lbl.Color = Colors.Black
      'lbl.Tag=i
      lbl.Text = Cursor1.GetString("col1")&CRLF&"Gas: "&Cursor1.GetInt("col2")&CRLF&"Strom: "&Cursor1.GetInt("col3")&CRLF&"Wasser: "&Cursor1.GetInt("col4")
      DBListe.Panel.AddView(lbl,0,i*lblHeight1,100%x,lblHeight)
      DBListe.Panel.Height = i*lblHeight1
Log("************************")
Log(Cursor1.GetString("col1"))
Log(Cursor1.GetInt("col2"))
Log(Cursor1.GetInt("col3"))
Log(Cursor1.GetInt("col4"))
Log("The time now is: " & DateTime.Date(DateTime.Now))
        Next
   Cursor1.Close
End Sub

Die LOG Ausgabe sieht aber so aus:

B4X:
** Activity (main) Create, isFirst = true **


SQL wird ausgeführt.


Number of rows = 3


************************
0
0
0
0
The time now is: 09.12.2011 09:21
************************
9.12.2011
123
123
123
The time now is: 09.12.2011 09:21
************************
9.12.2011
123
123
123
The time now is: 09.12.2011 09:21
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = false **
 

Kiffi

Well-Known Member
Licensed User
Longtime User
B4X:
DBListe.Panel.Height = i*lblHeight1
versuch's mal mit:
B4X:
DBListe.Panel.Height = (i + 1) * lblHeight1

DBListe.Panel.Height brauchst Du übrigens nicht in jedem Schleifendurchlauf zu
erhöhen, sondern kannst sie einmalig am Ende der Schleife setzen:
B4X:
[...]
Next
DBListe.Panel.Height = Cursor1.RowCount * lblHeight1 ' <- hier
Cursor1.Close

Grüße ... Kiffi
 

BMP

Banned
Nächste blöde frage:

Ich will das wenn der User im ScrollView einen Eintrag anklickt, er diesen Bearbeiten kann. Allerdings bekomme ich die passende SQL Anweisung nicht hin.
Ich kenne ja die Position im ScrollView durch die Send.Tag Funktion.
Aber wie kann ich die im SQL benutzten ?

B4X:
Sub lbl1_Click
   Dim Send As Label
   
   Send = Sender
   Log(Send.Tag)
   Dim result As Int
   result = Msgbox2("Was soll mit dem Eintrag passieren ?", "Eintrag bearbeiten.", "Bearbeiten", "Löschen", "Abrechen",Null)
   If result = DialogResponse.POSITIVE Then
      ToastMessageShow("Es wurde BEARBEITEN geklickt",False)
         Else If result = DialogResponse.CANCEL Then
            Dim result2 As Int
            result2 = Msgbox2("Sind Sie sicher das der Eintrag gelöscht werden soll ?", "Eintrag löschen.", "Ja Löschen", "", "Abrechen",Null)
               If result2 = DialogResponse.POSITIVE Then
                  ToastMessageShow("Es wurde LÖSCHEN geklickt",False)
                  Count1 = SQL1.ExecQuery("SELECT col4 FROM table1 where count('"Send.Count"')")
               End If
         Else If result = DialogResponse.NEGATIVE Then
      ToastMessageShow("Es wurde NEIN geklickt",False)
   End If
End Sub
 

Kiffi

Well-Known Member
Licensed User
Longtime User
Habe keine Ahnung, wie gut Du Dich mit SQL
auskennst. Deshalb hier erst einmal eine grobe
Beschreibung:

Du benötigst für Deine Tabelle ein Feld mit
eindeutigen Werten. Normalerweise ist dieses
vom Typ Integer und hat ein Autoincrement-
Attribut. Nehmen wir an, dieses Feld heisst 'ID'.

Beim Füllen Deines Views trägst Du in TAG dann
nicht Deine Schleifenzähler 'i' ein, sondern den Wert,
der im Feld 'ID' steht. Somit kannst Du jeden Datensatz
eindeutig zuordnen.

Bei lbl1_Click kannst Du nun den TAG-Wert des
Senders ermitteln und kannst mit:

Delete From DeineTabelle Where ID = DeineErmittelteID

den entsprechenden Datensatz aus der Tabelle löschen.

Falls weitere Fragen sind: Nur zu :)

Grüße ... Kiffi
 

BMP

Banned
Danke dir schon wieder ;-)

Hatte ich schon fast vermutet, das ich um einen PrimaryKey Feld nicht herum komme. Aber gut das ist ja schnell eingebaut.

You make my DAY ;-)
Es klappt.....
 
Last edited:
Top