Newsgroup: it.comp.lang.visual-basic
Titolo: User Control e Recordset ...aiutatemi un po please!

Bah li odio sti cosi!
io ho fatto così
Un userControl con un textBox
implemento 2 proprietà
DataRecordset
DataField
(non mi dite di usare bindings etc etc ...faccio così a manina tutto! :-D )
implementata così (data recordset solo impostabile ...non mi frega sapere
cosa ritorna...Datafield invece è R/W)
Private mRs As New ADODB.Recordset
Private mDataField As String
Private Sub UserControl_InitProperties()
 'Inizializza le proprietà di UserControl.
....robaccia varia.....
    Set mRs = Nothing
End Sub
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    PropBag.ReadProperty "DataRecordset", mRs
    PropBag.ReadProperty "DataField", mDataField
  ....robaccia varia.....
End Sub
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
   ' Call PropBag.WriteProperty("DataRecordset", mRs, Nothing)
    Call PropBag.WriteProperty("DataField", mDataField, "")
   ...robaccia varia
End Sub
Public Property Set DataRecordset(Dset As Object)
If (IsMissing(Dset)) Or (Dset Is Nothing) Then
    RaiseEvent NessunRecordset
Else
    Set mRs = Dset
    mRs.MoveFirst 'per test
   (....
    roba non influente
    ....)
 PropertyChanged "DataRecordset"
End If
End Property
Public Property Get DataField() As String
    DataField = mDataField
End Property
Public Property Let DataField(NomeCampo As String)
    PropertyChanged "DataField"
    '=================
    If (mRs Is Nothing) Then RaiseEvent NessunRecordset: Exit Property
    If (mRs.State = adStateClosed) Then RaiseEvent
DataRecordsetNonImpostato: Exit Property
    If Not (mRs.BOF And mRs.EOF) Then
    (...
    Altra roba
    ...)
    End If
End Property
Tutto va ok....ma...non proprio come vorrei IO!
mi spiego se lo uso così
in un form lo trascino e lo chiamo Wtest ci metto un listbox per tenet
traccia degli eventi...
poi ci attacco:
Private Sub Wtest_DataRecordsetNonImpostato()
List1.AddItem "ERRORE:  recordset non impostato"
End Sub
Private Sub Wtest_NessunRecordset()
List1.AddItem ">> Nessun RECORDSET <<"
End Sub
Ed ecco il tutto......
Private Sub Command2_Click()
Wtest.DataField = "Cognome"
End Sub
mi aspetterei che scatenasse NessunRecordset....
invece scatena DataRecordsetNonImpostato!!! :-o
Ossia la mia assegnazione in InitProperties
Set mRs = Nothing
ed il relativo check in DataField
If (mRs Is Nothing) Then RaiseEvent NessunRecordset: Exit Property
Fallisce...per lui non è Nothing!!!
Perchè?
Ho provato anche a settare
Call PropBag.WriteProperty("DataRecordset", mRs, Nothing)
ma non sortisce effetto....
io vorrei che :
se lasci bianco
DataRecordset...ossia....
se non fai la sequenza corretta
Set Wtest.DataRecordset = myRS
Wtest.DataField = "Nome"
ma solo:
Wtest.DataField = "Nome"
si deve scatenare NessunRecordset....
sgrat sgrat....sarà il caldo ma mi perdo da qualche parte.....mi sapete dire
dove?!
Grazie!
--
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
Quotefix e altro: 
http://www.martek.it/go.asp?portamia=4
Usr: ICLVB Pw: amici

 Grazie!
Alessandro
-- 
Morfeus®
Free Joint
 :PII


Il caldo....(fammi dare una scusa vah!...in realtà non ci avevo proprio
pensato!!!)!
 vero!
Ok grazie! funziona!
ti sfrutto allora
prima di provare
set Rs=new adodb.recordset
cosa vale?
Null Empty Nothing(questo abbiam visto di no) Valore indefinito???



A quanto ne sò riferito ad oggetti
Set Obj=nothing
ti fà perdere tutti i *riferimenti* alla variabile ergo
*penso* che non vale quindi l'ultima che hai detto
scrivendo correttamente New in *sintassi abbreviata*
"crei"(istanzi chiamala come vuoi) l'oggetto
mentre senza lavori ancora con un *non oggetto*
almeno credo di ricordare correttamente così
ciao



Quindi il test potrebbe essere IsObject
?!
il problema però è buffo...
se spulci vedi che prima lo istanzio
Dim mrs as new adodb.recordset
poi nella InitProperties
set mrs=nothing
dovrebbe renderlo un "non oggetto"
però quello che mi sembrerebbe logico....nothing...non lo è!
E' un non oggetto ma NON Nothing!
chè infatti per lui Is Nothing è FALSO
però.....boh
ora provo IsObject
stay tuned!


 ora provo IsObject
mmmmhh secondo me nisba o meglio uguale nel comportamento di prima
fai questa prova e speriamo che
Object è il riferimento a Adodb.Recordset
esempio funzionante
<Visibilità>
Dim Obj as Object
set Obj=new Object
set Obj=nothing
if Obj is nothing then
</visibilità>
esempio non funzionante
<Visibilità>
Dim Obj as new Object
set Obj=nothing
if Obj is nothing then
</visibilità>


Wodka40° wrote:
ragionando anche in chat
c'č il fatto dell'istanziazione automatica
se fai
if mrs is nothing
in pratica lo riallochi!....
:)
--
Il Wodkino Nazionale č a : 
www.martek.it


 :)
Capito
if mrs is nothing then ->Call
dim mrs as new adodb.recordset
posso venire anch'io in chat?
come devo fare?
ciao
Alessandro
-- 
MorfeusŽ
Free Joint
 :PII

 Alessandro
setta il Mirc o equivalente con
server: 
irc.azzurra.org
porte: 6664-6666,6667,6999-7002
chan: #it_lang_vb
--
Il Wodkino Nazionale è a : 
www.martek.it
