Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - ezugaru

#1
 :-(
Que tal amigos? fijense que ando desarrollando una aplicacion con menús dinámicos en VB.Net , los menús me corren de maravilla, sin embargo mi problema viene en la conversion de el nombre del frm que se obtiene de la base de datos en tipo cadena a un objeto de tipo form que pueda usarse para invocar el formulario correcto.

Encontré varios códigos en internet, pero ninguno me ha funcionado, el que actualmente estoy trabajando es este:


Imports MySql.Data
Imports MySql.Data.MySqlClient
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic.CallType


Public Class Main

   Public user, idrol, iuseraccessmode As String

   Dim consulta As String
   Dim con As New MySqlConnection
   Dim comando As New MySqlCommand
   Dim adaptador As New MySqlDataAdapter
   Dim lector As MySqlDataReader
   Dim datos As New DataTable
   Dim mnMenu As MenuStrip

   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

       LoginForm1.Close()
       'MsgBox(iuseraccessmode)

       con = New MySqlConnection
       con.ConnectionString = "server = 192.168.1.3;" & "user = zzzzzzzz;" & "password = xxxxxxxxx;" & "database = xxxxxx;"

       Try

           con.Open()

           consulta = "Select menutext from menumaster Where mainmenu = 0" & _
                  " And menuid in (Select menuid from acceso Where idrol =" & _
                   CInt(iuseraccessmode) & ") " & _
                   "And isActive = 1"
           comando.Connection = con
           comando.CommandText = consulta
           lector = comando.ExecuteReader

           If lector.HasRows Then

               mnMenu = New MenuStrip

               While lector.Read()

                   mnMenu.Items.Add(lector(0).ToString, Nothing, New System.EventHandler(AddressOf MainMenu_OnClick))
                   Me.Controls.Add(mnMenu)

               End While
           End If

           lector.Close()

       Catch ex As Exception

           MsgBox("El siguiente error fue detectado: " & ex.Message.ToString, MsgBoxStyle.Critical)

       End Try

       con.Close()

   End Sub

   Private Sub MainMenu_OnClick(ByVal sender As Object, ByVal e As System.EventArgs)
       Dim cms As New ContextMenuStrip()
       Dim sMenu() As String
       con = New MySqlConnection
       con.ConnectionString = "server = 192.168.1.3;" & "user = xxxxxxxx;" & "password = xxxxxxxx;" & "database = xxxxxxxx;"

       Try

           con.Open()

           consulta = "Select menuid from menumaster Where menutext = '" & sender.ToString & "'"
           comando.Connection = con
           comando.CommandText = consulta
           lector = comando.ExecuteReader

           Dim parentMenuID As Integer

           If lector.HasRows Then
               lector.Read()
               parentMenuID = lector("menuid")
           End If
           lector.Close()

           consulta = "Select menutext from menumaster Where mainmenu ='" & _
            parentMenuID & " '" & _
            "And isActive = 1" & _
            " And MenuID in (" & _
            "Select menuid from acceso Where idrol =" & _
            CInt(iuseraccessmode) & ")" & _
            " Order BY MenuOrder"
           comando.Connection = con
           comando.CommandText = consulta
           lector = comando.ExecuteReader

           ReDim Preserve sMenu(0)
           Dim i As Integer
           If lector.HasRows Then
               ReDim Preserve sMenu(0)
               i = 0
               While lector.Read()
                   ReDim Preserve sMenu(i)
                   sMenu(i) = lector("menutext")
                   i = i + 1
               End While
           End If
           lector.Close()
           For Each sMn As String In sMenu
               cms.Items.Add(sMn, Nothing, New System.EventHandler(AddressOf SelectedChildMenu_OnClick))
           Next
           Dim tsi As ToolStripMenuItem = CType(sender, ToolStripMenuItem)
           tsi.DropDown = cms
           tsi.ShowDropDown()

       Catch ex As Exception

           MsgBox("El siguiente error fue detectado: " & ex.Message.ToString, MsgBoxStyle.Critical)

       End Try

       con.Close()

   End Sub

   Private Sub SelectedChildMenu_OnClick(ByVal sender As Object, ByVal e As System.EventArgs)
       
       Dim frmName As String
       'Dim frm As New Form

       con = New MySqlConnection
       con.ConnectionString = "server = 192.168.1.3;" & "user = xxxxxxxxx;" & "password = xxxxxxxxx;" & "database = xxxxxxx;"

       Try

           con.Open()
           consulta = "Select formname from menumaster Where menutext = '" & _
           sender.ToString & "'"
           comando.Connection = con
           comando.CommandText = consulta
           lector = comando.ExecuteReader

           If lector.HasRows Then

               lector.Read()
               frmName = lector(0).ToString
               lector.Close()

               Dim frm As Form = DynamicallyLoadedObject(frmName)
               frm.MdiParent = Me
               frm.Show()


           Else

               MsgBox("Under Construction", MsgBoxStyle.Exclamation, "Technical Error")

           End If

       Catch ex As Exception

           MsgBox("El siguiente error fue detectado: " & ex.Message.ToString, MsgBoxStyle.Critical)

       End Try

       con.Close()

   End Sub

   Private Function DynamicallyLoadedObject(ByVal objectName As String, _
       Optional ByVal args() As Object = Nothing) As Form
       Dim returnObj As Object = Nothing
       Dim Type As Type = Assembly.GetExecutingAssembly().GetType( _
           "SysROCAR." & objectName)
       If Type IsNot Nothing Then
           returnObj = Activator.CreateInstance(Type, args)
       End If
       Return returnObj
   End Function

End Class



Al darle click al menu que quiero abrir me manda el error: "Referencia a objeto no establecida como instancia de un objeto".

El problema empieza en la funion SelectedChildMenu_OnClick la cual manda un parametro a la funcion DynamicallyLoadedObject quien se encarga de el ensamblado de la cadena a objeto. Espero alguien pueda ayudarme porque ya me siento frustrado ... saludos.
#2
.NET (C#, VB.NET, ASP) / Problema con While
25 Septiembre 2009, 19:03 PM
Hola a todos, estoy desarrollando una aplicacion relativamente sencilla pero hay un while que no me responde como yo espero, el código es este:
Dim respuesta As Char
                           respuesta = UCase(InputBox("¿Desea eliminar la clave definitivamente? S=Elimina definitivamente la clave. N=Elimina solo la marca de esa clave", "Responda S ó N"))


                           While (respuesta <> "S" Or respuesta <> "N")

                               respuesta = UCase(InputBox("Respuesta no aceptada. ¿Desea eliminar la clave definitivamente? S=Elimina definitivamente la clave. N=Elimina solo la marca de esa clave"))

                               If respuesta = Nothing Then

                                   Eliminar.Enabled = False
                                   id_prd.Text = Nothing
                                   descripcion.Text = Nothing
                                   id_cat.Text = Nothing
                                   marca.Text = Nothing
                                   existencia.Text = Nothing
                                   p_lista.Text = Nothing
                                   id_prd.Focus()

                                   MsgBox("Baja de artículo cancelada.", MsgBoxStyle.Exclamation)

                                   Exit While

                               End If

                           End While

El problema es que se supone que si el usuario ingresa S o N el while deberia terminar y pasar a la siguiente sentencia de control que es un IF, sin embargo aun poniendo la S o la N el while no termina, ya he probado pasando msgboxes en el while para ver que la variable reciba correctamente el parametro y efectivamente el msgbox me devuelv S o N asi que no se que pueda ser ya le di vueltas y no se que pueda ser ... ayuda por favor.
#3
Hola amigos, de nuevo molestandolos ... estoy diseñado un sistema de ventas e inventarios, lo estoy haciendo en VB.Net 2005. Ya estoy controlando lo que son salidas y entradas de mercancia al almacen, al igual que las altas y bajas de clientes, lo cual pues no es dificil, mi problema ahora viene en como programo la parte de las ventas   Por ejemplo, estoy pensando en manejar un tabla de ventas que es en la que quiero registrar que articulo vendo cada vez, con su id y su descripcion, asi como el cliente que lo compro, la cantidad,fecha y un id de ventas, con lo cual si quiero checar todos los articulos de un venta especifica pues pueda hacerlo, obviamente al hacer una venta a credito voy a afrectar otra tabla que se llama creditos, en donde tengo id de mis clientes, id de venta, y el monto total de cada venta, asi como la fecha de la venta y claro, no puede faltar que afecte mi tabla de inventario pues en la cual tengo que actualizar la 'cantidad' de articulos que van a quedar,lo que estaba pensando hacer era poner un DataGridView en el formulario de ventas, y en el campo de clave que vayan tecleando o entrando la clave del articulo, la cantidad y al dar enter haga la consulta y meta los demas  datos necesarios a datagridview, ya lo que no se es cuando ya este todo en la datagridvew ejecutar la venta y de ahi se hagan todas las modificaciones a las tablas pertinentes , alguna idea? u orientación? saludos. :-X
#4
Hola que tal? he tenido problemas para poder hacer consultas a una base de datos desde internet, primero instalé el MySQL 5.1 localmente todo funciona de maravilla, la cuestion es que cuanod quiero hacer la conexion desde fuera de la red local solo me manda un mensaje de error que dice: "Unable to connect to any of the specified MySQL host".

Para acceder en la cadena de conexion puse mi IP publica, mi router esta direccionando perfectamente, como con el puerto por default (3306) no funcionaba decidi cambia el puerto al 65529 pero tampoco funciona. . .  el servico si está corriendo ya que si a la cadena de conexion le pongo la ip local si hace tods las consultas sin problema. . .  espero alguien me pueda ayudar a resolver esto que ya me tiene con dolor de cabeza ... les dejo mi cadena de conexion saludos!

P.D. Uso el mysql Connector NET 5.

con = New MySqlConnection
            con.ConnectionString = "server = 192.168.1.151;" & "Port=65529;" & "user = xxxx;" & "password = xxxxx;" & "database = xxxx;"

            Try

                'consulta de validacion de clave del producto

                con.Open()
                consulta = "select id_prod from inventario where id_prod=" & id_prod_txt.Text
                comando.Connection = con
                comando.CommandText = consulta
                adaptador.SelectCommand = comando