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

Ciao a tutti,
sto utilizzando un adodc e una datagrid per visualizzare una query. Il mio 
problema è che non capisco come visualizzare solamente i campi che voglio 
io.
Questo è il codice inserito. Nel codice riportato ho omesso la costruzione 
della stringa where, ma tutti i campi che estrapolo nell'SQL mi servono per 
eventuali filtri, ma alcuni non voglio visualizzarli nella griglia
*******************************
  'CaricaDati
        'SELECT
    sSQL = "SELECT CustomerCompl.ORDER_NUM, CustomerCompl.ODVITEM, 
CustomerCompl.PROGR, CustomerCompl.QTY, Clienti.Cliente, Progetti.Progetto, 
CustomerCompl.DataCreazione, Left([DataCreazione],4) AS Anno, 
CustomerCompl.ValveInst_NotInst, CustomerCompl.Valve, 
CustomerCompl.ValveFailLeakTight, CustomerCompl.ValveFailFullStroke, 
CustomerCompl.ValveFailExternal, CustomerCompl.ValveOthers, 
CustomerCompl.Actuators, CustomerCompl.Components, 
CustomerCompl.FailureChargeOrtonCustom, CustomerCompl.MotiviReclamo, 
CustomerCompl.ValutazioneReclamo, CustomerCompl.ProceduraRisoluzione, 
CustomerCompl.VerificaRisoluzione, CustomerCompl.DataMotiviReclamo, 
CustomerCompl.DataValutazioneReclamo, 
CustomerCompl.DataProceduraRisoluzione, 
CustomerCompl.DataVerificaRisoluzione, Techn_Item.QTY AS             QTYTot 
"
    sSQL = sSQL & "FROM ((CustomerCompl LEFT JOIN (Ordinicl LEFT JOIN 
Clienti ON Ordinicl.IDCliente = Clienti.IDCliente) ON 
CustomerCompl.ORDER_NUM = Ordinicl.NumComm) LEFT JOIN Progetti ON 
Ordinicl.IDProgetto = Progetti.IDProgetto) LEFT JOIN Techn_Item ON 
(CustomerCompl.ODVITEM = Techn_Item.ODVITEM) AND (CustomerCompl.ORDER_NUM = 
Techn_Item.ORDER_NUM) "
    sSQL = sSQL & sWhere & " "
    sSQL = sSQL & "ORDER BY CustomerCompl.ORDER_NUM, CustomerCompl.ODVITEM, 
CustomerCompl.PROGR"
        'ADODC
    AdodcCustCompl.ConnectionString = AdoCnn
    AdodcCustCompl.RecordSource = sSQL
    AdodcCustCompl.Refresh
        'SETTO GRIGLIA
        With DataGridCustCompl
            Set .DataSource = AdodcCustCompl.Recordset
            .Columns(0).DataField = AdodcCustCompl.Recordset!ORDER_NUM
            .Columns(1).DataField = AdodcCustCompl.Recordset!ODVITEM
            .Columns(2).DataField = AdodcCustCompl.Recordset!PROGR
            .Columns(3).DataField = AdodcCustCompl.Recordset!QTY
            .Columns(4).DataField = AdodcCustCompl.Recordset!QTYTot
            .Columns(5).DataField = AdodcCustCompl.Recordset!Cliente
            .Columns(6).DataField = AdodcCustCompl.Recordset!Progetto
            .Columns(7).DataField = 
TextToDate(AdodcCustCompl.Recordset!DataCreazione)
            For i = 7 To .Columns.Count - 1
                .Columns(i).Visible = False
            Next i
        End With
*****************************************
Il mio problema l'ho risolto forzando le colonne nella Datagrig e rendendo 
false la proprietà visible delle colonne che non mi interessano(come si dice 
una sgamata); ma non mi soddisfa, sento che mi manca qualche passaggio o 
qualche proprietà che non conosco.
Ho googlato e cercato di estrapolare da vari esempi quello che mi serve, ma 
ho visto che alcuni usano passano i data tramite il datacontrol, altri il 
Recordset direttamente etc. Non ho notato un metodo prevalente rispetto ad 
altri per utilizzare questi oggetti...
Esiste secondo voi un modo corretto(se così si può definire) per utilizzare 
i datagrid?
Ciao e grazie a tutti per i consigli.
GIAN 

>
Ciao,
la soluzione che ti sto per proporre, potrebbe non piacerti ma in compenso 
ti toglierà molti grattacapi. In sostanza si tratta di creare,con le 
libreria ADO un DB locale e temporaneo, quindi, con questo, automatizzare il 
datadrid. A questo punto non dovrai fare altro che scrivere nel tuo DB 
locale ignorando praticamente il datagrid che gestirà da solo gli update, 
scroll, cancellazioni, edit, ecc. Al termine della sessione potrai 
cancellare / svuotare il tuo DB temporaneo.
Spero di esserti stato utile. Un saluto.