Newsgroup: it.comp.lang.visual-basic
Titolo: [VB 2008] Creare un oggetto accessibile da più form

Ciao a tutti,
ancora una domanda.
Ho un progetto che utilizza Form1 e Form2. Io mi sono creato una piccola 
classe di supporto )che nello specifico mi serve per recuperare dati da 
db) e da questa vorrei creare un unico oggetto utilizzabile sia in Form1 
che in Form2
come si fa?
grazie, ciao
Mauro

 che in Form2
Che cosa intendi esattamente con "un unico oggetto utilizzabile da x e
y"?
Che non vuoi dichiarare due istanze di classe? o cos'altro?
Vedi comunque l'altra risposta nel thread del ListBox, perchè ho il
sospetto che tu stia usando un approccio non proprio ideale per questa
classe.

 Che non vuoi dichiarare due istanze di classe? o cos'altro?
Esatto non vorrei fare dim db as new db_uty("connessione") sia nella 
form1 che nella form2.
Ho trovato che posso fare
Public db As New db_uty_odbc("dsn")
nella form1, e poi nella form2 lo richiamo con
Form1.db.query_to_listbox()
questo mi serve per non dover aprire n connessioni al db una per ogni 
form che mi serve nel progetto.
ciao
Mauro

 form che mi serve nel progetto.
A parte il fatto che lavorare in maniera disconnessa sarebbe
preferibile, quello che ti serve lo ottieni in maniera molto più
pulita dichiarando la variabile DB si Public, ma al di fuori delle due
form, per esempio in un modulo pubblico.

 preferibile,
mi studio anche questa, grazie!
ciao
Mauro


Se hai queste "basi" di progetto....butta via dotNet e usa il vecchio
VB6: fatica inutile per far funzionare un coso "nuovo" come uno
"vecchio".
Con dotNet dovresti lavorare disconnesso...perchè i vantaggi sono
SUPERIORI agli svantaggi. Sono RARI i casi in cui ti conviene lavorare
SEMPRE CONNESSO ed infatti dotnet te lo rende disagevole farlo!
Il ciclo è sempre quello
Apro connessione... chiedo qualcosa... ottengo risposta ....
(ringrazio) chiudo....elaboro i dati ricevuti localmente (speso si
tratta SOLO di mostrarli!!).
Il public il private il friend?
in dot net hai il concetto di ASSEMBLY (lontanamente paragonabile alle
dll) ...puoi avere una variabile che è condivisa :
1) SOLO per quell'assembly
2) SOLO per la tua applicazione
3) per TUTTI gli assembly anche di altre applicazioni
parlo di variabili? concetto vecchio....puoi aver condiviso classi,
funzioni, sub, variabili
Leggi qui
http://www.visual-basic.it/articoli/scNetClass1.htm
Utilizzi possibili:
ad esempio
Fatti una classe di utilità
e dentro un metodo  EseguoSQL(testoSQL as string, NomeTab as string)
as datatable
Il metodo accetta l'sql da eseguire e il nome della tablla LOCALE da
creare
al suo interno che fa?
Recupera la connection string che hai salvato nelle risorse (è sempre
uguale per tutta l'app no???)...si collega al db...costruisce il
comando e lo invia...elabora la risposta creando una
datatable...chiude tutto e ti restituisce la datatable
.....datatable pronta per essere visualizzata dove vuoi!
Lascio a te il compito di fare sta classe Shared o meno....è lo step
successivo!
ATTENTO:E' una idea....funziona  con SELECT....delete insert e update
deve essere un attimo migliorata...!
Ma non possiamo fare noi la tua applicazione.........o no????

 Fatti una classe di utilit�
E' proprio quello che sto cercando di fare. Sto facendo un applicativo 
che dovr� gestire molte tabelle "molto" interconnesse tra loro.
La prima cosa con cui mi sono scontrato era di trovare un metodo veloce 
per popolare le listbox o le datagrid con il risultato di una query.
E appunto mi sono fatto una classe db_uty che nel costruttore vuole la 
connessione al db e poi espone metodi tipo
query_to_datagrid(dg as datagrid, sql as string)
query_to_listbox(lb as listbox, sql as string)
e di questa classe ho fatto una dll che importo nel progetto. Poi mi 
sono accorto che questo oggetto db_uty mi serve in tutte le form del 
progetto e quindi ho chiesto come fare per "condividerlo" in modo da 
fare la connessione al db una volta sola.
Ma da quello che mi dite tu e Luca D mi pare di capire che sto 
sbagliando approccio.
In effetti mi rifaccio un po' a quello che avrei fatto con una 
collezione di funzioni anzich� con oggetti ....
ciao
Mauro

 collezione di funzioni anzich� con oggetti ....
Non ho ben capito, se intendi "generalizzare" il componente es. ho una
griglia_scadenze che moster� in diversi form, allora io farei uno
usercontrol, se invece pensi di fare una routine generica che ti popola una
griglia da un datatable, allora alla fine � un metodo normale con parametri
Public Sub PopolaDataGridView (dgv as datagridview, dt as datatable)
Questo come se fossimo in VB6, non escludo ci siano metodi pi� fini in
.NET.