Variabili globali

martedì 12 aprile 2005 - 11.43

wolf Profilo | Junior Member

ciao a tutti, premesso che sto costruendo le mie prime pagine apsx, vi espongo il problema.
In locale avevo costruito alcune pagine aspx che fanno riferimento ad un file "db_lib.vb", per le variabili generali e per le procedure sul databse, ed ad un file "menù1.ascx", per l'impostazione della pagina. Tutto funziona bene ma quando esporto le pagine sul web non mi riconosce le variabili e non mi imposta la pagine. Cosa posso fare?
grazie a tutti.

wolf Profilo | Junior Member

Si Coach, ho fatto l'uoload della cartella bin e continua a darmi l'errore: "BC30451: Name 'strSel' is not declared". Poi una curiosità, all'interno della cartella CGI-BIN del sito ho creato una cartella "prova" al cui interno ho copiato tutte la pagine aspx e la cartella BIN. E' corretto?

wolf Profilo | Junior Member

praticamente, se ho capito bene, le pagine con estensione aspx le posso inserire in una directory (da me creata) all'interno della radice principale, mentre la pagine con estensione aspx.vb e aspx.rsx le inserisco all'interno della cartella cgi-bin. Giusto?
Comunque ho risolto il problema dei fogli di stile ma continua il secondo problema.
Grazie ancora per l'aiuto.

wolf Profilo | Junior Member

OK Coach, nella root ho creato una directory e ho copiato tutte le pagine ma continua a non leggere le variabili dichiarate in md_lib.vb.
All'inizio delle pagine aspx ho inserito queste dichiarazioni:
<%@ Page Language="vb" Inherits="registro.anno" Src="anno.aspx.vb" EnableSessionState="true" smartNavigation="true" %>
<%@ Register TagPrefix="Menu1" TagName="Sfondo" src="menu1.ascx"%>
Ho tralasciato qualcosa?
Grazie ancora per l'aiuto.

Brainkiller Profilo | Guru

Ma stai lavorando con Visual Studio oppure con il notepad ?

ciao
david

wolf Profilo | Junior Member

con Visual Studio, perchè?

wolf Profilo | Junior Member

Chiedo scusa per l'insistenza ma sono un novello e mi sono ormai completamente scervellato.
Dunque, facciamo un riassunto della mia situazione. Ho creato le mie pagine aspx con visual studio.net 2003 usando il linguaggio vb.net. Tutte le web form eseguono le varie operazioni richiamando variabili di tipo public, funzioni e sub scritte in un modulo chiamato "db_lib.vb". Ho testato il tutto in locale sul mio computer e funziona. Tramite il programma Filezilla ho trasportato le mie pagine aspx, il modulo .vb e la cartella bin sul server in una cartella, da me creata, sul root principale. Se richiamo dal web una pagina qualsiasi mi da errore xkè non riconosce una delle tante variabili public dichiarate nel modulo. Ora la mia domanda è la seguente: le pagine aspx hanno un comportamento diverso se girano in locale o in rete? Se la risposta è no, cosa sbaglio?
Grazie per gli aiuti.

wolf Profilo | Junior Member

come ho scritto sotto, Coach: errore BC30451, variabile is not declered.

zuperbatman Profilo | Newbie

Comunque io ti consiglio di usare delle variabili di sessione tipo Session("Utente")......in quanto con il metodo da te usato se un secondo utente si collega al sito contemporaneamente rischia di riscrivere le variabili con valori diversi facendo un po di casino.......! Le variabili dichiarate in un modulo di devi usare solo per impostazioni di sistema, inoltre per farli funzionare su un'altro pc usa il setup di Visual Studio inserento tutti gli output di progetto ed gli eventuali moduli unione...! vedrai che dopo aver fatto l'installazione funziona tutto.

wolf Profilo | Junior Member

allora, vediamo un pò. Ho operato in questa maniera:
ho creato un modulo "db_lib.vb"
Module db_lib
public Conn AS SqlConnection
public strConn AS String
public DA AS SqlDataAdapter
public DT AS DataTable
public strSel AS String
...
Public Function ConnOpen()
...
Conn.ConnectionString = strConn
Conn.Open
...
End Function
Public Function InsertDato()
...
End Module

Poi ho creato la mia pagina "Anno.aspx.vb" (uguale ad altre 13 pagine)
Imports System
Imports System.Data
Imports System.Data.SqlClient

Public Class anno

Private Sub Page_Load(...) Handles MyBase.Load
If Not IsPostBack Then
Call RiempiDataGrid()
End If
End Sub

Function varDesc()
strSel = "SELECT * FROM anno ORDER BY anno"
strTab = "anno"
strKey = "idanno"
strCamp1 = "anno"
strForm = "anno.aspx"
strField1 = txt1.Text
DTnome = "DTanno"
End Function

Function RiempiDataGrid()
Call varDesc()
DS = New DataSet
DA = New SqlDataAdapter(strSel, Conn)
DT = New DataTable
Call ConnOpen()
DA.Fill(DS, DTnome)
Call ConnClose()
connSql.Close()
DT = DS.Tables(DTnome)
DG1.DataSource = DS.Tables(DTnome)
DG1.DataKeyField = strKey
DG1.DataBind()
End Function
...
End Class

Nella pagina "Anno.aspx" invece ho inserito
<%@ Page Language="vb" Inherits="registro.anno"
Codebehind="anno.aspx.vb" EnableSessionState="true"
smartNavigation="true" AutoEventWireup="false" %>
<%@ Register TagPrefix="Menu1" TagName="Sfondo" src="menu1.ascx"%>
<Html>
...
<Head>
...
</head>
<body>
<menu1:sfondo id="ctlSfondo" Runat="Server"></menu1:sfondo>
<Form>
...
</Form>
</body>
</html>


Ho progettato le pagine in questa maniera perchè ne sono 13 uguali in cui cambia solo la base dati, quindi variando solo il valore delle variabile nella function VarDesc, tutto il resto è un copia ed incolla. Sicuramente la forma non è il massimo ma per un novellino come va piuttosto bene.

wolf Profilo | Junior Member

grazie Coach, ho cambiato il modulo con una classe ma il risultato non cambia. Se la storia continua così saro costretto a copiare i dati in tutte le pagine. Che stress...

wolf Profilo | Junior Member

Ciao Coach, non vorrei abusare della tua sapienza ma provo lo stesso a farti una domanda.
Sai sto, con la santa pazienza, inserendo tutti i processi nelle singole pagine ma mi sta capitando una cosa strana:
se dichiaro una variabile (es una di tipo sqlconnection) prima di Private Sub Page_Load non me la usare nel corso della vita della pagina e, in più, non mi fa passare più le variabile da un sub ad un'altro della stessa pagina. In locale funziona tutto però.
Grazie 1000

wolf Profilo | Junior Member

Dico così perchè ho creato le pagine aspx con vs.net 2003 (compreso di solo vb.net xò) e pigiando F5 le pagine si avviano sul server locale (o almeno così credo).
Ora ho un'altro problema: la pagina contiene
- una textbox1, controllata da una RequiredFieldValidator e da una RegularExpressionValidator)
- un datagrid con una colonna di tipo template che in modalità normale contiene una label e in modalità modifica contiene una textbox2 + RequiredFieldValidator + RegularExpressionValidator.
Ora se in modalita modifica voglia aggiornare un valore della colonna templete devo inserire un obbligatoriamente un carattere nella textbox1 altrimenti non si avvia la procedura.
ti scrivo parte del codice:
<asp:textbox id="txt1" style="Z-INDEX: 103; LEFT: 208px; POSITION: absolute; TOP: 184px" runat="server" Width="312px" MaxLength="4" EnableViewState="False" mns="4" />
<asp:requiredfieldvalidator id="RFV1" style="Z-INDEX: 108; LEFT: 436px; POSITION: absolute; TOP: 208px" runat="server" ErrorMessage="inserisci dato" controlToValidate="txt1" />
<asp:regularexpressionvalidator id="REV1" style="Z-INDEX: 107; LEFT: 356px; POSITION: absolute; TOP: 208px" runat="server" Width="72px" ErrorMessage="dato errato" ControlToValidate="txt1" Display="Dynamic" ValidationExpression="\d{4}" / >
...
<asp:datagrid id="DG1" ...
<Columns>
...
<asp:TemplateColumn HeaderText="Anno">
<ItemTemplate><asp:Label ID="annllbl" Runat="server" Width="100%" Text='<%# container.dataitem("anno") %>' /></ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="annotxt" Runat="server" Width="100%" Text='<%# container.dataitem("anno") %>' />
<br>
<asp:RequiredFieldValidator id="RFV2" runat="server" ErrorMessage="Inserisci il dato" ControlToValidate="annotxt" Font-Size="smaller" />
<br>
<asp:RegularExpressionValidator id="REV2" runat="server" ErrorMessage="Dato errato" ValidationExpression="\d{4}" Display="Dynamic" ControlToValidate="annotxt" Font-Size="smaller" />
</EditItemTemplate>
</asp:TemplateColumn>

Private Sub DG1_Update(ByVal source As System.Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DG1.UpdateCommand
If IsValid then
(funzione per l'updute)
End If
End Sub
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5