a memoria:
dim mycon as new connection
dim myres as result
with myconn
..
..
end with
'ricerco il record a partire dal campo testo dell'alimento nel combo
'combo già popolato precedentemente
myres=myconn.exec("select * from ...where alimento=&1", combobox.text)
'attribuisco i valori della tabella
txtC.text=myres!C
....
myconn.close
ora che te l'ho scritto mi è venuto un dubbio sul codice, ma non ho il portatile davanti, controllo stasera.. possibile che alcuni valori posti nel combobox.text creino casino?
tieni presente che su G2 funziona a meraviglia
la struttura di segnalazioni errori di g3 è ancora traballante, è probabile che ci sia un errore nel codice, dovresti provare a lanciare l' applicazione come eseguibile e vedere come si comporta, se è un errore di codice di apparirà il relativo messaggio, se è un problema di g3 crasherà,
prova inoltre a mettere un istruzione catch in fondo al codice con il problema così magari hai una segnalazione migliore
Catch
Message.Error(Error.Where & " \n" & Error.Text, "ok")
io sto lavorando molto con g3 (sto scrivendo la nuova versione di gesthotel) e a parte questi problemi nel debug dell' ide direi che è stabile e affidabile quanto g2
ecco il codice che crasha:
Public Sub lstALIMENTI_Click()
Dim myconn As New Connection
Dim myset As Result
With myconn
.Name = "/home/andy/Gambas3/myZone/data/myZone.db"
.Type = "sqlite3"
.Open
End With
myset = myconn.Exec("select * from tbMiniblocchi where ALIMENTO=&1", lstALIMENTI.Text)
mLibs.AlimentoSelezionato = myset!ID
mLibs.GrammiAlimentoSelezionato = myset!GRAMMI
txtP.text = myset!P
txtC.text = myset!C
txtG.Text = myset!G
txtGRAMMI.text = myset!GRAMMI
txtGiudizio.text = myset!SCELTA
txtALIMENTO.text = myset!ALIMENTO
Catch
Message.Error(Error.Where & " \n" & Error.Text, "ok")
myconn.Close
End
Prova a gestire i valori Null dei vari Record:
If Not IsNull(myset!P) Then
txtP.Text = myset!P
Else
txtP.Text = ""
EndIf
Ho avuto problemi di questo genere per con il componente GridBox...
Gambas andava in crash senza ritornarmi errori...
dovresti anche controllare che il result è pieno prima di utilizzarlo per riempire delle variabili
myset = myconn.Exec("select * from tbMiniblocchi where ALIMENTO=&1", lstALIMENTI.Text)
if myset.availabe then
mLibs.AlimentoSelezionato = myset!ID
mLibs.GrammiAlimentoSelezionato = myset!GRAMMI
txtP.text = myset!P
ecc ecc ecc
non ho mai utilizzato myconn.exec passadogli dei parametri oltre alla query di ricerca, sei sicuro che questa riga sia corretta?
myset = myconn.Exec("select * from tbMiniblocchi where ALIMENTO=&1", lstALIMENTI.Text)
hai provato ad avviare il programma tramite eseguibile?
dovresti anche controllare che il result è pieno prima di utilizzarlo per riempire delle variabili
myset = myconn.Exec("select * from tbMiniblocchi where ALIMENTO=&1", lstALIMENTI.Text)
if myset.availabe then
mLibs.AlimentoSelezionato = myset!ID
mLibs.GrammiAlimentoSelezionato = myset!GRAMMI
txtP.text = myset!P
ecc ecc ecc
non ho mai utilizzato myconn.exec passadogli dei parametri oltre alla query di ricerca, sei sicuro che questa riga sia corretta?
myset = myconn.Exec("select * from tbMiniblocchi where ALIMENTO=&1", lstALIMENTI.Text)
hai provato ad avviare il programma tramite eseguibile?
l'sql parametrica fatta cosi' è fonte 'Leo Miliani'..si puo' anche usare l'altra modalità:
myset = myconn.Exec("select * from tbMiniblocchi where ALIMENTO=' " & lstALIMENTI.Text & " ')"
sempre fatte cosi' mai dato problemi..invece mi interessa il result
se è disponibile si trova con myres.available
come faccio a svuotarlO? a capire se è pieno? se il result non è public mi risulta che sia distrutto alla fine della routine