Newsgroup: it.comp.lang.visual-basic
Titolo: AdoDc

Salve a tutti . Qualcuno ha riscontrato strani comportamenti del controllo
AdoDc ? Se in fase di progettazione lo baso su di una query anzichè su una
tabella , in un DataGrid collegato succedono cose strane , tipo colonne
selezionate mancanti ed invece colonne non usate nella query che compaiono
ed ovviamente sono vuote . Inoltre non riesco ad impostare la propietà
recordsource dell'AdoDc  a run-time . Qualcuno può scrivermi 2 righe di
codice testato e funzionante ?
Grazie per ogni suggerimento.

Mah... io l'ho usato spesso e, per la verita', senza grossi
problemi..... oltre tutto, io gli ADODC li inizializzo solo a runtime,
per cui.....
Il fatto è, pero', che a runtime io non valorizzo i campi che
normalmente vanno valorizzati a design-time (connection string e
record source) MA costruisco un ADODB.Recordset che poi assegno al
controllo tramite la proprieta' indovina un po'...) Recordset. Fatta
cosi', la cosa funge come un treno e, oltre tutto, ti leva un bel po'
di problemi, nel senso che sul recordset che vai a creare hai il
totale controllo PRIMA di associarlo al data control.
Per risponderti correttamente, pero'..... posta il codice che hai
scritto tu, che poi lo rivedo e ti rispondo come lo farei io....
Ciao!
Luca Menegotto.


Ok , questo è giustissimo . Quello che però non mi riesce è 'aggiornare' il
datagrid basato sull'adodc . Cioè , a compile time costuisco l'adodc
basandolo su una qualunque tabelle del mio Db , mentre a run time imposto il
suo record set al risultato di una query basata su un'altra tabella . A
questo punto come devo fare per far si che la griglia si adegui al nuovo
'contenuto' del controllo adodc ? Ho provato sia rebind che refresh senza
effetto , mentre se cerco di impostare datagrid.datasource a run time mi
viene generato un errrore (non ho MSDN , quindi magari sto tentando cose
assurde , tipo incongruenza dei tipi nelle assegnazioni....) .
Effettivamente il problema + grosso mi sembra proprio quest'ultimo : tu hai
impostato tale proprietà del datagrid a tempo di esecuzione ?
Ti ringrazio molto per l'aiuto ,
   ciao.

NOTA: questo messaggio e' analogo a quello che ti ho inviato in
e-mail.....
Allora, credo di avere capito il tuo problema (anche se, non vedendo
il codice, faccio fatica....)
Io, normalmente, le connessioni tra i data bound controls (list,
combo, grid) li faccio a design time - tanto, so quello che voglio
ottenere... - A run time lavoro solo sul data control. Io normalmente
lavoro cosi':
Dim rstApp As ADODB.Recordset
Dim strSQL As String
'...
strSQL = "SELECT pippo FROM pluto ORDER BY paperino"
Set rstApp = CreateRecordset(cnsGlobal, strSQL)
'' ...
Set AdoDC1.Recordset = rstApp
Create Recordset e' un helper che ho scritto io e che serve per
arrivare da un oggetto ADODB.Connection direttamente a un
recordset.... se ti puo' interessare, magari te lo passo, cmq l'ho
postato qualche giorno fa.
Il fatto di assegnare il recordset come qui sopra di per se e' gia'
sufficiente per eseguire tutti i refresh del caso. Occhio pero' che,
nel caso di DataGrido o FlexGrid, devi, se opportuno, ridimensionare
le colonne.
Il tuo problema, per quel che posso capire, deriva dal fatto che tu
RIDAI un comando a runtime (attraverso RecordSource o attraverso la
stringa dell'oggetto command connesso). In quel caso, devi eseguire un
Requery sul recordset, perche' la modifica abbia effetto (quindi:
AdoDC1.Recordset.Requery).
Spero che questo ti aiuti... se hai ancora problemi, comunque, sono
qui.... manda il codice, che vediamo.
Ciao!!!!
Luca Menegotto.
