Italian gatta da pelare con database.

fifiddu70

Well-Known Member
Licensed User
Ciao a tutti, come da titolo non riesco a far funzionare la mia app, ho un database sqlite chiamato italia dove all'interno ci sono molte tabelle quanto le provincie d'Italia all'interno di ogni tabella ci sono diversi campi: nome, cognome, telefono, e cosi via, attraverso una, listview visualizzo il contenuto della ricerca effettuata, ad esempio se seleziono provincia di trapani con uno spinner ed un'altro spinner come artista e mettendo che sul databse esistono 3 artisti della stessa provincia questi...vengono visualizzati sulla listview con nome nomeazienda telefono etc, la mia intenzione è quella di prelevare il numero di telefono di uno degli artisti al click sopra la listview e fin qui ci siamo perchè su txtphone.text visualizzo il numero di telefono ma solamente l'ultimo numero dei 3 artisti, se faccio click sul primo artista di sopra visualizzo sempre l'ultimo numero dell'artista, questo perchè il ciclo for mi legge fino a quando trova i campi di ricerca pieni, c'è modo invece che ad ogni click rispettivo all'artista nella mia txtphone.text visualizzo il numero di telefono corrispondente?
posto un pezzo di codice per capire come strutturato.
B4X:
Sub lsw2_ItemClick (Position As Int, Value As Object)
    txtphone.Text=""
    Dim tipo, prov, query As String
    tipo = spcercaartista.GetItem(spcercaartista.SelectedIndex)
    prov = spcercaprovincia.GetItem(spcercaprovincia.SelectedIndex)
    query = "Select * FROM " & prov & " where genere LIKE '%" & tipo & "%';"
    cursor1 = SQL1.ExecQuery(query)
    Log(cursor1.RowCount)
    If cursor1.RowCount <=0 Then
        MsgboxAsync("Nessun " & tipo & " trovato" & " in provincia di " & prov & " - Tranquillo... l'app è in costante aggiornamento","RICERCA TERMINATA")
        Return
    End If
    For i = 0 To cursor1.RowCount - 1
        cursor1.Position = i
        txtphone.Text=cursor1.GetString("telefono")
    Next
    cursor1.Close
    
End Sub
 

ivanomonti

Well-Known Member
Licensed User
visualizzo il numero di telefono ma solamente l'ultimo numero dei 3 artisti, se faccio click sul primo artista di sopra visualizzo sempre l'ultimo numero dell'artista

se non c'è numero dovrebbe darti vuoto
 

LucaMs

Expert
Licensed User
Ma te pare che devi avere una tabella per provincia? Quante sono le province italiane, un centinaio?
Non ho letto il resto, già questo mi suona parecchio strano! Piuttosto, a naso, ti servirà una tabella Province, con i soli nomi delle province e al massimo pochi altri dati, ad esempio la popolazione, l'estensione (mq)
 

LucaMs

Expert
Licensed User
Dovresti avere una tabella "Persone" (o quello che è, con i dati della persona), usare una CustomListView (100 volte migliore della normale ListView), associare ad ogni item come valore l'ID del record "persona", ricavarlo al click ed ottenere dal db tutti dati in base a quell'ID (compreso un ID relativo ad un nome di provincia).

' Tabella Persona:
ID <--- intero, auto incrementato
Nome
Cognome
Tel
etc.
IDProvincia


' Tabella Provincia
ID <--- intero, auto incrementato
Nome
Popolazione
Estensione

(ammesso che ti serva quella roba)
 

fifiddu70

Well-Known Member
Licensed User
In effetti avevao pensato ad una sola tabella ed inserire tutte le provincie al posto di aver creato una tabella per provincia, siccome e un databse che avevo creato 10 anni fà quando ero un pulcino della programmazione anche se lo sono rimasto per via del poco tempo a disposizione, ho capito che non poteva funzionare in questo modo, comunque l'idea non è di inserir anche i comuni, sarebbe un suicidio e nemmeno 1 anno di quarantena mi farebbe fare una cosa del genere, ho creato uno spinner per selezionare la regione e selezionandolo appaiono le provincie di quella regione, poi selezionando la provincia si visualizzano i comuni che hanno aderito al programma dove dentro inserirei gli artisti nella listview con relativo numero di telefono, non so come fare effettivamente a risolvere la cosa. alla fine mi serve visualizzare nome e telfono della persona e cliccando sulla listviev ricavare il numero di telefono dentro la edittex txtphone.text
 
Top