[VB.NET] - RecordCount ritorna -1

giovedì 06 marzo 2008 - 10.59

mavi82 Profilo | Newbie

Salve sono ormai in un vicolo cieco.
ho una query parametrica che funziona benissimo eccezion fatto del
RecordCount che mi restituisce -1
Come posso fare per contare i record della query?
Non posso utilizzare COUNT(*) altrimenti devo settare 2 volte i
parametri, non posso cambiare il cursore
help me!!!

Esempio (senza parametri di quello che faccio)

Module T_QRY Public sel_test As ADODB.Command Public Sub prepara_sel_test() sel_test = New ADODB.Command sel_test.ActiveConnection = main.start.conn sel_test.CommandText = "SELECT RIS_STR_COD FROM STR_RIS WHERE RIS_NUM_ACC = '00001312'" End Sub End Module 'dopo aver caricato la qry all'avvio sotto un pulsante eseguo il seg.codice: Dim rs_conn As ADODB.Recordset rs_conn = sel_test.Execute() MsgBox(rs_conn.RecordCount)

se scorro il recordset, tutto funziona benissimo

grazie 1000
Mario

alx_81 Profilo | Guru

>Salve sono ormai in un vicolo cieco.
Ciao!

>ho una query parametrica che funziona benissimo eccezion fatto
>del RecordCount che mi restituisce -1
>Come posso fare per contare i record della query?
>Non posso utilizzare COUNT(*) altrimenti devo settare 2 volte i
>parametri, non posso cambiare il cursore help me!!!
Quello che mi chiedo è perchè devi usare i recordset.. Non puoi utilizzare ADO.Net?
Comunque il recordcount ti ritorna -1 perchè non hai definito correttamente il cursore.
Deve essere adUseClient.
Non conoscendo il tuo contesto non posso esserne certo, ma sarebbe meglio smettere di utilizzare ADO per dare spazio ad ADO.Net.
Ciao!
Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

mavi82 Profilo | Newbie

puoi fornirmi un esempio di ADO.Net!

ho postato tutto il codice che utilizzo, non risci a visualizzarlo...
ciao e grazie Mario

alx_81 Profilo | Guru

>puoi fornirmi un esempio di ADO.Net!
eccolo (fatto al volo eh)


OLEDB, access ad esempio
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

SQL Server:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
>
>ho postato tutto il codice che utilizzo, non risci a visualizzarlo...
ho visto il tuo codice


Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

mavi82 Profilo | Newbie

Perfetto tutto chiarissimo, solo che io fin ora ho utilizzato la classe ADODB per la gestione del db, ora come faccio devo cambiare tutto, o posso variare anche li il CursorLocation
Ciao Mario

alx_81 Profilo | Guru

>Perfetto tutto chiarissimo, solo che io fin ora ho utilizzato
>la classe ADODB per la gestione del db, ora come faccio devo
>cambiare tutto, o posso variare anche li il CursorLocation
Diciamo che l'approccio utilizzato da te è molto vecchio .
Se non ti costa troppo, rivedi il più possibile l'applicazione.
piano piano puoi comunque scrivere le cose nuove in ADO.Net.



Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

mavi82 Profilo | Newbie

Sei molto gentile: GRAZIE!

quindi te mi consigli di abbandonare la classe ADODB e di migrare verso la oleDB
diciamo che preferisco sempre avere un controllo completo del recorset e far gestire quando meno a microsoft:)

mica hai sotto mano esempi di utilizzo delle oleDB
Grazie ancora
Ciao Mario

alx_81 Profilo | Guru

>Sei molto gentile: GRAZIE!
di nulla!
>
>quindi te mi consigli di abbandonare la classe ADODB e di migrare verso la oleDB
non sono cose paragonabili. ADODB è una libreria di classi che utilizzano vari provider, tra cui OLEDB.
Oledb è un provider. Quindi la System.Data.OleDb è la libreria del provider.
Ti consiglio di utilizzare ADO.Net e di scartare ADODB in ambiente .Net (Windows Forms, Asp.net, Web Services, ClassLibrary.Net).
Se devi usare VB6, Asp, tieniti buono pure ADODB .

>diciamo che preferisco sempre avere un controllo completo del recorset e far gestire quando meno a microsoft:)
La modalità disconnessa di ADO.Net (Dataset e Datatable) ti dà un grande controllo. Diciamo che il futuro porterà ad un sempre minore utilizzo degli oggetti tipo il Dataset dando spazio alle entità (Linq ad esempio con VS2008). Quindi visto che tu sei ancora a livello "distinzione tra ADODB e ADO.Net" non preoccupartene più di tanto. Cerca di capire ADO.Net e poi sappi che in futuro useremo sempre di più le entità e un'analisi più "a oggetti".

>mica hai sotto mano esempi di utilizzo delle oleDB
vai su MSDN e cerca le seguenti stringhe (da lì parte tutto):

System.Data.Oledb Namespace
System.Data.SqlClient Namespace
System.Data Namespace

>Grazie ancora
di nulla!
se ritieni che ti sia stato di aiuto, accetta la risposta che chiudiamo il thread.
ciao!

Alx81 =)

http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5