Newsgroup: it.comp.lang.visual-basic
Titolo: Errore di eccezione per un valore non trovato in mysql

Salve a tutti.
Come dice l'oggetto programmando in vb con le ado riscontro un problema con
il database mysql.
Premetto che ho fatto il porting di un db access in uno mysql e fin qui
tutto bene. A programma scelgo attraverso un file ini se utilizzare il db
access o quello mysql. Sta di fatto che mi sono trovato (sono in fase di
testing) con il database inconsistente, e più precisamente in un campo avevo
un valore che non aveva riscontro in una tabella, per cui quando andavo a
fare l'sql ovviamente tornava una riga vuota. E con Access non ci sono
problemi.
Con mysql al momento della lettura di un eventuale record vuoto vb mi torna
un errore di eccezione che mi dice che in quel momento non poteva essere
READ (!?!). Ho provato ad utilizzare la gestione degli errori ma l'eccezione
salta sempre fuori.
Premetto anche che sto usando DAO per Access e ADO per mysql e utilizzo lo
stesso recordset a runtime. Infatti dichiaro il recordset come object e poi
faccio il cast con il recordset appropriato a seconda del database. Non so
se questo può influire sulla gestione del database...
Qualcuno mi sa trovare una risposta a questo???
Grazie a chi mi risponderà!
Max

 se questo può influire sulla gestione del database...
Le volte che ho avuto un problema di memoria che "non poteva essere
read", la soluzione stava nell'utilizzare l'interfaccia (del programma)
corretta. Come dire che potrebbe essere il cast che fai al recordset
(forse è il caso che tu mostri qualche porzione del tuo codice).
Tuttavia, giusto per cercare prima l'ovvio: hai installato le ultime
versioni di Ado e jet e almeno un servicepack per Vb, vero?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 versioni di Ado e jet e almeno un servicepack per Vb, vero?
Sarebbe anche utile sapere se usa ODBC o OLEDB per accedere a MySql...
Ciao
Alberto

 versioni di Ado e jet e almeno un servicepack per Vb, vero?
Mhm... Il problema ce l'ho anche su Access. Credo che tu abbia ragione 
che il problema stia nel cast...
Il codice che apre un recordset è questo:
Public Sub ApriRecordset(ByRef r As Object, ByVal TDB As String, ByVal S
As String)
On Error GoTo abc
If TDB = "MYSQL" Then
    Set r = New ADODB.Recordset
    r.Open S, conn
ElseIf TDB = "ACCESS" Then
    Set r = DB.OpenRecordset(S)
End If
Exit Sub
abc:
    MsgBox Err.Description
End Sub
Tuttavia, come dicevamo, fin qui non dà problemi. La chiamata
incriminata è questa:
ApriRecordset rec2, sTDB, "select rascl from anclienti where cdcli ='" +
rec!clifa + "'"
rec2 è un object
rec!clifa è un valore che esiste nella tabella ma non ha corrispondenza
con cdcli, per cui dovrebbe tornare un recordset vuoto, 
e invece si impalla.
Il cast come vedi lo faccio nella routine APRIRECORDSET.
Se il ritorno della procedura è un recordset pieno non ci sono problemi
altrimenti
viene generato l'eccezione che la memoria non poteva essere read...
Grazie!
Max


 wrote in message
news:AA_6a.156098$
YG2.4...@twister1.libero.it

Per mysql utilizzo OLEDB. Però come dicevo prima il problema ce l'ho
anche
su Access... 


 (forse č il caso che tu mostri qualche porzione del tuo codice).
