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

Salve vorrei sapere un 'informazione riguardo al recordcount in sql server.
l'applicazione sotto access mai dato problemi, ho migrato a sql server e 
sono iniziati gli intoppi.
    Set rs = New ADODB.Recordset
    strSQL = "SELECT * from Mezzi WHERE gruap LIKE '" & gruppo & "' order by 
CodiceMezzo DESC"
    rs.Open strSQL, CN1, 3, 3
    If Not rs.eof Then rs.MoveFirst
    If rs.RecordCount = 0 Then
il valore del recordcount vale -1 per quale motivo se sono presenti più di 
un record???
mi date qualche suggerimento??

 mi date qualche suggerimento??
A parte quello di leggerti la documentazione?
-- 
Salutoni
Sergio
La vita è un lungo apprendistato per imparare ad essere giovani
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:38o1g.17828$6e2....@news.edisontel.com...

Dato che esistono le costanti proprio per non doversi ricordare i "magic 
numbers" immagino che sia perchè usi un cursore lato server.
Comunque, difficilmente serve conoscere la proprietà recordcount:
If rs.Eof Then
    ' Nessun record
Else
    ' La MoveFirst è inutile poichè la Open
    ' posiziona il cursore sul primo record
    ...
Endif
Ciao 

 Comunque, difficilmente serve conoscere la proprietą recordcount:
Mi viene in mente che lo uso spesso per incremetare un campo contatore.....
o per sapere se la tabella č vuota...
--
Greg

 Greg
Ciao
Stefano 

 o per sapere se la tabella è vuota...
Con un campo contatore risolvi il primo problema (ed eviti bei casini).
Con un
if not rs.eof then
endif
risolvi il secondo.
Dicono serva anche rs.bof ma sinceramente non mi è mai servito (forse
dipende da come si aprono i recordset).
-- 
DBMS Firebird
VB6 + Ado

 dipende da come si aprono i recordset).
Nemmeno io ho mai avuto occasione di usarlo, probabilmente perche
1) Si controlla se la tabella è vuota subito dopo aver aperto il recordset, 
e qui è sufficiente testare l'eof.
2) Solitamente i recordset si scorrono andando avanti e non andando 
indietro. In questo caso forse un bel ORDER BY DESC è preferibile.
Ciao 

> dipende da come si aprono i recordset).
Comunque spesso vedo codice con roba tipo
rs.Open
if not rs.Bof and not rs.eof then
    if rs.Recordcount > 0 then ' questo spesso fallisce!
        while not rs.eof
Ciao 

 mi date qualche suggerimento??
Usare un "SELECT COUNT ..." ?

 indietro. In questo caso forse un bel ORDER BY DESC è preferibile.
Non ho mai dovuto farlo per fortuna :)


         while not rs.eof
Infatti, la prima cosa che ho letto quando ho cominciato a documentarmi su
Ado è di non far affidamento sulla recordcount :P


    if rs.Recordcount > 0 then ' questo spesso fallisce!
Vero, fallisce senza movefirst; ma rs.recordcount < 1 non mi č mai fallita.
greg 

 
se non erro, andrebbe fatto un MoveLast prima di leggere il recordcount

 mi date qualche suggerimento??
Vecchia storia:
a) Recordcount funziona solo e soltanto se sei AdUseClient...se sei
lato server ti attacchi...riporta -1
b) Per fare il conto preciso...movelast...io ci metto anche movefirst a
ruota per non scordarsi di ripartire dall'inzio del recordset per le
elaborazioni successive