Newsgroup: it.comp.lang.visual-basic
Titolo: [?] DLL e Datagrid (un po' lungo)

Ciao a tutti
Ho creato una DLL banale per estrarre un Recordset da una tabella di
un DB Access che espone 1 prorietà (Recordset) e 1 metodo (ConnDb).
Ovviamente adesso vorrei associare da codice i dati estratti ad un Datagrid.
Mi sono preoccupato di crearmi le colonne in funzione del Recordset ma
non riesco ad associare i dati alla Datagrid
Dim DBase As New AccessRead.ReadMsacc ' mia DLL
[CUT]
Function SetDataGrid()
   ' Controllo quante colonne sono presenti nella griglia se
     sono < del Recordset aggiungo altrimenti elimino.
    Dim c As Column
    Select Case DataGrid1.Columns.Count
        Case Is < DBase.Recordset.Fields.Count
            For I = DataGrid1.Columns.Count To DBase.Recordset.Fields.Count
                DataGrid1.Columns.Add (DataGrid1.Columns.Count)
                I = DataGrid1.Columns.Count
            Next
        Case Is > DBase.Recordset.Fields.Count
            For I = DataGrid1.Columns.Count To DBase.Recordset.Fields.Count
Step -1
                DataGrid1.Columns.Remove (DataGrid1.Columns.Count - 1)
                I = DataGrid1.Columns.Count
            Next
    End Select
    ' Imposto le colonne
    For I = 0 To DataGrid1.Columns.Count - 1
        Set c = DataGrid1.Columns(I)
        With c
            .Visible = True
            .Width = 1000
            .Caption = DBase.Recordset.Fields(I).Name
            .DataField = DBase.Recordset.Fields(I).Name
            .Alignment = dbgRight
        End With
    Next
    ' Popolo il Datagrid
   1°  Datagrid1.Datasource = DBase    <- Impossibile trovare il metodo
                                                            o il membro dei
dati
   2°  Datagrid1.Datasource = DBase.Recordset    <- Idem come sopra
End Function
Come devo fare ?
Ho provato anche a prendere dato per dato dalla 1° riga del Recordset
(questo mi riesce !) ed associarlo alle caselle della Datagrid ma con il
risultato di ricevere il messaggio
di errore "Errore di Run-time '7005' Gruppo di righe non disponibile"
Dim m_RSVal As ADODB.Field
[CUT]
DataGrid1.AllowAddNew = True
DataGrid1.SelBookmarks.Add DataGrid1.RowBookmark(0)
DataGrid1.Row = 0
DataGrid1.Col = n
DataGrid1.Text = m_RSVal.Value
Grazie

    2°  Datagrid1.Datasource = DBase.Recordset    <- Idem come sopra
Copy&Paste da MSDN (dopo la pressione di F1):
Use the Set statement to set the DataSource property, as shown below:
Set DataGrid1.DataSource = Recordset1
Ciao
Alberto

 wrote in message
PoSo9.6975$%M1.1...@twister2.libero.it...

????
Il mio recorset arriva dalla DLL
JKLJKL

 Il mio recorset arriva dalla DLL
Set DataGrid1.DataSource = DBase.Recordset
Se non funziona prova a postare il codice della Property Get Recordset
Ciao
Alberto

 wrote in message
sQSo9.7679$RO.1...@twister1.libero.it...

Infatti la cosa strana è che i dati dal Recordset riesco ad estrarli (2°
parte del post)
comunque ecco il codice :
Private RS As ADODB.Recordset
Private CN As ADODB.Connection
Private Sub Class_GetDataMember(DataMember As String, Data As Object)
    Set Data = Recordset
End Sub
Property Get Recordset() As ADODB.Recordset
    If RS Is Nothing Then
        Err.Raise 1001, , "Nessun dato disponibile"
    Else
        Set Recordset = RS
    End If
End Property
[CUT Metodo "ConnDb" per lettura dati da tabella database]

 End Property
Siccome immagino che l'apertura del recordset, ecc.., avvenga correttamente,
altrimenti non riusciresti ad ottenere i dati come appunto riporti nel primo
post, l'unico problema che avevo visto era il mancato uso del Set per il
DataSource.
Ma se anche così non funziona, forse devi guardare qualche cosa relativa
alla Persistance o alla visibilità della DLL.
Altrimenti non saprei.
Ciao
Alberto

 ha scritto nel messaggio
news:5sTo9.7852$RO.1...@twister1.libero.it...

prova a guardare anche l'impostazione della proprietà DataSourceBehavior
--
bye BlackMagic
ICQ: 85485468

 JKLJKL
Scusate se mi intrometto: non ho capito se JKLJKL ha provato a scrivere
Set  Datagrid1.Datasource = DBase.Recordset
e se questa istruzione gli da comunque errore.....
Me lo puoi chiarire, per favore?
Salutoni
Sergio

 ha scritto nel messaggio
news:8MTo9.23644$Fz.6...@news1.tin.it...

Continuo qui il tread
Allora, il Set mi evita l'errore ma dati 'nisba',
il DataSourceBehavior è a 1.
Sono disposto anche a fare un loop per estrarre i singoli valori
(visto che riesco a leggerli) e metterli uno per uno nelle caselle
appropriate, ma non riesco ad aggiungere le righe necessarie
al recorset nella DataGrid e tantomeno a selezionare le singole caselle
Grazie
JKLJKL

 Allora, il Set mi evita l'errore ma dati 'nisba',
Ti pongo un quesito 'un filo' polemico:
Questa informazione non potevi darla prima?
Dopo averti consigliato di usare il Set, anzichč rispondere "?????", non
potevi dire qualcosa del tipo: "Mettendo il Set non mi appare piů l'errore,
perň non riesco ad avere i dati ecc....".
Perchč io ho continuato a postare considerando che tu avessi l'errore anche
mettendo il Set.
E qui chiudo il thread.
Alberto

 Allora, il Set mi evita l'errore ma dati 'nisba',
Posto ancora un suggerimento, anche se non ho mai provato a fare delle DLL
che restituiscono recordset, ma il comportamento che descrivi sembra quello
che si ottiene assegnando come origine dati di un DataGrid un recordset con
cursore lato server, non sarà lì il problema? (ripeto: potrei aver detto una
cazzata tremenda)
Salutoni
Sergio

 ha scritto nel messaggio
news:3da41948$1...@news.cis.it...

forse lo hai già fatto, ma se non lo hai fatto prova
a vedere il paragrafo "Creazione del progetto componente MyData"
nela capitolo "Creazione di una fonte dati" della guida in linea
forse li trovi la soluzione...
