Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [.net]aiuto con moduli

  1. #1

    [.net]aiuto con moduli

    Salve ragazzi, mi spiegate a cosa servono i modulo perfavore?

    vi spiego:

    ho fatto il mio programmino, esiste un form nel quale devo inserire i dati per diciamo aggiungere un record al mio DB,

    ho un manuale (viasual basic.net giuda completa dell'apogeo), dove vedo che per la connessione si crea un modulo, con la connection string al db, e la connessione ADO, ho messo il tutto sotto una PUBLIC così riesco ad accede da ogni parte.

    ma ora come faccio ad usare la mia connessione dal form (quello con la scheda dove si inserisco i dati)?

    vi riporo il codiche che ho usato nel modulo:


    Module connessione
    Public Const connessione as String="stringa di connessione"
    Sub Main()
    Dim conn as New System.Data.OleDB.OledbConnection(connessione)
    try
    conn.Open()
    catch myException as System.Exception
    Console.WriteLine(myException.Message)
    end try
    end sub
    end module


    ecco fatto, cmq le mie intenzioni sarebbero queste:

    (in asp funziona così) dichiaro la connection string nel global come variabile di Applicazione e me la richiamo da qualsiasi pagina tramite la sintassi Application(nomevar), è possibile fare questo con visual basic?

    Grazie a tutti, e scusate per le domande ma sono ai primi passi di Visual basic.

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    dunque, se hai bisogno di leggere i varoli di alcune variabili o costanti da tutto il progetto, potresti crearti un modulo e dichiarare tali costanti/variabili come SHARED.
    in questo modo ottieni una Classe che non necessita di chiamata al costruttore NEW.

    per visualizzare il valore della variabile puoi chiamare:

    NomeProgetto.NomeModulo.VariabileShared
    (per semplificare puoi fare una IMPORTS NomeProgetto.NomeModulo all'inizio così ti trovi direttamente i valori delle variabili facendo Me.VariabileShared)

    altrimenti avresti dovuto fare:
    codice:
    Dim MioObj as New NomeProgetto.NomeModulo
    MioObj.VariabileShared
    NB:
    Solitamente, per quanto riguarda l'accesso ai dati, si lavora creand odei moduli detti BUSINESS che gestiscono appunto il collegamento tra le intefacce utenti (GUI) e le intefacce con i provider dei dati.

    Ti crei una classe che contenga dei metodi tipo Connetti Leggi Scrivi etc etc...uno per ogni azione che devi fare sul database e poi la utilizzi ogni volta che ti serve dimansionandola nel progetto di interfaccia che deve usare i dati.
    Se vuoi che questi metodi facciano delle operazioni sul db e basta allora usi delle SUB, se invece vuoi che ti restituiscano un oggetto qualsiasi per lavorare nella tua interfaccia (tipo stringhe, dati letti, dataset etc etc) allora usa delle FUNCTION

    se hai dubbi dimmi pure

  3. #3

    quindi

    vediamo se ho capito,

    mi conviene creare un modulo, con tutte le sub o funzioni (in base se devo solo leggere, scrivere o modificare o ancora eliminare), tipo se dovrò leggere e i rtisultati delle query devono popolarmi a livello grafico tipo un menù o altro, uso funioni, diversamente se devo scrivere e basta sul db posso usare tranquillamente delle Sub.


    per richiamarle ho diversi metodi, ma quello più convieniente da quello che ho capito è quello di chiamarle in questo modo

    nomeprogetto.nomemodulo.nomesub

    giusto?

  4. #4

    scusami

    volevo dire la soluzione più giusta sarebbe quella di importare il modulo nel form allora?

  5. #5
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212

    Re: quindi

    Originariamente inviato da scmatteo
    vediamo se ho capito,

    mi conviene creare un modulo, con tutte le sub o funzioni (in base se devo solo leggere, scrivere o modificare o ancora eliminare), tipo se dovrò leggere e i rtisultati delle query devono popolarmi a livello grafico tipo un menù o altro, uso funioni, diversamente se devo scrivere e basta sul db posso usare tranquillamente delle Sub.


    per richiamarle ho diversi metodi, ma quello più convieniente da quello che ho capito è quello di chiamarle in questo modo

    nomeprogetto.nomemodulo.nomesub

    giusto?
    diciamo di si...

    se mi dai un pò di tempo ti posto un pò di codice di esempio

  6. #6

    si certo

    ti ringrazio moltodark

  7. #7
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Nota che questo è un codice scritto tanto per farti capire il funzionamento delle classi e come è possibile far dialogare tra loro più "componenti" di una soluzione

    Per testare questo codice dovresti:

    -) crearti una soluzione WindowsForm e chiamarla MySolution

    -) modificare il nome del progetto che ti genera in automatico in MyProg

    -) aggiungere alla soluzione un altro progetto di tipo Libreria di classi e chiamarlo MyBiz

    -) eliminare da MyBiz la classe Class1 ed aggiungere un nuovo elemento di tipo Classe Component e chiamarla UseDb

    Per la gestione dei dati ho usato un dataset tipizzato e mi sono creato un SQLDataAdapter ed una SQLConnection in automatico, sfruttando le potenzialità dell'IDE di vb.net. In pratica a sx (dove trovi la barra dei controlli, textbox, button, etc etc) c'è una finestra chiamata Esplora Server. Se ti crei una connessione al tuo database da li puoi crearti un SQLDataAdapter semplicemente trascinando la tabella che ti interessa sul form o componente che dovrà usarlo.

    Torniamo all'esempio:

    CREARE IL MODULO BUSINESS
    seleziona il progetto MyBiz e visualizza UseDb in modalità progettazione.
    Adesso seleziona la tabella presente nella finestra Esplora Server e trascinala nella finestra di UseDb.
    l'IDE ti genererà in automatico una SQLConnection1 ed un SQLDataAdapter1. Rinominali come sqlMyConnection e sqlMyDataAdapter.
    Successivamente seleziona il sqlMyDataAdapter e con un click di dx del mouse scegli Genera Dataset.
    Il nome del nuovo dataset deve essere dsMyDataset. E' importante lasciare deselezionata la casella di spunta che trovi in basso e che dice "Aggiungi il dataset alla finestra di progettazione", questo perchè il tuo dataset dovrà trovarsi nel progetto di interfaccia e non nel modulo business.
    Adesso dentro il modulo UseDb puoi inserire il seguente codice:
    codice:
        Public Sub WriteDB(ByVal MioDataset As MyBiz.dsMyDataset)
            'ti crei un dataset che contenga i dati modificati
            Dim dsChanges As dsMyDataset = MioDataset.GetChanges
    
            If dsChanges Is Nothing Then
                'se non sono state apportate modifiche esci
                Exit Sub
            Else
                'altrimenti scrivi le modifiche sul db
                Me.sqlMyDataAdapter.Update(dsChanges)
            End If
        End Sub
    
        Public Sub ReadDB(ByVal MioDataset As MyBiz.dsMyDataset)
            Me.sqlMyDataAdapter.Fill(MioDataset.Articoli)
        End Sub
    Rigenera la soluzione per rendere disponibili al progetto di interfaccia le modifiche apportate.


    CREARE IL PROGETTO DI INTERFACCIA

    Seleziona le References del progetto MyProg e con un click di dx del mouse scegli Aggiungi Riferimento. Seleziona la Tab Progetti ed aggiungi il riferimento al tuo modulo business.

    Adesso puoi inserire un Dataset in MyProg, vai nella finestra Casella Degli Strumenti (quella delle textbox, pulsanti etc etc) e seleziona il menu Dati
    Aggiungi un dataset e scegli Dataset Tipizzato, avendo cura di selezionare dalla combo la voce Dataset con riferimenti.
    Adesso lui cercherà fra i references del progetto e troverà il dataset MyBiz.dsMyDataset.
    Clicca su ok e modifica il nome del dataset creato in dsDatasetInterfaccia
    adesso usa questo esempio di codice nel progetto MyProg:
    codice:
        Private Sub LeggiDati()
            'crea un oggetto Business facendo una istanza del tu modulo MyBiz
            Dim myBizInterfaccia As New MyBiz.UseDb()
            'usa la proprietà per leggere il db
            myBizInterfaccia.ReadDB(Me.dsDatasetInterfaccia)
        End Sub
    
        Private Sub ScriviDati()
            'crea un oggetto Business facendo una istanza del tu modulo MyBiz
            Dim myBizInterfaccia As New MyBiz.UseDb()
            'usa la proprietà per scrivere nel db
            myBizInterfaccia.WriteDB(Me.dsDatasetInterfaccia)
        End Sub

    CONCLUSIONI
    Con la lettura ti trovi i dati nel dataset del progetto di interfaccia che conterrà una copia locale dei dati presenti sul tuo database. In questo modo puoi lavorare disconnesso dal database e fare tutte le modifiche che vuoi. Appena finisci, passi il dataset che hai usato al tuo modulo business usando il metodo di scrittura.

    Se non ti è chiara qualcosa dimmi pure

  8. #8

    ti ringrazio

    molto.

    adesso proverò grazie mille ancora.

  9. #9

    ciao dark

    ho un problema, allora sono riuscito a fare tutto quello che mi hai spiegato con successo....


    oira che nel mio windows form ho il mio dataset tipizzato alla classe MyBiz.UseDB, mi creo un menù a tendina, al quale associo come DATASOURCE il nome del mio dataset, come DATAMEMBER il nome della olonna che voglio usare.



    però quando faccio play non mi visualizza niente, non vedo i record del db..

    inoltre, posso cmq fare delle mie SELECT in sql?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.