Newsgroup: it.comp.lang.visual-basic
Titolo: aiuto urgente su recordset


Non riesci a "raggiungere" MSDASQL perchè non hai siquelserver (SQL Server)
installato. Con Jet non c'è problema perchè viene fornito di serie con VB.
Se vuoi puoi provare a scaricare MSDE dal sito Microsoft che è la versione
light di siquelserver.
Ciao VB
Ciao VB

ho fatto una prova quasi per caso e stranamente funziona, ma devo stare
attento a due accorgimenti.
innanzitutto non ho capito perche ma funziona solo se riempio il recordset
con rst.open "stringa query SQL" e non con set rst=cnn.execute ("stringa
query SQL")
dove rst è il recordset e cnn la connessione.
poi, quando lo apro, devo settare il lock batch ottimistico... anche se non
ne capisco il motivo, il batch non serve quando lavorano piu utenti sullo
stesso MDB?
boh...
ah dimenticavo, il cursore deve essere useserver.
un'ultima cosa. il tipo di cursore (srver / client) puo cambiare DOPO che la
connessione è stata attivata? mi serve saperlo perche solo con il cursore
client posso usare la proprieta recordcount, e solo con il cursore server
posso scrivere sui record e poi fare updatebacth. puo darsi anche che non
sia cosi... ma sono alle prime armi e mi funziona solo in questo modo...
grazie a tutti.
MarioH

 query SQL")
Leggi l'help di _tutti_ i parametri magari :)
Poi (e solo POI) usa questa sintassi:
Set rs=New Recordset
rs.CursorLocation=adUseClient
rs.Open sSQL, cnn, adOpenDynamic, adLockBatchOptimistic
Il lock puo' anche essere pessimistico, basta che l'apertura sia
adOpenDynamic.
Ovviamente la connessione la devi aprire prima.
Ciaotutti,
Alessandro

 rs.Open sSQL, cnn, adOpenDynamic, adLockBatchOptimistic
usavo proprio esattamente questa riga e funzionava... ma il cursore doveva
essere useserver. o meglio, forse io non ho colto la sottigliezza, ma iu il
cursore lo impostavo come proprieta di cnn e non di rst... c'è qualche
differenza... ?????



Funziona con MSDASQL e non hai SQlServer installato? Perbacco! mi sembra
molto strano :-(
Ciao VB


no no sempre con Jet... ma se funziona con Jet che me ne frega
dell'altro...? giusto?


Dipende...Se apri con un cnn.Execute sicuramente ha prevalenza la location
della connessione, altrimenti non saprei cosa legga il provider.
Esiste la possibilita' che tu abbia tentato di assegnare un dato di tipo
sbagliato?
Perche' e' impossibile che su un cursore con lock ottimistico in batch non
siano supportate le operazioni di assegnazione, dato che il provider entra
in gioco solo quando dai l'UpdateBatch.
Se lo metti useclient che errore riporta?
Ricorda che con un lock batch l'aggiornamento avviene solo quando dai
l'UIpdateBatch...
Ciaotutti,
Alessandro


lo so, e infatti mi sembrava stranissimo ceh mi desse questo errore quando
scrivevo rst("Nome")="auau"
e il tipo di campo era stringa.
cmq come ho detto adesso funziona... faccio come hai consigliato tu, nel
senso ceh apro con Open e non Execute. o meglio, poiche Execute mi sta piu
simpatico, lo uso quando NON devo modificare record e campi...
MarioH


 Execute serve per eseguire query  che non restituiscono dei dati ma che
modificano il DB o i record (ma sempre tramite SQL), per capirci una
classica query di estrazione dati non funziona con Execute (SELECT
...FROM... WHERE ORDER BY)
Ciao VB


Per funzionare funziona, ma temo restituisca uno snapshot...
Cmq dovrebbe esserci modo per farsi restituire un cursore scrivibile, ma ora
non me lo ricordo :)
Ciaotutti,
Alessandro


Hoops 8-(