none
Variable de unica vez RRS feed

  • Pregunta

  • Buenos dias,

     

    Antes que todo quiero agradecer porque es el unico foro en el que me han contestado y lo mejor aun me han dado respuesta.

     

    Como se pudieron dar cuenta apenas estoy comenzando con la programacion web en ASP.NET. Siempre he trabajado aplicaciones windows. Las cuales a mi parecer tienen mas posibilidades.

     

    La duda es la siguiente resulta que tengo que generar una variable desde la base de datos o sea en una tabla de la base de datos tengo los campos que voy a utilizar en una consulta. Por lo que necesito ejecutar una consulta a la tabla donde estan los campos y guardarla en una variable, pero todo esto unicamente en el load de la pag, el problema es que como tengo AutoPostback habilitado en algunos controles o cuando doy clic a un boton se ejecuta siempre y me borra los datos. Ademas que no seria optimo estar yendo a la tabla a generar la consulta siempre.

     

     

    Eje:

    tbl_Datos:

    nomCampo:

    cc, ape, tel

     

    String Consulta;

    Ejecuto: "Select nomCampo from tbl_Datos"

     

     

    Consulta = Consulta & ", nomCampo"

     

    _____________________________________________________

     

    cc, ape, tel

     

    Consulta1 = "Select " & Consulta & " From tbl_Cliente"

     

     

    Espero que se haya entendido y gracias.

     

    Ademas quiero saber como se hace un control de fecha el cual cuando presione un boton me muestre un calendar y cuando seleccione me mande la fecha al txt. O un control tipo Datepicker.

    miércoles, 30 de julio de 2008 13:58

Respuestas

  • Buenas,

     

    Las variables en asp.net no son demasiado complicadas.

     

    Resumiendo:

     

     * Variables de aplicación: Se mantienen durante toda la vida de la aplicación.

    *  Variables de sesión: Cuando un usuario abre el navegador se inicia la sesión y cuando se cierra el navegador se termina la sesión. ( Puedes matar tu la sesión si quieres).

     

     

    El error al declarar el objeto se tendría que mirar con calma. ;-)

     

    Para trabajar con ASP.NET AJAX en principio solo tendrías que tener las librerías, pero si el servidor las tiene ya preinstaladas mucho mejor.

     

    Pero mejor si te miras un poco el funcionamiento de las variables en ASP.NET ;-)

     

    Saludos.

     

    Si la respuesta ha sido de utilidad marca la como correcta.

     

     

     

     

     

     

    miércoles, 30 de julio de 2008 16:09

Todas las respuestas

  • Buenas,

     

    Para las variables puedes utilizar las variables guardadas en la sesión el usuario.

    http://msdn.microsoft.com/es-es/library/87069683(VS.80).aspx

     

    Para el calendario tienes el de ASP.NET AJAX.

    http://www.asp.net/AJAX/AjaxControlToolkit/Samples/Calendar/Calendar.aspx

     

    Saludos.

     

    Si la respuesta ha sido de utilidad marca la como correcta.

     

     

     

    miércoles, 30 de julio de 2008 14:22
  • Mira yo lo tengo de esta manera: Este es mi Global.asax

    Code Snippet

     

    <%@ Application Language="VB"%>

    <%@ Import Namespace = "System.Data.SqlClient" %>

    <%@ Import Namespace = "System.Data" %>

    <script runat="server">

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

    ' C¢digo que se ejecuta al iniciarse la aplicaci¢n

    End Sub

    Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)

    ' C¢digo que se ejecuta durante el cierre de aplicaciones

    End Sub

    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)

    ' C¢digo que se ejecuta al producirse un error no controlado

    End Sub

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)

    ' C¢digo que se ejecuta cuando se inicia una nueva sesi¢n

    Session("TipoFecha") = Nothing

    Session("cantCont") = 0

    dim cantcontadores as Integer

    Dim conn As New SqlConnection(ConfigurationManager.ConnectionStrings("connSql").ToString)

    if Session("cantCont") = 0 then

    Session("parteContadores") = ""

    Dim comm As New SqlCommand("SELECT count(num_Cont),str_Abreviatura FROM tbl_IdContadores GROUP BY str_Abreviatura", conn)

    Dim reader As SqlDataReader

    conn.Open()

    reader = comm.ExecuteReader

    While Not reader.Read = False

    cantContadores += 1

    If cantContadores = 1 Then

    Session("parteContadores") = Session("parteContadores") & "num_Contador" & cantContadores & " AS " & reader("str_Abreviatura")

    Else

    Session("parteContadores") = Session("parteContadores") & ", " & "num_Contador" & cantContadores & " AS " & reader("str_Abreviatura")

    End If

    End While

    conn.Close()

    Session("cantCont") = 1

    end if

    End Sub

    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)

    ' C¢digo que se ejecuta cuando finaliza una sesi¢n.

    ' Nota: El evento Session_End se desencadena s¢lo con el modo sessionstate

    ' se establece como InProc en el archivo Web.config. Si el modo de sesi¢n se establece como StateServer

    ' o SQLServer, el evento no se genera.

    End Sub

    </script>

     

     

    Pero no se como hacer para que me ejecute el session start y me genere la variable. En el PC funciona pero en el server no funciona.

     

    Respecto a AJAX casi no se de este tema. Cuando hago mi aplicacion con AJAX el servidor debe tener AJAX instalado??

    miércoles, 30 de julio de 2008 14:29
  • Buenas, estoy un poco perdido con tu código, no se si por que no me entero o porque esta en VB.Net .

     

    Primero cuando comienza una sesión no existen las variables de sessión, entonces Session("cantCont") = 0 es correcto, pero luego porque haces un " if Session("cantCont") = 0 then " si siempre será 0 en el evento Session_Start ?.

     

    Siempre entrará en la condición.

     

    Yo entiendo que pretendes hacer un contador, no?

     

    Yo lo que haría es una variable de aplicación no de sesión, y cada vez que inicies la aplicación o la reinicies, busques el valor a la base de datos. Luego cuando el usuario inicie sesión Session_start es cuando aumentas el valor del contador.

     

    Pero ya te digo que no se si he entendido del todo la intención del código.

     

    Saludos.

     

    Si la respuesta ha sido de utilidad marca la como correcta.

     

     

    miércoles, 30 de julio de 2008 15:24
  • Lo que yo buscaba con el contador era solamente ejecutar una vez el codigo que te dije que lo unico que hacia es generar un string desde una base de datos. Pero creo que ya te entiendo, lo que pasa es que no entiendo bien la funcionalidad de Session en ASP.NET.

     

    Lo que pasa es que en php cuando uno maneja sesiones, uno debe indicarle por codigo cuando iniciar session en cada pagina. Cuando le doy Iniciar session es cuando puedo tomar los valores de las sesiones. Por ejemplo digo Session_Start(); y con eso ya tengo iniciada la session y puedo asignar valores a las variables y tomar valores desde estas. Si no hiciera esto entonces no podria acceder a estos valores.

     

    En ASP.NET lo que no entiendo es como o cuando se inicia una session? Cada que se abre un pagina? Cada que se ejecuta un codigo?

     

    Lo solucione de la manera rudimentaria por el momento  mientras tengo tiempecito de leer sobre sesiones en ASP.NET.

     

    Respecto a la fecha lo hice tambien de una manera rudimentaria creo yo:

     

    Codigo para hacer un calendario visible y llevar los valores a textbox.

    Protected Sub imgCalendar1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgCalendar1.Click

    Calendario.Visible = True

    Session("tipoFecha") = "I"

    End Sub

    Protected Sub imgCalendar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles imgCalendar.Click

    Calendario.Visible = True

    Session("tipoFecha") = "F"

    End Sub

    Protected Sub Calendario_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Calendario.SelectionChanged

    Calendario.Visible = False

    Select Case UCase(Session("tipoFecha"))

    Case "I"

    txtFechaInicio.Text = Calendario.SelectedDate

    txtFechaInicio.Text = Format("dd/MM/yyyy", txtFechaInicio.Text)

    Case "F"

    txtFechaFin.Text = Calendario.SelectedDate

    txtFechaFin.Text = Format("dd/MM/yyyy", txtFechaFin.Text)End Select

    End Sub

     

     

    Te hago una pregunta y te pido disculpas porque al parecer no te estoy dejando hacer lo tuyo.

     

    Cuando creo una clase (.cls) y trato de instanciarla, localmente me funciona pero en el servidor me saca error cuando declaro el objeto.

     

    clsDatos objDatos = new clsDatos;

     

    En la declaracion del objeto es donde me encuentro mi error.

     

    No entiendo porque o que debo hacer.

     

    Otra cosa es la pregunta que te hice anteriormente Si trabajo con AJAX debe mi servidor tener instaladas las librerias AJAX???? o puedo simplemente subir las dlls.

     

    GRACIAS MAN

    miércoles, 30 de julio de 2008 15:47
  • Buenas,

     

    Las variables en asp.net no son demasiado complicadas.

     

    Resumiendo:

     

     * Variables de aplicación: Se mantienen durante toda la vida de la aplicación.

    *  Variables de sesión: Cuando un usuario abre el navegador se inicia la sesión y cuando se cierra el navegador se termina la sesión. ( Puedes matar tu la sesión si quieres).

     

     

    El error al declarar el objeto se tendría que mirar con calma. ;-)

     

    Para trabajar con ASP.NET AJAX en principio solo tendrías que tener las librerías, pero si el servidor las tiene ya preinstaladas mucho mejor.

     

    Pero mejor si te miras un poco el funcionamiento de las variables en ASP.NET ;-)

     

    Saludos.

     

    Si la respuesta ha sido de utilidad marca la como correcta.

     

     

     

     

     

     

    miércoles, 30 de julio de 2008 16:09