none
Modulo RRS feed

  • Pregunta

  • Tengo este codigo...

       

    Module Variables
           Dim p As New EscuelaDatosDataContext()
     Dim per = From a In p.ActualPeri
                  Select a

        Public peri As String = per.periodo
        Public codperi As Integer = per.codper

    End Module

    Quiero almacenar los valores de esos campos en sendas variables publicas para tenerlas disponible en cualquier formulario de la aplicacion.

    No me da error, pero no hace nada mas, no da resultados, todo normal.

    Cuando pongo la variable per y después pongo punto para que salga el intellisence con los campos, pues nada, no me salen, Que hago. Repito no pone andulaciones indicando error, ni mensajes.

    Gracias

    VS2013

    SQLServer 2012

    LINQ to SQL

    miércoles, 3 de diciembre de 2014 5:18

Respuestas

  • Te falta indicar en la Select cuál es el registro cuyas columnas quieres extraer. Si sabes que siempre va a haber uno, puedes hacerlo así:

    Dim per = (From a In p.ActualPeri Select a).FirstOrDefault()

    Con eso, al teclear "per." el Intellisense ya te debería mostrar las columnas correspondientes.

    Para que el código sea más correcto, deberías cerrar el datacontext que tienes en la variable p cuando termines de usarlo. Puedes usar para ello una construcción "Using". Esto no es causa de que no funcione, simplemente sirve para que no se quede abierta la conexión a base de datos.

    miércoles, 3 de diciembre de 2014 9:21
  • Debes especificar el tipo de tu variable per

     Dim per As ActualPeri = (From a In p.ActualPeri Select a).FirstOrDefault()

    Marco en negrita la modificación. 

    Te recomiendo actives las opciones de Option Strict y Option Explicit en las propiedades de tu proyecto para evitar estos problemas


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 3 de diciembre de 2014 13:16

Todas las respuestas

  • Te falta indicar en la Select cuál es el registro cuyas columnas quieres extraer. Si sabes que siempre va a haber uno, puedes hacerlo así:

    Dim per = (From a In p.ActualPeri Select a).FirstOrDefault()

    Con eso, al teclear "per." el Intellisense ya te debería mostrar las columnas correspondientes.

    Para que el código sea más correcto, deberías cerrar el datacontext que tienes en la variable p cuando termines de usarlo. Puedes usar para ello una construcción "Using". Esto no es causa de que no funcione, simplemente sirve para que no se quede abierta la conexión a base de datos.

    miércoles, 3 de diciembre de 2014 9:21
  • Venga, lo he probado  determinado a que iba a funcionar, pero no fue asi.

    La tabla tiene y solo tendra un registro.

    Por eso no me tome molestias en filtrar registros. De modo que, ahora si que estoy inconcluso con esto.

          

    Module Variables
       Dim p As New EscuelaDatosDataContext()
     Dim per = (From a In p.ActualPeri Select a).FirstOrDefault()

        Public peri As String = per.periodo
        Public codperi As Integer = per.codper

    End Module

    Mi codigo quedo asi, pero no me sale en el intelisense los campos, si que me sale la variable per.

    No se si es valido mencionar que este codigo esta en un archivo de modulo aparte.

    Gracias.

    miércoles, 3 de diciembre de 2014 13:07
  • Debes especificar el tipo de tu variable per

     Dim per As ActualPeri = (From a In p.ActualPeri Select a).FirstOrDefault()

    Marco en negrita la modificación. 

    Te recomiendo actives las opciones de Option Strict y Option Explicit en las propiedades de tu proyecto para evitar estos problemas


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 3 de diciembre de 2014 13:16
  • Ahora si funciono a la perfeccion. Un millon de gracias por toda la orientacion hermano.

    Un saludo desde Rep. Dominicana.

    miércoles, 3 de diciembre de 2014 13:33
  • Tengo este modulo aparte llamado "Variables" y su contenido es este...

    Module Variables
         Public salida As String = "Almacen"

       End Module

    Quiero almacenar el contenido de la variable "salida" en un label, así...

    LabelNodo.Text = Variables.salida

    o

    LabelNodo.Text = salida

    De ninguna manera sale.

    No se si hay que ejecutar el modulo al iniciar la aplicación. Si es así, tampoco se como, soy prácticamente nuevo en VB.NET

    Gracias.

    miércoles, 3 de diciembre de 2014 15:27
  • Quiero halarlo de cualquier formulario dentro de mi aplicacion.
    miércoles, 3 de diciembre de 2014 15:28
  • Public Module Variables
         Public salida As String = "Almacen"
    
    End Module
    Lo has establecido como Public?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 3 de diciembre de 2014 15:33
  • Lo hice de esa manera con Public al inicio y tampoco resulto, no me da el valor en el label.

    Lo estoy invocando desde un formulario aparte dentro de la aplicacion.

    miércoles, 3 de diciembre de 2014 15:37
  • Yo pondría ese valor como una constante

    Public Const salida As String = "Almacen"


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 3 de diciembre de 2014 15:49
  • No hay forma tronco.

    He recompilado, he hecho todo lo que me has dicho y no veo resultado favorable. Ya no se que pensar con esto que se, que es una sencillez, pero me esta azarando.

    miércoles, 3 de diciembre de 2014 16:07
  • si pones un punto de ruptura en LabelNodo.Text = Variables.salida

    puedes ver el valor de Variables.salida?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 3 de diciembre de 2014 16:18
  • No se que pasa con mi VS2013, pero tampoco me funcionan los puntos de interrupcion, sigue la ejecucion de largo.
    miércoles, 3 de diciembre de 2014 16:31
  • Haz un Limpiar Solucion, Luego un Volver a generar. Borra previamente las carpetas \bin y \obj



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 3 de diciembre de 2014 16:56
  • Hice lo recomendado y nada.

    No tengo la carpeta bin ni obj.

    Ahora pienso en algo que no he hecho, que es esto que me has recomendado "Te recomiendo actives las opciones de Option Strict y Option Explicit en las propiedades de tu proyecto para evitar estos problemas"

    Pero no se la ruta.

    Gracias

    miércoles, 3 de diciembre de 2014 17:07
  • selecciona el proyecto botón derecho propiedades. Selecciona pestaña compilar creo que era y establece a On.

    pero,creo que ese no es el problema. El intellisense te funciona? Escribes Variables y cuando pones el punto sale algo? Has verificado los namespaces?


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 3 de diciembre de 2014 17:11
  • El intelissense funciona bien.

    Venga! encontré las opciones pero, tenia la de Explicit activada a On y la de Scrict en Off, active esta ultima y me dio un sin numero de errores "

    Option Scrict no permite la conversion implicita de string en integer"

    Y asi sucesivamente con otros tipos de datos...

    miércoles, 3 de diciembre de 2014 17:16