Recordset

lunedì 06 settembre 2004 - 16.09

SilverGecko Profilo | Newbie

Ciao a tutti!
Sto sviluppando un'applicazione che in alcune parti fa uso di datagrid e quindi di dataset.
In altre parti però preferisco semplificare usando i recordset.. il problema è che dopo aver incluso la libreria ADODB nel progetto e aver istanziato e aperto un oggetto recordset, questo genera un eccezione "System.Runtime.InteropServices.COMException".
Spulciando nella documentazione sembra che debba usare comunque i dataset..
C'è un modo per usare i recordset al "vecchio modo"? Se no come posso usare l'oggetto table del dataset alla stregua del recordset?
Ciaooo!

alextyx Profilo | Expert

Caro Silver, quando iniziai la mia applicazione principale, un annetto fa, optai per l'uso dei recordset e di ADO. Funziona tutto benissimo, sia con Database di tipo MDB sia usando MSDE (SQL Sever). Non ho mai usato un dataset o un dataadapter (e neppure un datagrid), eppure la mia è un'applicazione gestionale basata quindi sull'interazione con un database. Probabilmente l'uso che tu fai dei recordset potrebbe nn essere corretto. Cmq, ADO e i recordset sono utilizzabili, questo te lo assicuro!

SilverGecko Profilo | Newbie

l'uso che devo fare dei recordset è molto semplice ovvero prelevare dei dati in tabella.. Visto che sono un "niubbo" di .net mi è venuto il dubbio che fossero stati integrati all'oggetto dataset, che uso solo per le datagrid che per ora in alcune parti del mio applicativo sono necessarie.
Quello che faccio con il recordset è semplicemente:

Dim rst as ADODB.Recordset

rst = CreateObject("ADODB.Recordset")

Call rst.Open(strSql, Conn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly)

dove strSql è una query su una tabella, conn è la connessione

Non so forse non ho importato le librerie corrette per i recordset?

Grazie!
Ciaoo

alextyx Profilo | Expert

Caro Silver, nn conosco la tua tecnica di istanza:

Dim rst as ADODB.Recordset
rst = CreateObject("ADODB.Recordset")

Prova la mia:

Dim RstTipiPagamento As New ADODB.Recordset
Dim StrSQL As String
StrSQL = "SELECT * FROM TabTipiPagamento ORDER BY Formula"
RstTipiPagamento.Open(StrSQL, GIN.CnnGIN, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly)

Se nn funziona neppure così,.....allora riparliamo delle librerie :-)

SilverGecko Profilo | Newbie

si ho proato ma il risultato è identico... mi potresti suggerire quali sono le librerie necessarie a far girare i recordset??

Nel frattempo sto usando gli oggetti dataset e dataadapter ma per la semplice consultazione di dati sul db credo che sia un meccanismo complesso e inutile.

trinity Profilo | Guru

SilverGecko
la dll che devi importare in net per utilizzare è la seguente: adodb.dll versione 7.0 e la introduci nel progetto facendo seguendo questo iter:

click sulla voce progetto di vs net e scegli aggiungi riferimento, alla sezione Net troverai immediatamente la dll in questione.

Ma il tuo problema ti appare quando cerchi di stabilire una connessione al database?

Se si, Mi potresti dire che tipo di database utilizzi?

Ciao

alextyx Profilo | Expert

Scusate il ritardo......dunque... se vuoi fare come ho fatto io, devi partire da

Progetto----> Aggiungi Riferimento ----> .Com ----> e selezioni: Microsoft ActiveX Data Objects 2.7 Library

Fammi sapere!
Ciao.

trinity Profilo | Guru

Dimenticavo vi consiglio di installare il MADC 2.8.

SilverGecko Profilo | Newbie

eccomi dunque ho inserito sia la adodb.dll che la Microsoft ActiveX Data Objects 2.7 Library e dopo aver effettuato con successo la connessione al db, istanzio il recordset e poi viene generata l'eccezione alla riga:

rst.Open("SELECT * FROM CLIENTI", ConnectionParams.DB_Connection, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly)

l'eccezione è di tipo "System.Runtime.InteropServices.COMException" e il messaggio è il seguente
"Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another."

dimenticavo.. mi interfaccio ad un db mysql tramite odbc

trinity Profilo | Guru

Anche io utilizzo mysql e mi interfaccio con il ODBC.
Il mio iter per utilizzare mysql è il seguente:

Installo il motore mysql(database)
Installo Driver odbc 3.51
Installo MDAC 2.8

Poi creo un dsn di sistema

e la connessione la faccio in questo modo:

Public db As New ADODB.Connection()
Public tabella As New ADODB.Recordset()

db.ConnectionString = "DSN=HManager" Apertura database
db.Open()

tabella.Open("SELECT * FROM tabella ", db, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic)


Ciao

SilverGecko Profilo | Newbie

si ecco anche io facevo le stesse operazioni.. piccolo particolare che usavo una connessione di tipo OdbcConnection... :-)
ora ho cambiato è il recordset viene riempito.. ma mi chiedo: per continuare ad usare dataset, dataadapter e datagrid devo utilizzare una connessione odbc? devo quindi usare 2 connessioni contemporaneamente?

grazie!!

trinity Profilo | Guru

Io per utilizzare i dataset,dataadapter,datareader ecc. utilizzo l'ado net, non l'adodb, se devo utilizzare quest'ultimo, il dataset non l'utilizzo e nenche il dataadapter e gli altri.

trinity Profilo | Guru

Ha ragione coach io mi sono espresso male mi stavo riferendo al fatto che il dataset,datareader,dataadapter ed altri sono solo utilizzabili in programmazione ado net.

Ciao
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