Perdonate la mia ignoranza. Ero abituato ad inserire le mie variabili globali (quelle visibili per tutta l'applicazione) in un Module posto nella directory App_Code
E cosi' ho fatto.

Ora le mie variabile sono definite come PUBLIC Nome_Variabile as string o integer etc.

Peccato che nelle form che creo non le veda. L'errore mi dice che non le vede perché sono definite public.

Ho provato a spostare il Module in altre directory senza risultato

Ho provato con DIM e mi dice che non le vede perché sono definite Private.

A questo punto ho le idee un po' (molto) confuse

Grazie per qualsiasi aiuto

Alberto
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Alberto,


L'errore mi dice che non le vede perché sono definite public.

Posta il testo dell'errore preciso. Probabilmente il problema non è il public, ma il fatto che non sono Shared. Vorrei comunque vedere il testo dell'errore per esserne sicuro.

Avere una variabile globale in un'applicazione web è una tecnica sconsigliabile perché l'applicazione viene fruita contemporaneamente da vari utenti e c'è il serio rischio che mentre un utente la scrive, l'altro la legge in uno stato inconsistente. Allora bisogna gestire l'accesso esclusivo alla risorsa, ma anche questo si tende a limitare per evitare colli di bottiglia.

Spiega perché hai bisogno di usare variabili globali, e se queste sono in sola lettura o anche in scrittura.

ciao,
Moreno
Modificato da BrightSoul il 01 settembre 2019 14:09 -

Enjoy learning and just keep making
Grazie per la risposta. Appena torno a casa mando quanto richiesto. comunque il problema della variabile per utente non si pone in quanto l'applicazione verra' vissa da un solo utente.

Saro' vis tutta la settimana

Alberto
Purtroppo la breve vacanza e' finita e sono nuovamente qui a chiedere il vostro aiuto.

Come promesso ecco il modulo che ho inserito nella directory APP_CODE

Module Module1

'Data Tables

Public dtProvince As Data.DataTable
Public dtClienti As Data.DataTable
Public dtAppuntamenti As Data.DataTable
Public dtCognomi As Data.DataTable
Public dtNomi As Data.DataTable
Public dtAgenti As Data.DataTable
Public dtTelefonate As Data.DataTable
Public dtxStampa As Data.DataTable
Public dtSocieta As Data.DataTable
Public dtErrori As Data.DataTable


'Variabili comuni

Public sw As Integer
Public wIdProvincia As Integer
Public wIdSocieta As Integer
Public wtxtRagioneSociale As String
Public wIdPar1 As Integer
Public wIdPar2 As Integer
Public wtxtPar1 As String
Public wtxtPar2 As String
Public wtxtSesso As String
Public wImportoSiNo As String
Public wWP As Integer


Public PrimaVolta As Integer
Public wData As String
Public wMM As String
Public wGG As String
Public wAA As String

Public uno As Integer
Public TipoStampa As Integer




'Routine Comuni


End Module


Come gia' detto non c'e' il problema di condividere le variabili con piu' utenti in quanto l'utente e' uno solo.

Alberto
Ho dimenticato, le variabili vengono scritte da una form e possono essere lette in una o piu' altre form.

Alberto
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Alberto, prova semplicemente ad aggiungere il modificatore Public al tuo modulo.
Cioè, cambia questa riga da così:
Module Module1


A così:
Public Module Module1


Ho verificato che in questo modo funziona. Ti elenco tutti i passi che ho compiuto io:
  • Creato una nuova cartella vuota;
  • Aperto Visual Studio e cliccato il menu File > Apri > Sito web e ho selezionato la cartella appena creata
  • Dal riquadro Esplora Soluzioni di Visual Studio, ho fatto tasto destro sul progetto e cliccato Aggiungi -> Aggiungi Cartella ASP.NET -> App_Code
  • Aggiunto in App_Code un nuovo file chiamato Module1.vb con questo contenuto:
    Imports Microsoft.VisualBasic
    
    Public Module Module1
    
        'Data Tables
    
        Public dtProvince As Data.DataTable
        Public dtClienti As Data.DataTable
        '...
    End Module
    
  • Fatto di nuovo tasto destro sul progetto e cliccato Aggiungi -> Web Form -> Default
  • Aperto il file Default.aspx.vb e ho creato al suo interno la seguente Sub, da cui accedo alle variabili contenute in Module1.
    Private Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
       'Qui accedo correttamente alle variabili contenute in Module1
       Dim dt = Module1.dtProvince
    End Sub
    


ciao,
Moreno
Modificato da BrightSoul il 10 settembre 2019 20:37 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.