Newsgroup: it.comp.lang.visual-basic
Titolo: [?]ADO e Datagrid

Salve a tutti!
Ho un problema e  chiedo se qualcuno puoi aiutarmi, dandomi qualche
suggerimento su come deve essere la sintassi corretta.
Devo rappresentare dei dati provenienti da un database access su un
datagrid, gestendo connessioni, recordset ecc. da programmazione.
Il datagrid è collegato ad un controllo ado, quindi il mio prog. è il
seguente:
Option Explicit
Dim cnn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Dim sql As String
--------------------------------------------
Private Sub Form_Load()
Set cnn = New ADODB.Connection
Set cmd = New ADODB.Command
Set rs = New ADODB.Recordset
cnn.Open "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data
Source=c:\codici\dati\codici.mdb"
Set cmd.ActiveConnection = cnn
sql = " SELECT 
categ.id
, categ.descrizione from categ ;"
rs.Open sql, cnn
Set Adodc1.Recordset = rs
MsgBox sql
End Sub
----------------------------------------------
mi da questo errore: RecordSource non specificata:
nessun oggetto comando impostato per l'oggetto!
grazie claudio

>Set Adodc1.Recordset = rs
Non c'e' bisogno che associ il recordset ad un adodc. Puoi associarlo direttamente alla griglia (proprieta' datagrid.datasource).
Quindi l'adodc puoi anche eliminarlo.
Antonio

Allora, la mia opinione: un oggetto command, o lo usi, o non lo usi.
Se vuoi un mio personalissimo consiglio, usalo sempre, perche' io ho
avuto qualche problemuccio non usandolo (anche se, per la verita', non
con Access ma con DB2 su AS/400)
Dunque, o usi:
Private Sub Form_Load()
    Set cnn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    cnn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" + _
             "Persist Security Info=False;" + _
             "Data Source=c:\codici\dati\codici.mdb"
    sql = "SELECT 
categ.id
, categ.descrizione from categ ;"
    rs.Open sql, cnn
    Set Adodc1.Recordset = rs
End Sub
Oppure:
Private Sub Form_Load()
    Set cnn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    cnn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" + _
             "Persist Security Info=False;" + _
             "Data Source=c:\codici\dati\codici.mdb"
    sql = "SELECT 
categ.id
, categ.descrizione from categ ;"
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = cnsApp
    cmd.CommandType = adCmdUnknown
    cmd.CommandText = strSQL
    rs.Open cmd
    Set Adodc1.Recordset = rs
End Sub
A proposito, come ho visto fatto anche da altri, anch'io ti sconsiglio
- a meno che tu non ne abbia necessita' - l'utilizzo dell'oggetto
ADODC, che e' parecchio pesante.... Assegna il recordset direttamente
alla proprieta' DataSource della griglia.
Ciao!
Luca Menegotto.


 wrote in message
news:38bea095...@news.nettuno.it...


>con Access ma con DB2 su AS/400)
Anch'io li trovo comodi soprattuto per le query con parametri. Peccato che non si possano impostare il tipo di lock ed il tipo di cursore!
Antonio

>potreste scrivere il codice.
Se hai gia' scritto un Command nel DE:
- esegui il comando as esempio tuode.tuocomando(tuoiparametri)
- questo comando ti apre il recordset tuode.rstuocomando.
- imposti set tuadbgrid.recordset = tuode.rstuocomando.
Antonio

Scusate sono un po duro :-))))
Io ho un DE che si chiama DE01 e una CN che si chiama CN01.
quindi faccio:
dim cnRpt as ADODB.Connection
dim rstRpt as Recordset
    Set cnRpt = New ADODB.Connection
    Set rstRpt = New ADODB.Recordset
Qual'è la stringa di connessione ????
    sql = "SELECT ........................;"
    rstRpt.Open sql, cnRpt
Alberto
"Antonio Donatiello" <ant...@REMOVETHISgeminisoft.com> wrote in message
news:89nthp$2l6as$3...@fu-berlin.de...


>
Basta fare
de01.cn01.open        ' per aprire la connessione
poi in DE fai un comando e lo esegui da codice
de01.cmd01.open
che ti apre il recordset che si chiamera'
de01.rscmd01
A questo punto puoi fare
set tuagriglia.recordset = de01.rscmd01
Antonio

Scusa ma lo facevo più difficile di quanto era.
Grazie 1k, Alberto
"Antonio Donatiello" <ant...@REMOVETHISgeminisoft.com> wrote in message
news:89o07q$2m3nf$1...@fu-berlin.de...


Anch'io li trovo comodi soprattuto per le query con parametri. Peccato che =


>connection temporaneo che abbia le impostazioni che desideri.
Purtroppo non e' cosi' (confermato in MSDN on line). L'oggetto Command non ha le proprieta' LockType e CursorType e CursorLocation.
La proprieta' CursorLocation viene eredita dalla connection (anche se la fai a mano) mentre le altre due hanno valori di default che non possono essere modificate (se usi il Data Environment puoi, chissa come hanno fatto loro!).
Antonio

Purtroppo non e' cosi' (confermato in MSDN on line). L'oggetto Command non =


>
E' vero anche per CursorLocation. L'oggetto Command non ha questa proprieta'. Viene eredidata dalla Connection.
Antonio