Newsgroup: it.comp.lang.visual-basic
Titolo: ADODB.Recordset non apre nulla!!!

Possibile che un ADODB.Recordset a un certo punto non vuole saperne di 
aprire nessun recordset?
Spezzone di codice:
Set RS = New ADODB.Recordset
StrSQL = "" & _
"SELECT * FROM Enti ORDER BY Descrizione ASC"
RS.Open StrSQL, Conn, adOpenStatic, adLockOptimistic
While Not RS.EOF
     cCodiciEnti.Add CStr(RS("ID_Ente").Value)
     cmbEnti.AddItem CStr(RS("Descrizione").Value)
     RS.MoveNext
Wend
RS.Close
E fin qui tutto ok: apre tranquillamente il recordset e riempie le 
collections.
Poi c'č una riga di commento, e poi:
'Carico i dati delle ricette
StrSQL = "SELECT * FROM Ricette"
RS.Open StrSQL, Conn, adOpenStatic, adLockOptimistic
I = 1
While Not RS.EOF
     ...
     RS.MoveNext
Wend
RS.Close
Set RS = Nothing
Ma il metodo open mi restituisce sempre un recordset vuoto!!!
Eppure ho scritto SELECT *... non c'č nessun filtro sui record... e la 
tabella contiene dati perchč la vedo io da console...
Che sta succedendo??? o_O
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|
--
X-Privat "FREE Usenet" - 
http://www.newsserver.it

Che sta succedendo??? o_O
Non è che ti manca un "set rs = new ..."  prima del riutilizzo di rs
con un'altra tabella?
=======================================================================
Se mi vuoi scrivere togli le maiuscole
cteniza...@hotmail.com
=======================================================================

 con un'altra tabella?
No perchè il primo Open va a buon fine. Poi chiudo il recordset e lo 
riapro con un'altra query, ma mi dà sempre recordset vuoto.
Se facessi:
RS.Open "..."
   ...
RS.Close
Set RS = Nothing
allora prima di utilizzare nuovamente RS dovrei fare "Set RS = New ...", 
ma RS non lo setto a nothing dopo la chiusura del primo Open().
Ho provato con un progetto nuovo: QUELLA tabella mi restituisce sempre 
un recorset vuoto.
Ho sgamuffato un po' e ho scoperto che il problema sussiste quando 
(parlo di MySQL 4.1.7) lavoro con una tabella in cui ho un campo date 
NOT NULL DEFAULT '0000-00-00'. Non so se valga lo stesso con un campo TIME.
Alla fine ho risolto ri-settando il campo dandogli la possibilità di 
essere nullo.
La cosa strana è che la tabella era di 12 record e tutti avevano il 
campo data valorizzato (quindi non nullo per impostazione, e comunque 
nemmeno azzerato...).
Mah...
-- 
Quando noi ignoranti eravamo di più, tutto era più bello (A. Celentano).


[...CUT...]
(...magari è soltanto una cretinata...)
Non ne sono sicuro, ma ho sentito dire che se non fai un ORDER BY dentro la
stringa SQL, il recordset resta vuoto finchè non fai un RecordCount da
codice, perché l'ORDER BY fa caricare i record al motore del db.
Non so se è vero, ma eventualmente hai provato a passare una stringa con un
ORDER BY?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Proverò a lavoro... quindi fra una 20ina di minuti.
Cmq mi pare strano.
Da prompt faccio "SELECT * FROM tabella;" e mi zompa fuori la tabella di 
12 record (con i campi date valorizzati!!!), la stessa select la faccio 
da VB e mi dà immediatamente RS.EOF vero.
Comunque proverò...
Ah! Ora che ci penso! La query iniziale era:
SELECT *
FROM Tabella
WHERE UserID=... AND Data=...
ORDER BY Ora ASC
e pure allora mi dava EOF. La stessa query del codice vb l'ho stampata 
nella finestra immediata e l'ho copiata-incollata nel prompt: ha 
funzionato. In VB no.
?!?


 Che sta succedendo??? o_O
dal tuo codice non sembrerebbe, perchè non è riportato, ma la butto lì lo
stesso, perchè è una cosa che mi aveva fatto parecchio dannare...
non è che hai impostato un filter sul recordset, prima di chiuderlo?
perchè se c'era, è rimasto anche se hai chiuso e riaperto con un altro
comando sql
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

No. Nessun filtro.
Il codice che ho postato č immediatamente successivo alle istruzioni:
Set Conn = New ADODB.Connection
With Conn
     .Mode = adModeShareDenyNone
     .CursorLocation = adUseClient
     .Open stringadiconnessione
End With
Set RS = New ADODB.Recordset
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|
--
GIGAMAIL By X-Privat - 
http://www.x-privat.org/gigamail.php

 Il codice che ho postato č immediatamente successivo alle istruzioni:
boh.
prova, cosě, per non lasciare nulla di intentato, a dimensionare un nuovo
recordset e ad usare quello, perchč, sinceramente, non riesco a spiegarmi
il comportamento che rilevi.
nota a margine: l'order by non ha nessuna influenza ai fini del bof o
dell'eof...
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Si infatti poi ho provato a creare una nuova tabella con solo un campo 
auto_increment e uno varchar. Funziona.
Quello che ho notato č che se dichiaro una colonna come DATE NOT NULL 
allora mi esce quel problema. Anche se poi in quella colonna ci sono 
delle date valide.
Se invece dichiaro la colonna semplicemente come DATE (quindi potrebbe 
assumere valore NULL) allora tutto funziona.
Ma non capisco perchč...


 Ma non capisco perchč...
sinceramente, a questo punto, neanche io.
che c'entra tutto questo con il quesito iniziale?
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 dell'eof...
(...infatti, non ne ero neanche sicuro, lo dicevo che era una cretinata....)


 che c'entra tutto questo con il quesito iniziale?
La mia voleva essere una mezza risposta al mio stesso quesito: il 
recordset continua a venirmi restituito vuoto se dichiaro i campi DATE 
in un certo modo. Nonostante la tabella sia piena e correttamente 
valorizzata.
Anche se continuo a non sapere come mai si verifichi questa condizione...
-- 
Quando noi ignoranti eravamo di piů, tutto era piů bello (A. Celentano).
  ___   _   ___ _  _______   _______ ___
|   \ /_\ | _ \ |/ / _ ) \ / /_   _| __|
| |) / _ \|   / ' <| _ \\ V /  | | | _|
|___/_/ \_\_|_\_|\_\___/ |_|   |_| |___|
--
