Ceskho ha scritto:
hres è dichiarato?
si si...
picavbg ha scritto:
RiCi12 ha scritto:
.......................
nomedb = "registro_del_prof_" & user.Name
path = user.Home
WITH $hConn
.type = "sqlite3"
.host = path
END WITH
$hConn.name = nomedb
classesel = lstclassi.Text
lstmat.Clear()
$hConn.Open()
sql = "SELECT * FROM mat WHERE classi2 LIKE classesel"
hres = $hConn.exec(sql)
FOR EACH hres
lstmat.Add(hres!mat)
NEXT
$hConn.Close()
Uso da poco Sqlite3 e quindi lo conosco altrettanto poco, però secondo me il problema é dentro l'istruzione 'sql=' dove leggo l'uso della funzione LIKE, la quale permette la ricerca di tutti quegli elementi di tabella "classi2" il cui contenuto comprenmda almeno un crt della variabile "classesel". Ecco, mi pare che LIKE desideri che la stringa da ricercare sia compresa fra due "*". Poiché "classesel" contiene un valore proveniente da "lstclassi.Text", può darsi che manchino proprio gli "*" di delimitazione voluti dalla funzione LIKE. Potresti perciò modificare l'istruzione "sql=" nella seguente:
sql = "SELECT * FROM mat WHERE classi2 LIKE" & "*" & "classesel" & "*"
e riprovare.
Magari, quello che ho notato non c'entra niente, ma provare non fa mai male. :-) :ciao:
giusta osservazione, ma quello li non è un problema. Mi son visto costretto, nel programma precedente, a fare in modo che cercasse solo la parola esatta, e avevo risolto così...
sql = "SELECT * FROM voti WHERE materia2 LIKE '" & materiasel & "'"
Risolvendo perfettamente..
Il problema, però non si va a risolvere: com'è possibile che in parte vada e in parte no? Lo stesso pezzo di codice, oltretutto. Non ha minimamente senso..
Comunque, vi posto il pezzo di codice incriminato: praticamente, all'avvio(form_open), gli faccio controllare se esiste tale database, altrimenti lo crea. Se già esiste, mi va a leggere i valori in esso contenuto, e mi prende le varie classi e me le mette in una listbox.. E basta..E già qui non va, dandomi l'errore sull'hres = bla bla bla..Se cancello il database, e uso dei valori che inserisco at the moment( senza usvire dal programma), il pezzo riportato sopra va', tranquillamente(quello segnalato come funzionante)
Comunque..
PUBLIC SUB Form_Open()
nomedb = "registro_del_prof_" & user.Name
path = user.Home
WITH $hConn
.type = "sqlite3"
.host = path
END WITH
$hConn.Open()
IF NOT $hConn.Databases.Exist(nomedb) THEN
$hConn.databases.Add(nomedb)
$hConn.name = nomedb
$hConn.Close()
$hConn.Open()
sql = "CREATE TABLE 'classe' ('id' INTEGER PRIMARY KEY, 'classi' VARCHAR(255) DEFAULT NULL);"
htable = $hConn.exec(sql)
sql = "CREATE TABLE 'mat' ('id' INTEGER PRIMARY KEY, 'classi2' VARCHAR(255) DEFAULT NULL, 'materia' VARCHAR(255) DEFAULT NULL);"
htable = $hConn.exec(sql)
sql = "CREATE TABLE 'stud' ('id' INTEGER PRIMARY KEY, 'classi3' VARCHAR(255) DEFAULT NULL, 'stud' VARCHAR(255) DEFAULT NULL);"
htable = $hConn.exec(sql)
sql = "CREATE TABLE 'voti' ('id' INTEGER PRIMARY KEY, 'materia2' VARCHAR(255) DEFAULT NULL, 'voto' VARCHAR(255) DEFAULT NULL, 'stud2' VARCHAR(255) DEFAULT NULL);"
htable = $hConn.exec(sql)
$hConn.Close()
ELSE
lstclassi.Clear()
$hConn.Close()
$hConn.Open()
sql = "SELECT * FROM classe"
hres = $hConn.exec(sql)
FOR EACH hres
lstclassi.Add(hres!classi)
NEXT
$hConn.Close()
ENDIF
END
l'errore lo riporta li, solo li...