Newsgroup: it.comp.lang.visual-basic
Titolo: Problema con proprietà DataSource di un controllo ActiveX

Ciao a tutti.
Ho creato un controllo ActiveX consumatore di dati, quindi impostando la
proprietà DataBindingBehavior a 1 - VbSimpleBound.
Compilo l'ocx, lo includo in un progetto di prova e tutto funziona
correttamente.
Se invece di utilizzare l'ocx aggiungo il progetto originale al progetto di
prova quando imposto la proprietà:
SET MioControllo.DataSource=rs
mi appare l'errore "Errore di compilazione. Impossibile trovare il metodo o
il membro dei dati" come se la proprietà DataSource non esistesse.
Se nel sorgente scrivo "MioControllo." mi appare tra la lista delle
proprietà anche DataSource.
Qualcuno mi può aiutare?
Grazie
Skysurfer

 proprietą anche DataSource.
La Property DataSource č Set o Let?
Ciao
Alberto


Non imposto io la proprietà DataSource nell'OCX. Viene creata
automaticamente quando si imposta DataBindingBehavior a 1 - VbSimpleBound.
Il problema è che usando l'ocx funziona tutto mentre usando il progetto
dell'ocx, senza modificare una riga del codice client non funziona più!
Skysurfer

 automaticamente quando si imposta DataBindingBehavior a 1 - VbSimpleBound.
Ma nel codice dell'OCX la property DataSource c'è, immagino.
E' Set o Let?
E come parametri cosa contiene?
Alberto

 dell'ocx, senza modificare una riga del codice client non funziona più!
Qualche volta penso di fare la figura del "guastatore", sparando idee a caso
per nulla verificate....comunque, per quello che vale ti racconto una mia
esperienza simile.
L'unica volta che ho provato a costruire un ocx ho incontrato il tuo stesso
problema, all'epoca ho dato la colpa al fatto di aver utilizzato più volte
l'autocomposizione delle proprietà/metodi dell'ocx, e di aver cancellato le
linee commentate delle generazioni precedenti all'ultima (anche se c'era
scritto di non cancellarle...)
Non so se è applicabile al tuo caso.
Salutoni
Sergio

Grazie per le risposte.
Nel controllo ActiveX non esiste la proprietŕ datasource, o meglio esiste
quando lo usi ma non la puoi vedere nel controllo.
Io ho fatto una prova semplice semplice e il problema si ripresenta:
Ho creato un controllo ActiveX composto da un solo TextBox.
Ho modificato la proprietŕ DataBindingBehavior a 1 - VbSimpleBound..
Ho creato la proprietŕ testo in questo modo:
Public Property Let Testo(ByVal New_Testo As String)
    Text1.Text = New_Testo
    PropertyChanged "Testo"
End Property
Public Property Get Testo() As String
    Testo = Text1.Text
End Property
Private Sub Text1_Change()
    PropertyChanged "Testo"
End Sub
Dal menů Strumenti - Attributi routine ho impostato per la proprietŕ Testo
(l'unica proprietŕ disponibile) le seguenti opzioni:
Proprietŕ associata ai dati, Proprietŕ associata a DataField, Chiamata di
CanPropertyChange prima della modifica, Aggiorna immediatamente.
A questo punto creo l'OCX.
Creo un nuovo progetto di tipo Standard Exe, aggiungo nei componenti l'ocx
che ho appena creato, lo piazzo sul form lo chiamo UC1 e scrivo questo
codice:
Option Explicit
Dim rs As New ADODB.Recordset
Private Sub Command1_Click()
    rs.MoveNext
End Sub
Private Sub Form_Load()
    rs.Open "SELECT Contatto FROM Clienti", _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Programmi\Microsoft
Office97\Office\Esempi\Northwind.mdb", _
    adOpenKeyset, adLockOptimistic, adCmdText
    rs.MoveFirst
    uc1.DataField = "Contatto"
    Set uc1.DataSource = rs
End Sub
Tutto funziona correttamente. Nel mio controllo viene visualizzato il campo
Contatto dela tabella Clienti e cliccando su Command1 scorro il recordset e
i dati cambiano. Tutto perfetto!
A questo punto tolgo il controllo dal form, aggiungo il progetto del
controllo ActiveX, rimetto il controllo nel form e mi compare il maledetto
errore:
nella riga Set uc1.DataSource = rs
Errore di compilazione. Impossibile trovare il metodo o il membro dei dati.
Ma perchč?!?
Grazie.
Skysurfer