Newsgroup: it.comp.lang.visual-basic
Titolo: ado count

Private Sub Form_Load()
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
q = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data
Source=" & App.Path & "\Biblio.mdb"
Cn.ConnectionString = q
Cn.Open
Rs.Source = "Select * from authors"
Rs.Open , Cn, adOpenDynamic
Rs.MoveLast
x = Rs.RecordCount
Set AD.Recordset = Rs
AD.Refresh
AD.Recordset.MoveFirst
y = AD.Recordset.RecordCount
Stop
End Sub
==================
Prove con ado....
non bacchettatemi se lo uso che se fosse dao, solo che cerco di capire se
posso fare le stesse cose...
perchè x vale -1 e y 6281?
AD è un AdoDataControl
Greg

 Greg
Con ADO la recordcount è significativa se Cursorlocation = Client...
Ciao
Matteo

 Con ADO la recordcount č significativa se Cursorlocation = Client...
Affermazione falsa. Almeno in parte. Dipende dalla combinazione
dei cursori e degli oggetti che stai utilizzando.
Una stored procedure per esempio se la imposti con un cursore
server non ti darą mai il recordcount come dici tu fintanto che non
la imposti lato client.
Ma un recordset aperto con un adopenkeyset e aduseserver ti
posso assicurare che il recordcount lo restituiscono benissimo.
-- 
Saluti
Andrea Moro
Sito Comune : 
http://www.it-lang-vb.net

 Matteo
===============
Vero, vero.. verificato, ma la discrepanza rimane.
Sia la connessione che il datacontrol hanno cursore AdUseServer, mi resta da
capire perchè in un caso conta e nell'altro no, essendo il tipo di cursore
identico.
Greg


Semplice, perche se ho visto bene hai inserito il metoto movelast, questo ha
obbligato ado a popolare tutto il recordset in questa maniera la chiamata
successiva recordcount si trovava settata
Tieni conto che se lavori in rete e fai una cosa del genere, devi aspettare
che si popola completamente il rs prima di avere recordcount.
Carlo Alberto
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.474 / Virus Database: 272 - Release Date: 18/04/2003

 Semplice, perche se ho visto bene hai inserito il metoto movelast,
==========
Il movelast c'era anche sul primo recorset e non contava, poi nelle varie
prove è sparito
greg

 Semplice, perche se ho visto bene hai inserito il metoto movelast
===========
Ho tolto il movelast e messo sulla prima... non cambia nulla
C'è pure un'altra stranezza.....
come fa a funzionare il datacontrol con il solo recordset ma senza alcuna
connessione?
Se la porta dietro il recordset?
Grazie della'attenzione
Greg
Private Sub Form_Load()
Dim Cn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
q = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data
Source=" & App.Path & "\Biblio.mdb"
Cn.ConnectionString = q
Cn.CursorLocation = adUseServer
Cn.Open
Rs.Source = "Select * from authors"
Rs.Open , Cn, adOpenDynamic
Rs.MoveLast
x = Rs.RecordCount
'qui x vale -1
' passo lo stesso recordset all'ado data control
adDataControl.ConnectionString = ""
adDataControl.CursorLocation = adUseServer
Set adDataControl.Recordset = Rs
adDataControl.Refresh
y = adDataControl.Recordset.RecordCount
'qui lo stesso recodset conta giusto
Stop
End Sub

 AD è un AdoDataControl
Suppongo (non li uso) che ... la risposta stia in quest'ultima frase.

 Set adDataControl.Recordset = Rs
ora passi tutto il set di record all'adodc, popolando il suo recordset , in
questa maniera sa quante righe sono e di conseguenza ti restituisce
recordcount.
Io non uso mai Adodc se non per crearmi la stringa di connssione, in quanto
è troppo 'pesante', inoltre se ti serve sapere quante righe hai recuperato
cambia il cursore in client.


 ha scritto nel messaggio
news:b8ehne$96b7v$1...@ID-129608.news.dfncis.de...
