elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / .NET (C#, VB.NET, ASP) / Re: Abrir form usando una variable de cadena de caraceteres. en: 15 Junio 2010, 04:17 am
Resuelto, el problema se generaba porqueel NameSpace que obtuve por alguna razon era incorrecto, al usar el  MsgBox(Me.GetType().Namespace) obtuve el namespace correcto, y me di cuenta que me falta un guion bajo, y ya con eso funciono como debe, llamandome al Form que ya tenia hecho en modo de diseño. Anexo foto :D



Gracias a todos :D por echar un vistazo.

El codigo lo resumo, y solo estoy usando 4 lineas:

Código:

Dim frmToOpen As Form = Activator.CreateInstance(Type.GetType("SysROCAR_1._0." & frmName))

                frmToOpen = DirectCast(frmToOpen, Form)

                frmToOpen.MdiParent = Me

                frmToOpen.Show()

2  Programación / .NET (C#, VB.NET, ASP) / Re: Abrir form usando una variable de cadena de caraceteres. en: 15 Junio 2010, 03:56 am
hubiera sido mas facil poner solo el codigo necesario.

Nunca vi la funcion DynamicallyLoadedObject, pero aca entraria perfecto el tutorial de refelction que hizo nuestro amigo danger Introduccion a System.Reflection

Leelo y nos cuentas ;)

De hecho antes de postear vi ese tuto, sin embargo, aun no llegan a lo que estoy usando que es el manejo de tipos (Type) y a parecer ese es mi problema, ya que cuanod declaro el tipo y trato de obtener el namespace junto con el form que quiero llamar, la variable de Type sale vacía, por eso es que no funciona, y es lo que ando tratando de resolver, he visto en otros foros, el msdn, pero hay mucho que me cuesta entender y otro poco que no es lo que necesito (al menos eso creo) por eso hice el post , a ver si alguien con conocimientos mas avanzados me podía orientar al respecto.
3  Programación / .NET (C#, VB.NET, ASP) / Abrir form usando una variable de cadena de caraceteres.(SOLUCIONADO) en: 14 Junio 2010, 18:53 pm
 :-(
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:
Código:

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.
4  Programación / .NET (C#, VB.NET, ASP) / Re: Formulario de ventas oO? en: 10 Noviembre 2009, 18:08 pm
Soy yo de nuevo, sigo vivo !!!! ya casi temino el sistema :D solo estoy terminando lo que son pedidos y devoluciones con sus respectivos reportes y estará terminado, una vez hecho así subo la solucion del proyecto para todo aquel que quiera checarla, y pueda ya sea tomar parte de lo que hice o bien, corregirme y ayudarme a mejorar mi modo de programar, saludos!
5  Programación / .NET (C#, VB.NET, ASP) / Re: Problema con While en: 25 Septiembre 2009, 19:58 pm
porque exactamente no entendia muy bien como hacer eso que pones ... gracias!!!!!!!!
6  Programación / .NET (C#, VB.NET, ASP) / Problema con While en: 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:
Código:
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.
7  Programación / .NET (C#, VB.NET, ASP) / Re: Formulario de ventas oO? en: 11 Mayo 2009, 18:17 pm
Resuelto, jaja, voy a ir poniendo aqui como estoy solucionando estos detalles por si a alguien le pasa lo mismo pues se de una idea que le pasa, no creo que sea el uinico que tenga éstos problemas, resulta que yo le añadía en la vista de diseño las columnas al Datagrid y al parecer eso ocasionaba algun conflicto al momento de pasar el datatable al datagrid, y pues dejo que el datatable le ponga las comunas con los nombres de las columnas al datagrid, el codigo queda asi:

Código:

Private Sub id_prd_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles id_prd.KeyDown

        If e.KeyCode = Keys.Enter Then

            con = New MySqlConnection
            con.ConnectionString = "server = 192.168.1.151;" & "user = root;" & "password = 18281e78a8;" & "database = rocar;"

            Try

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

                If adaptador.Fill(datos) = Nothing Then

                    MsgBox("Clave no encontrada, verificala")
                    id_prd.Text = Nothing
                    id_prd.Focus()

                Else

                    consulta = "SELECT DISTINCT inventario.id_prd,inventario.descripcion,marcas.marca,marcas.cantidad,marcas.precio_lista FROM inventario,marcas WHERE inventario.id_prd='" & id_prd.Text & "' AND marcas.id_prd='" & id_prd.Text & "'"

                    comando.Connection = con

                    comando.CommandText = consulta

                    adaptador.SelectCommand = comando

                    datos.Clear()

                    adaptador.Fill(datos)

                    consulta_dgv.DataSource = datos
                    id_prd.Text = Nothing
                    id_prd.Focus()

                End If

            Catch ex As Exception

                MsgBox("Se produjo el siguiente error: " & ex.Message)

            End Try

            con.Dispose()

        End If

    End Sub


Y tambien agregue una busqueda por descripcion, por ejemplo si quieren buscar todos los articulos de un auto en especifico, digamos una urvan, un tsuru, un cirrus, solo ponen la palabra en el textbox y la busqueda se ejecuta buscando todas las coincidencias posibles:

Código:

 Private Sub describe_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles describe.KeyDown

        If e.KeyCode = Keys.Enter Then

            con = New MySqlConnection
            con.ConnectionString = "server = 192.168.1.151;" & "user = root;" & "password = 18281e78a8;" & "database = rocar;"

            Try

                con.Open()

                consulta = "SELECT inventario.id_prd,inventario.descripcion,marcas.marca,marcas.cantidad,marcas.precio_lista from inventario,marcas WHERE inventario.descripcion LIKE '%" & describe.Text & "%' AND inventario.id_prd=marcas.id_prd"
                comando.Connection = con
                comando.CommandText = consulta
                adaptador.SelectCommand = comando
                datos.Clear()

                If adaptador.Fill(datos) = Nothing Then

                    MsgBox("Descripcion no encontrada, usa otra palabra")
                    describe.Text = Nothing
                    describe.Focus()

                Else

                    consulta_dgv.DataSource = datos
                    describe.Text = Nothing
                    id_prd.Focus()

                End If

            Catch ex As Exception

                MsgBox("Se produjo el siguiente error: " & ex.Message)

            End Try

            con.Dispose()

        End If

    End Sub


cualquier sugerencia o comentario será muy bien recibido.
8  Programación / .NET (C#, VB.NET, ASP) / Re: Formulario de ventas oO? en: 9 Mayo 2009, 17:04 pm
ok, aqui voy de nuevo . . .  ya ando en otro form programando las consultas de productos, pero al querer llenar la grilla no manda nada, queda en blanco y no se que pasa, este codigo es el que siempre he usado, pero poa alguna razon ahora no hace efecto, se los pongo:
Código:

Imports MySql.Data
Imports MySql.Data.MySqlClient
Imports System

Public Class consulta_productos

    Dim lector As MySqlDataReader
    Dim con As New MySqlConnection
    Dim comando As New MySqlCommand
    Dim adaptador As New MySqlDataAdapter
    Dim consulta, consulta2 As String
    Dim datos As New DataTable
    Dim DS As New DataSet

    Private Sub id_prd_KeyDown(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles id_prd.KeyDown

        If e.KeyCode = Keys.Enter Then

            con = New MySqlConnection
            con.ConnectionString = "server = 192.168.1.151;" & "user = root;" & "password = 18281e78a8;" & "database = rocar;"

            Try

                con.Open()
                consulta = "SELECT id_prd from inventario where id_prd='" & id_prd.Text & "'"
                comando.Connection = con
                comando.CommandText = consulta
                adaptador.SelectCommand = comando

                If adaptador.Fill(datos) = Nothing Then

                    MsgBox("Clave no encontrada, verificala")
                    id_prd.Text = Nothing
                    id_prd.Focus()

                Else

                    consulta2 = "SELECT DISTINCT inventario.id_prd,inventario.descripcion,marcas.marca,marcas.cantidad,marcas.precio_lista FROM inventario,marcas WHERE inventario.id_prd='" & id_prd.Text & "' AND marcas.id_prd='" & id_prd.Text & "'"
                    MsgBox(consulta2)
                    comando.Connection = con
                    comando.CommandText = consulta2
                    adaptador.SelectCommand = comando

                    Me.consulta_dgv.DataSource = adaptador.Fill(datos)


                    id_prd.Text = Nothing
                    id_prd.Focus()

                    'End While

                End If

            Catch ex As Exception

                MsgBox("Se produjo el siguiente error: " & ex.Message)

            End Try

            datos.Reset()
            con.Dispose()
            consulta = Nothing

            id_prd.Text = Nothing
            id_prd.Focus()

        End If

    End Sub
End Class

9  Programación / .NET (C#, VB.NET, ASP) / Re: Formulario de ventas oO? en: 8 Mayo 2009, 23:34 pm
Olvidenlo, ya encontre el error, analizando el codigo con Pollo me di cuentsa que el Handler del evento tenia dos veces el argumento de el text box, por eso aunque le daba un solo enter lo ejecutaba dos veces, seguramente manejando el visual del form clique sin darme cuenta

Código:

Private Sub cantidad_TextChanged(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles cantidad.KeyDown, cantidad.KeyDown



Elimine el ultimo cantidad.KeyDown , quedando:

Código:

Private Sub cantidad_TextChanged(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles cantidad.KeyDown



Y ya funka como debe . . . sorry pero entré en pánico
10  Programación / .NET (C#, VB.NET, ASP) / Re: Formulario de ventas oO? en: 8 Mayo 2009, 18:17 pm
Les pongo todo más detallado, aquí está el código de el cantidad_textchanged textbox que es donde creo esta el error >.< :
Código:

Private Sub cantidad_TextChanged(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles cantidad.KeyDown, cantidad.KeyDown

        resultado = Nothing

        If e.KeyCode = Keys.Escape Then

            id_prd.Text = Nothing
            existencia.Text = Nothing
            descripcion.Text = Nothing
            p_unitario.Text = Nothing
            id_prd.Text = Nothing
            cantidad.Text = Nothing
            marca_txt.Text = Nothing
            id_prd.Focus()

        Else

            If e.KeyCode = Keys.Enter Then

                'Asignamos valores a las variables para checar la cantidad existente con la que se quiere vender

                MsgBox(existencia.Text)

                c2 = cantidad.Text
                c1 = existencia.Text

                If c1 <= 0 Then

                    MsgBox("No hay inventario")
                    cantidad.Text = Nothing
                    p_unitario.Text = Nothing
                    descripcion.Text = Nothing
                    existencia.Text = Nothing
                    id_prd.Text = Nothing
                    id_prd.Focus()

                Else

                    If c1 < c2 Then

                        MsgBox("No puedes vender más de " & c1 & " piezas.")
                        cantidad.Text = Nothing
                        cantidad.Focus()

                    Else

                        If c1 >= c2 Then

                            'MsgBox("El enter funka! Cantidad: " & cantidad.Text)


                            'Agregamos los datos de los textboxes a el DGview

                            resultado = p_unitario.Text * cantidad.Text

                            venta_dgv.Rows.Add(id_prd.Text, descripcion.Text, marca_txt.Text, cantidad.Text, p_unitario.Text, resultado)

                            'comienza codigo de recorrido de datagrid para insertar datos en textbox

                            suma_col = Nothing

                            Dim iTotal As Integer = Me.venta_dgv.Rows.Count
                            Dim i As Integer

                            For i = 0 To iTotal - 1

                                suma_col = suma_col + Double.Parse(Me.venta_dgv(4, i).Value)

                            Next

                            Dim subt As Double = Nothing
                            Dim impto As Double = Nothing

                            subt = suma_col / 1.1
                            impto = suma_col - subt

                            total.Text = Format(suma_col, "$ #,##0.00")
                            iva.Text = Format(impto, "#,##0.00")
                            subtotal.Text = Format(subt, "#,##0.00")

                            'Termina código de recorrido de inserción de datos

                            id_prd.Text = Nothing
                            existencia.Text = Nothing
                            descripcion.Text = Nothing
                            p_unitario.Text = Nothing
                            id_prd.Text = Nothing
                            cantidad.Text = Nothing
                            marca_txt.Text = Nothing
                            id_prd.Focus()

                        End If

                    End If

                End If

            End If

        End If

    End Sub


Y acá les dejo unas imágenes de lo que pasa, al parecer, se ejecuta bien una vez el procedimiento, pero por alguna razón como que vuelve a entrar, y obviamente en ese momento ya vacié los contenidos de los textboxes y todos los contenidos estan vacios, les pongo imagenes de como me resulta:

Aqui sale todo bien, el msgbox me dice el contenido de existencia.text e inmediatamente despues hace la carga de la fila al DGView , lo que indica que está bien:


Ahora acá Se ve ya donde el DGView fue afectado y metió todos los datos, pero sorpresivamente el MSGbox salta de nuevo pero ahora sin ningun contenido ( cadena vacia) y no sé porque >.<:


Y de ahi con la cadena vacia obviamente salta el error:



Ayudaaaaa me siento perdido >.<
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines