German SQL Datenbank Fragen

Discussion in 'German Forum' started by Blaupunkt, Feb 17, 2017.

  1. Blaupunkt

    Blaupunkt Member Licensed User

    Hallo Zusammen,

    vorweg, bin in der Thematik "Basic for Android" noch ganz frisch, habe bisher per VBA programmiert.

    Beim Thema Datenspeicherung habe ich per VBA immer auf die Excel-Sheets zurückgegriffen und diese dann ausgeblendet, ging relativ einfach.

    Hatte per VBA ein schönes Programm zum Thema ADA-Schein, man konnte Fragen per .txt Datei einfügen, Fragen manuell hinzufügen, beantworten mit/ohne Timerfunktion, ... Jetzt wollte ich das Programm fürs Handy umschreiben.

    Als Datenspeicherung habe ich mich jetzt an SQL herangewagt, gibt ja auch einige Tuturials hier.

    Als erstes wollte ich mein Admin-Bereich schreiben, neue Nutzer kann ich anlegen, dass klappt bereits, aber mit dem Löschen habe ich so meine Probleme und beim Auswählen in der Liste möchte ich, dass sich die Farbe ändert, klappt nicht, es passiert einfach nichts. :-(

    Einfach was funktioniert ist das hier:

    Code:
    Answ=Msgbox2("Möchten Sie die ausgewählte Lizenz '" &name99 & "' mit der dazugehörigen Mailadresse '" &mail99 & "' wirklich löschen?","Lizenz löschen","Yes","","No",Null)
    Das ist der Code, wie ich eine ausgewählte Lizenz löschen möchte:

    Code:
    Sub Label3_Click
        
    Dim row, col, Answ, Index As Int
        
    Dim i As Int
        Answ=
    Msgbox2("Möchten Sie die ausgewählte Lizenz '" &name99 & "' mit der dazugehörigen Mailadresse '" &mail99 & "' wirklich löschen?","Lizenz löschen","Yes","","No",Null)
        
    If Answ=DialogResponse.POSITIVE Then
            
    Do While SelectedItems.Size> 0
                row=SelectedItems.Get(
    0)
                
    For col=0 To NumberOfColumns - 1
                    GetView(row, col).Color = CellColor(col)
                
    Next
                List_Delete(row, 
    0)
                
    For i=0 To SelectedItems.Size-1
                    Index=SelectedItems.Get(i)
                    
    If Index>row Then
                        SelectedItems.Set(i,Index-
    1)
                    
    End If
                
    Next
                SelectedItems.RemoveAt(
    0)
            
    Loop
           
                
    End If
        SQLReadTable
        NumberOfVisibleRows=scvList.Height/RowHeight
    End Sub
    Code:
    Sub List_Delete(Row As Int, Col As Int)
        
    Dim i, j, Answ As Int
        
    Dim txt As String
       
        Main.SQL1.ExecNonQuery(
    "DELETE FROM table1 WHERE table1.Code = " & GetView(Row,0).Text)
        NumberOfRows=NumberOfRows-
    1   
        
    If NumberOfRows>0 Then                
            Table.Height = NumberOfRows * RowHeight
        
    Else
            Table.Height = RowHeight
        
    End If
        
    End Sub
    Code:
    Sub GetView(Row As Int, Col As Int) As Label
        
    Dim l As Label
        l = Table.GetView(Row * NumberOfColumns + Col)
            
    Return l
        
    End Sub
    Hier der Code, bei dem sich die ausgewählte Zeile in der Farbe ändern sollte:

    Code:
    Sub SelectRow(Row As Int, SelCol As Int, Mode As Int)
        
    Dim col, index As Int

        index=SelectedItems.IndexOf(Row) 
        GetView(Row, col).Color = 
    Colors.Green  
           
        
    If index>-1 Then ' row already selected
            For col = 0 To NumberOfColumns - 1
                GetView(Row, col).Color = CellColor(col)  
            
    Next
            SelectedItems.RemoveAt(index)    
            
    If SelectedItems.Size=1 Then
                Row=SelectedItems.Get(
    0)       
            
    End If
        
    Else
            
    If Mode=0 Then
                SelectedItems.Add(Row)
            
    Else If Mode=2 Then
                
    For col = 0 To NumberOfColumns - 1
                    GetView(PreviousRow, col).Color = CellColor(col)  
                
    Next
            
    End If
            
    For col = 0 To NumberOfColumns - 1
                GetView(Row, col).Color = SelectedRowColor 
            
    Next
        
    End If
       
        
    If Mode=1 Then   
            
    For col = 0 To NumberOfColumns - 1
                GetView(PreviousRow, col).Color = CellColor(col)
                GetView(Row, col).Color = SelectedRowColor
            
    Next
        
    End If
       
        
    If SelectedItems.Size=0 Then
            
    Else If SelectedItems.Size=1 Then
            SelectedItems.Set(
    0,Row)
            name99=GetView(SelectedItems.Get(
    0), 0).Text
            mail99=GetView(SelectedItems.Get(
    0), 1).Text
                    PreviousRow=Row
        
    Else
           
        
    End If
    End Sub
     
  2. mw71

    mw71 Active Member Licensed User

    Moin,

    kannst du dein Projekt evtl. Exportieren und dann hier mit ran hängen? Mir sind da einige sachen noch nicht klar, z.B. was für ein Element du einfärben möchtest.

    Klappt das Löschen? Ich denke da fehlen die Anführungszeichen ('), bin mir aber nicht sicher (ich nutze zwar auch SQLite, das heißt aber nicht das ich davon Ahnung habe;))

    Grüße
     
  3. Blaupunkt

    Blaupunkt Member Licensed User

    Mittlerweile habe ich es hinbekommen mit der Markierung und dem Löschen, aller Anfang ist schwer. :)

    Wie kann ich in der SQL Datenbank nach Zeichenfolgen suchen?

    Beispiel:

    Mail99 ==> Mail TEXT (in der SQL DB)

    Gibt es dafür einen bestimmten Befehl?

    Kann ich wie bei VBA einmal nach der exakten Übereinstimmung suchen und zum anderen, wenn die Zeichenfolgt identisch ist?

    Gruß
     
    Last edited: Feb 18, 2017
  4. mw71

    mw71 Active Member Licensed User

    Moin,

    suche mal nach WHERE (Suche) und LIKE (mit % als Platzhalter).

    Wenn ich das richtig im Kopf habe etwa so:
    SELECT * FROM Datenbank WHERE Datenfeld = 'Mail99'
    bzw.
    SELECT * FROM Datenbank WHERE Datenfeld LIKE 'Mail%'

    Wenn du Case InSensitive suchen möchtest dann noch COLLATE NOCASE hinten drann.

    Grüße


    ps: z.B: http://www.w3big.com/de/sql/default.html
     
    Blaupunkt likes this.
  5. Blaupunkt

    Blaupunkt Member Licensed User

    Mein Adminbereich steht nun fast, funktioniert sogar. :)

    Jetzt wollte ich mich an das Thema ".txt" Dateien heranwagen.

    Ich möchte, dass der User die Textdatei selber auswählt, bisher habe ich nur Code gefunden, bei dem der Pfad + Dateiname fest war.

    In VBA konnte ich über folgenden Befehl die Datei selber auswählen. Application.GetOpenFilename

    Wie sieht das in B4A aus?

    Gruß
     
  6. mw71

    mw71 Active Member Licensed User

  7. Blaupunkt

    Blaupunkt Member Licensed User

    Wo bekomm ich die File Dialog Library her? Kannst Du mir die schicken?
     
  8. DonManfred

    DonManfred Expert Licensed User

    Wenn Du eine Lizenz kaufst kannst Du auch Libraries runterladen. Als Trial-User geht ds nicht.
     
  9. Blaupunkt

    Blaupunkt Member Licensed User

    Ok verstehe.

    @mw71 ... Du erwähntest eine Alternative per ListView. Kannst Du Dein Beispielt posten, vielleicht bekomme ich es ja darüber hin.

    Wäre klasse.

    Gruß
     
  10. Blaupunkt

    Blaupunkt Member Licensed User

    Taste mich von Menü zu Menü vor. :)

    Eine SQL Frage ...

    Cursor3 = Main.SQL3.ExecQuery("SELECT Handlungsfeld FROM table3 WHERE Beschreibung = '"&test&"'")

    Im Cursor3 habe ich nun die Position innerhalb der SQL Datenbank.

    Kann ich auch über die Cursorposition Daten aus der SQL löschen?

    Bisher lösche ich so:

    Main.SQL3.ExecNonQuery("DELETE FROM table3 WHERE Beschreibung = '" & Auswahlbeschreibung & "'")

    Danke

    Gruß
     
  11. mw71

    mw71 Active Member Licensed User

    Moin,

    Jeder Datensatz eine Eindeutige ID haben (legst du beim erstellen fest, z.B. so: CREATE TABLE log (id INTEGER PRIMARY KEY AUTOINCREMENT,.....),
    darüber kannst du den Datensatz identifizieren und Löschen.

    Gruß
     
  12. klaus

    klaus Expert Licensed User

    Es gibt in SQLite eine spezielle Spalte 'rowid' die eindeutig ist.
    Das ist im B4A User's Guide, im 5 SQLite Database Kapitel, beschrieben.
     
  13. Blaupunkt

    Blaupunkt Member Licensed User

    Zwei Fragen bzgl. dem Edittext Feld.

    Ich beschreibe ein entsprechendes Feld wie folgt:

    If G1 > 50 Then
    Auswertung.text = "Sie haben " & G1 & "% erreicht und somit bestanden!"
    Else
    Auswertung.text = "Sie haben " & G1 & "% erreicht und somit nicht bestanden!"

    Kann ich bei '& G1 & "%' die Farbe auf rot ändern, den Rest des Satzes möchte ich bei weiß belassen?

    Eine weitere allgemeine Frage, ich habe in meinem Programm öfters längere Fragen, die ich gern in eine Label-Form hineinschreiben möchte, allerdings kann ich teilweise nicht alles lesen, da die Frage zu groß ist. Beim Edittext Feld zeigt er mir alles an (durch scrollen), der User wird allerdings zur Eingabe aufgefordert, dass möchte ich wiederum nicht. Kann ich bei einem Edittext Feld die Texteeingabe unterdrücken oder gibt es eine andere Form, die ihr empfehlen könnt?
     
  14. DonManfred

    DonManfred Expert Licensed User

    Ja, wenn Du von einem LABEL redest. Nicht bei einem EDIT-Feld.

    Siehe CS-Builder Tutorial. B4A 6.8 brauchst Du allerdings dazu.
     
  15. Blaupunkt

    Blaupunkt Member Licensed User

    Bin beim Thema "Update" angelangt.

    Das ist der Code, um meine "Update-Datei" aufzurufen.

    Code:
    Dim i As Intent
            i.Initialize(i.ACTION_VIEW, 
    "file://" & File.Combine(File.DirdefaultExternal, "Test.apk"))
        i.SetType(
    "application/vnd.android.package-archive")
            
    StartActivity(i)
    Allerdings bekomme ich immer eine Fehlermeldung, die da lautet: "Parsing-Fehler ... Fehler beim Parsen des Pakets"

    Was mache ich verkehrt?

    Danke

    Gruß
     
  16. DonManfred

    DonManfred Expert Licensed User

    Du solltest:

    1. AUF JEDEN FALL einen NEUEN Thread für dein Problem eröffnen. Das ist eine grundsätzliche Regel hier. Der Thread hier hat mit deine Frage nichts zu tun.
    2. Besser diesen Thread im englischen Forum posten da hier viel mehr Leute mitreden (vor allem Erel).
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice