Italian [Risolto]CLV index(0) item click, & Index(1) SQLite

XorAndOr

Active Member
Licensed User
Longtime User
Ciao
(domanda da figuraccia)
Ho utilizzato sempre da button aggiornamento al db SQLite
questa volta mi serve da click su clv

Cliccando su CLV index(0) dovrebbe aggiornarmi il campo del db sqlite (non lo fa)
capito dopo che il db parte da index 1

quindi nell'evento clv metto index +1 e i conti tornano
B4X:
'UPDATE AL CLICK
Private Sub CLVStato_ItemClick (Index As Int, Value As Object)
    Log(Index)
    Log("Aggiornato")
    dbSQL.ExecNonQuery2($"UPDATE tbmsg SET led =?,modo =? WHERE rowid =?"$,Array As String("Verde","Abilitato", Index +1))'<---index +1 ??
    
    LeggiDB'--->sub   
    
End Sub
è corretto mettere index +1 o il problema sta da un'altra parte?
grazie
 

LucaMs

Expert
Licensed User
Longtime User
E' una pessima idea lavorare con rowid, e non solo perché esiste in SQLite ma non in altri DB. Meglio far finta che non esista proprio.
Usa la chiave primaria della tabella (che magari metti come valore dell'Item della CVL)
 

LucaMs

Expert
Licensed User
Longtime User
capito
stavo guardando proprio ora sul database MySql del mio server, che mi permette di impostare
auto_increment un valore di partenza, esempio 0 e lui registra da 0 in poi
su SQLite browser non lo trovo
Nota che sono due cose diverse; un conto è un campo integer auto incrementato, un altro è il rowid, che è esclusivo di SQLite e non serve a un tubo, se non a complicarti la vita.

Si, un campo auto incrementato si può fare anche con SQLite. Comunque dipende dal tool che usi per creare db e tabelle, ma puoi farlo anche eseguendo una query che crei la tabella e quindi i campi, compreso quello.

SQLite browser è un tool di gestione DB (io ne uso un altro)? Se è così, devi solo cercare come si faccia direttamente, ovvero non lanciando una query.
 

LucaMs

Expert
Licensed User
Longtime User
SQLite browser è un tool di gestione DB (io ne uso un altro)? Se è così, devi solo cercare come si faccia direttamente, ovvero non lanciando una query.
Una ricerca immagini su Google mi ha riportato questa, tra le altre; spero sia SQLite browser:

1682513185868.png


Eventualmente puoi lanciare una query simile a quella nell'immagine, in basso.
 

LucaMs

Expert
Licensed User
Longtime User
View attachment 141489
questo è il mio db in sqlite browser, ancora non trovo quel auto_increment
da farlo partire con 0.
faccio ricerca
grazie per ora @LucaMs
Non puoi farlo partire da zero! Semmai da più di 1, valore di default.

Ma non è importante, non puoi associarlo all'index di CLV, perché quando nella tabella andrai ad eliminare un record, ad esempio, e poi aggiungerne altri, sarebbe un... diciamo pandemonio!

Lascia che parta da 1 - anche perché zero non puoi, come detto. Quando crei l'item per la CLV, come valore dell'item dagli l'id della tabella e lo riceverai nel parametro Value dell'evento Click.
 

XorAndOr

Active Member
Licensed User
Longtime User
Quando crei l'item per la CLV, come valore dell'item dagli l'id della tabella e lo riceverai nel parametro Value dell'evento Click.
Fatto come mi hai detto (se ho capito bene) e funziona, anche se funziona anche con (Index +1 mio metodo)
lo lascio come mi hai consigliato
B4X:
CLVStato.Clear    
  dbCursor = dbSQL.ExecQuery("SELECT * FROM tbmsg")
Do While dbCursor.NextRow
    Dim s As Int
    s = dbCursor.GetString("id")
    CLVStato.Add(CreatePanelItem(dbCursor.GetString("msg"), CLVStato.AsView.Width, 60dip),s)
Loop   
dbCursor.Close

'UPDATE AL CLICK
Private Sub CLVStato_ItemClick (Index As Int, Value As Object)
    Log(Value)
    Log(Index)
    Log("Aggiornato")
    dbSQL.ExecNonQuery2($"UPDATE tbmsg SET led =?,modo =? WHERE id =?"$, Array("Verde","Abilitato", Value))
    
    LeggiDB'--->sub   
    
End Sub
 
Top