Newsgroup: it.comp.appl.access
Titolo: istanziare una classe

Buongiorno a tutti. Ho da poco iniziato a creare le classi ed ho un dubbio,
diciamo così, accademico.
Ho scritto il codice all'interno di un modulo di classe che ho poi salvato
all'interno di un file
.mda (ho anche provato con .mdb e .mde, ma i risultati non sono cambiati).
Ne db principale, ho impostato il riferimento al file .mda ed ho compilato.
Il problema è questo: nel codice del db principale ho la dichiarazione della
variabile
     Public Dim conn as cConn (cConn è il nome della classe, of course)
poi tento di istanziare la classe con
     Set conn = New cConn
e a quasto punto il compilatore mi da errore, dicendomi 'Utilizzo non valido
della parola chiave New'. Da notare che se io invece scrivo la riga SENZA la
parola New, cioè
    Set conn = cConn
il compilatore non segnala nulla ed il codice in esecuzione funziona. Ho
provato a fare istanze multiple (Set conn2 = cConn, Set conn3 = cConn, ecc)
e non ho nessun problema. Ho esportato il codice della classe nel file .cls
ed ho modificato le prime righe, per cui ora sono diventate:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1 'True
END
Attribute VB_Name = "cConn"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = true
Attribute VB_Exposed = True
purtroppo è stato tutto inutile. Ho già ampliato le mie conoscenze facendo
ricerche su questo NG (a proposito, grazie di esistere!), ma vorrei capire
come mai non accetta la parola New, come se la classe potesse avere una sola
istanza. Devo avere qualche lacuna nella teoria delle classi, ma non riesco
a trovare nulla in giro per riempirla....
Grazie
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

[CUT]
Ciao Zio Pino,
purtroppo lo specialista (Alessandro Baraldi) x adesso č fuori sede...come 
suo segretario ti consiglio di iniziare da qui -> 
http://www.itportal.it/developer/algoritmi/access_vba/default.asp
 ...poi ne 
se riparla! ;-) 

[CUT]
ed ovviamente..."Zio Pino"...trovandoti da quelle parti puoi dare 1 occhiata 
a quest'articolo 
http://www.itportal.it/developer/vb/leclassi/
 ...buon 
lavoro :-) 

a proposito, grazie di esistere
questa mi č piaciuta -> mi ricorda la fine della canzone "Piů sů" di Renato 
Zero ;-) 

[CUT]
Cmq battutaccie a parte su internet c'è parecchio materiale su cui 
lavorare...è un concetto che richiede un pò di applicazione se lo devi 
capire bene! :-) 

 Inviato via 
http://arianna.libero.it/usenet/
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

[CUT]
Mi ripassi il link di quella famosa cornice? Sai ogni tanto mi piace 
"ricordarmela"... ;-) 

 Zero ;-)
ma non diceva: "non dimenticatemi, eh?"
grazie di esistere era il Ramazzotti del '96-'97 circa...
il primo link che mi haio segnalato lo conoscevo già (trovato su un
vecchio post), il secondo lo sto leggendo, speriamo in bene....

grazie di esistere era il Ramazzotti del '96-'97 circa...
lo vedi che quando vuoi diventi "pericoloso" ? M'immagino cosa farai con le 
classi...secondo me mi rimpiazzerai come "segretario" di @Alex! ;-) 

spiacente, non va.
ma poi è la stessa cosa che
dim conn as cConn
set conn= new cConn
solo che il codice viene eseguito più lentamente

[CUT]
pardon -> volevo dire "camicia"...quella che conosciamo bene...a 
qudretti...quella firmata insomma! ;-) 

 solo che il codice viene eseguito piů lentamente
Vedi se puň esserti d'aiuto:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/modcore/html/deovrcreatingnewinstanceofclass.asp
--
rgrds
SC
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


http://www.accessgroup.it/PicNicInYourLife.jpg



Allora i prob è altrove


 Grazie
Premetto che non uso MDA, pertanto non saprei se potrebbe
essere la causa di tutto.
Uso però spesso questa tecnica con MDE.
Le proprietà da te cambiate vanno bene, ma sembra corretto
anche il modo d'istanziare la classe.
Dichiarata Public immagino sia posizionata in un Modulo
quindi Public cn as New NomeClasse è OK, il Set dell'istanza
va fatto all'interno di una Funzione.
Se invece fai tutto in una funzione non ha senso dichiararla
public....!
In ogni caso per vedere se il riferimento al file MDA espone
i metodi  e le proprietà della classe, vai nel Visualizzatore
Oggetti, seleziona il File.MDA, a questo punto dovresti
avere a Siniztra in basso l'elenco delle Classi e dei Moduli
e Form, Seleziona la Classe, ed a Destra devono apparire i
Metodi e le Proprietà della Classe.
Se ciò non avviene significa che il problema è nella Referenza.
Ciao
@Alex 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Public dim conn as cConn    è in un modulo standard
 set conn= cConn       è in varie sub all'interno di un mdulo di form,
la variabile conn viene usata altresì all'interno di vari moduli
                                  standard, per questo è public
dal visualizzatore oggetto riesco e vedere metodi e proprietà, ma
partendo da un link che ha postato SV, ho trovato questo
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vb98/html/vbproCreatable.asp
dove ho trovato le varie impostazioni della proprietà Istancing,
presente come unica proprietà nella classe (sto parlando delle
proprietà editabili all'interno dell'IDE di Access). Tale proprietà
presenta solo 2 valori in VBA: 1 e 2, e dal sito si legge:
2	PublicNotCreatable. Other applications can use objects of this class
only if your component creates the objects first. Other applications
cannot use the CreateObject function or the New operator to create
objects from the class.
che (se traduco bene) impedisce la creazione di oggetti dalla classe
con la parola New. in pratica con Set conn= cConn si fa riferimento
alla classe, e non ad un oggetto creato da essa. Tuttavia non capisco
"...only if your component creates the objects first". Che vuol dire?
che devo creare un oggetto all'interno della classe e poi fare una Set
dal codice chiamante?

 presenta solo 2 valori in VBA: 1 e 2, e dal sito si legge:
[CUT]
Ti assicuro che con MDE io istanzio con NEW e funziona tutto
bene.


bene.
    Non metto in dubbio le tue parole, ma questo mi riporta al problema
di partenza (che poi non è un problema: il codice funziona comunque,
dunque potrei anche fregarmene), riproverò con gli MDE generati dagli
MDB (lascio perdere gli MDA).
Può dipendere dalla versione (A03)? So che è una domanda banale, ma a
quest'ora non  mi viene in mente null'altro...

 quest'ora non  mi viene in mente null'altro...
Sinceramente io mi sono fermato ad A_XP pertanto non mi meraviglio
se la versione successiva può introdurre altri problemi, ma
mi pare strano.
