|
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 Gracias a todos por echar un vistazo. El codigo lo resumo, y solo estoy usando 4 lineas: 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.ReflectionLeelo 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: 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 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!
|
|
|
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: 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: 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: 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: 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 Private Sub cantidad_TextChanged(ByVal sender As System.Object, ByVal e As KeyEventArgs) Handles cantidad.KeyDown, cantidad.KeyDown
Elimine el ultimo cantidad.KeyDown , quedando: 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 >.< : 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 >.<
|
|
|
|
|
|
|