Newsgroup: it.comp.lang.visual-basic
Titolo: problemi con recordcount in ADO

Ho dei problemi usando la proprieta' recordcount dell'oggetto
ADODB.recordset.
Ho usato la seguente libreria Microsoft ADO 2.6 library.
La versione di VB e' ovviamente la 6.
La connessione e' con SQL SERVER versione 2000.
Il sorgente e' il seguente:
Option Explicit
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Private Sub Command1_Click()
Dim dbname As String
    If Option1.Value Then
        dbname = "azienda"
    Else
        dbname = "recordcount"
    End If
    cn.Open "provider=sqloledb;initial catalog=" & dbname & ";integrated
security=sspi"
    rs.Open "select * from movimenti", cn, adOpenStatic, adLockPessimistic
    'rs.Open "select * from vistao2", cn, adOpenStatic, adLockPessimistic
    MsgBox rs.RecordCount
    rs.Close
    cn.Close
    Set cn = Nothing
End Sub
Come si puo' vedere uso due database:
azienda
recordcount
Il codice agisce sui due database in modo perfettamente identico.
Ma quando mi connetto ad azienda recordcount mi ritorna il valore 7 (che
e' giusto),
quando mi connetto ad recordcount mi ritorna il valore -1 (eppure i due
database
mi sembrano identici)
Qualcuno mi puo' aiutare?
Giovanni
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio
news:3c18...@news.netsys.it...


 mi sembrano identici)
Come struttura oppure come dati contenuti ?
Se la tabella "movimenti" è vuota, come ti ha già detto Andrea, il valore -1
è giusto !
--
'''®foolbrain®'''
Visual Basic Programmer
Database Designer & Manager
ICQ 88912631

 Giovanni
Al solito ...
gurda nei vecchi post su
http://groups.google.com/groups?q=it.comp.lang.visual-basic&hl=en&safe=off&m
eta=site%3Dgroups
troverai quello che cerchi

 ha scritto nel messaggio
news:3c18...@news.netsys.it...
cut

 Il sorgente e' il seguente:
E vabbè dai .. visto che sembra ignoto a tutti ...
prova a fare un RS.movelast dopo aver aperto il recordset .. vedrai che la
proprietà RecordCount ritornerà il valore giusto.
Ti consiglio comunque di cercare nei vecchi post
SAluti

 Devi impostare la proprietą cursorLocation del recordset a "adUseClient"
[sfalcio selvaggio]
E invece tu dovresti impostare meglio il tuo quoting :-(
--
Stefano Zamboni (
sz...@libero.it
)
--------------------------------------------------------------
"If Bill Gates had a dime for every time a Windows box crashed...
...Oh, wait a minute, he already does."

 troverai quello che cerchi
Ho guardato.
Si grazie in effetti ho trovato la soluzione.
Ho posto
.cursorlocation=aduseclient
e adesso funziona bene in entrambi i casi
(i.e. sia il database azienda che recordcount).
Ho quindi risolto il mio problema ancora grazie.
Ma esiste una ragione logica per la quale senza impostare
la proprita' .cursorlocation in un caso funzionava e nell'altro 
no???!!!


 ha scritto nel messaggio
news:3c18...@news.netsys.it...


 no???!!!
In breve .. recordcount con un cursore lato client è in grado di restituire
il numero di record esatto (anche se non è affidabile senza alcuni
accorgimenti) in quanto il cursore statico è una copia (uno snapshot) dei
dati del DB. I record in pratica vengono passati dal server al client, per
cui il provider approfitta di tale operazione per aggiornare il contatore.
I cursori lato Server restituiscono i record solo quando richiesti. Un
conteggio di tutti i record vorrebbe dire uno scorrimento di almeno un
indice, per cui un'operazione aggiuntiva.
Come ti ripeto però .. in entrambi i casi se fai un movelast ti viene
restituito il numero esatto di record.
Saluti