16
Programmazione (Gambas 2) / Re: Non so perchè queste istruzioni funzionano
« il: 26 Dicembre 2010, 18:35:17 »
Semplicemente che per verificare se il titolo combacia non serve che fai un ulteriore ciclo 'For Each'...
Quando nella Query metti il WHERE... automaticamente il DB ti restituisce un Result solo dove la clausola WHERE è soddisfatta. Quindi se tu metti un titolo che non esiste... il risultato è NOT AVAILABLE...
Se invece il libro c'è già... il risultato è AVAILABLE...
In sostanza:
PS. Attenzione però, perché usando il LIKE... potresti scartare dei libri con titoli simili per stringa di ricerca.
Così com'è scritta se volessi inserire "mare calmo" quando nel DB già c'è "I segreti della pesca quando con in mare calmo..." ti dice che già c'è ("Libro già presente nel database").
Quando nella Query metti il WHERE... automaticamente il DB ti restituisce un Result solo dove la clausola WHERE è soddisfatta. Quindi se tu metti un titolo che non esiste... il risultato è NOT AVAILABLE...
Se invece il libro c'è già... il risultato è AVAILABLE...
In sostanza:
Codice: gambas [Seleziona]
sql = "SELECT * FROM biblio WHERE titolo LIKE '%" & Aggiungi.TextBox2.Text & "%'"
hres = $hconn.Exec(sql)
IF NOT hres.Available THEN
$hconn.Begin
hres = $hconn.Create("biblio")
hres!titolo = Aggiungi.TextBox2.Text
hres!autore = Aggiungi.TextBox3.Text
hres!annolettura = Aggiungi.TextBox4.Text
hres!commento = Aggiungi.TextArea1.Text
hres.Update
$hConn.Commit
$hConn.Close
Aggiungi.TextBox2.text = ""
Aggiungi.TextBox3.text = ""
Aggiungi.TextBox4.text = ""
Aggiungi.TextArea1.Text = ""
Message.Info("Libro aggiunto al database", "Ok")
ELSE
Message.Info("Libro già presente nel database", "Ok")
ENDIF
END
PS. Attenzione però, perché usando il LIKE... potresti scartare dei libri con titoli simili per stringa di ricerca.
Così com'è scritta se volessi inserire "mare calmo" quando nel DB già c'è "I segreti della pesca quando con in mare calmo..." ti dice che già c'è ("Libro già presente nel database").