Llenar ListView desde base de datos
Escrito en Diciembre 16, 2008 por Alex
En este ejemplo como siempre lo explico utilizando la base de datos Mysql porque todos los ejemplos por la web son ya con Sql server.
Necesitamos un proyecto con un Windows Form y un ListView.
Para no complicarnos mucho vamos a poner el código desde el evento Load del formulario.
Así queda el código:
Imports System.Data Imports MySql.Data.MySqlClient Public Class Form1 Dim Constr As String = "server=localhost;uid=user;password=mipass;database=mibase" Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Con As New MySqlConnection(Constr) Dim Cmd As New MySqlCommand("select * from articulos", Con) Dim Dr As MySqlDataReader Try ListView1.Items.Clear() Con.Open() Dr = Cmd.ExecuteReader Dim item As New ListViewItem While Dr.Read() item = ListView1.Items.Add(CStr(Dr("upc"))) item.SubItems.Add(CStr(Dr("descripcion"))) item.SubItems.Add(CStr(Dr("precio"))) End While Catch ex As MySqlException MsgBox(ex.Message) Finally Con.Close() Cmd = Nothing Dr = Nothing End Try End Sub End Class







hola
Soy nueva en esto, muchas felicidades por tu pagina muy bueno para aprender, estoy probando tus ejemplos y en uno de ellos es este como le haria si deseo eliminar un item, solo con seleccionar una de las filas y apretando “supr” o con boton que dija delete.
espero que me alla explicado.
Gracias Martha:
Mira aquí esta el código adicional para que puedas suprimir un item con solo presionar la tecla SUPR.
‘Dentro del evento KeyDown
Private Sub ListView1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ListView1.KeyDown
‘Si se presiona tecla Supr
If e.KeyCode = Keys.Delete Then
’si hay algun item seleccionado
If ListView1.SelectedItems.Count > 0 Then
‘remueve el item
ListView1.SelectedItems(0).Remove()
End If
End If
End Sub
Saludos…
gracias…
apenas lo cheque jejeje. si funciona
hola
oye acabe de checar tu codigo con una base de datos distinta a la tuya pero tuve un error, me dice
“Unable to convert MySQL date/time value to System.DateTime”
creo es pork hay un campo de tipo fecha que hago ya le busque y observe por ahi que se declara de otra forma:
item.SubItems.Add(CDate(Dr(”fecha_nacimiento”)))
pero ahun asi me marca error…
agradeceria tu ayuda.
felicidades muy buena tu pagina.
hola
tambien tengo el mismo problema, el list view no acepta campos de mysql de tipo “date” que se hace en esos casos, oyes y tambien resuelveme una duda que tengo como le hago para que al momento de hacer una busqueda de una fecha me arroge solo la fecha…
ya que cuando vacio los datos en un textbox me da la fecha y la hora
y yo solo quiero la hora,
Tu pagina es muy interaesante ***(-_-)***
Manuel:
Creo que no es necesario convertir un valor de tipo DateTime en DateTime nuevamente.
Lo debes de convertir a string.
Acabo de hacer una prueba en una tabla con tres campos:
Nombre
Apellido
Fecha de nacimiento
Fecha de nacimiento es tipo DateTime (tambien existe en mysql el tipo Date e igual funcionó)
La parte que te da el error quedó de esta manera:
While Dr.Read()
item = ListView1.Items.Add(CStr(Dr(”nombre”)))
item.SubItems.Add(CStr(Dr(”apellido”)))
item.SubItems.Add(CStr(Dr(”fecha_nacimiento”)))
End While
Y me muestra la fecha así en el tercer subitem:
01/11/2001
Lo que hacemos es convertir el valor que nos devuelve mysql de tipo Date o de tipo Datetime a tipo String y no da error.
Si te da errores así mandame un ejemplo de tu código, dime en que version de visual basic lo haces (yo probe en 2005 y 2008) y que me suena más a que si hay un error sea porque usas alguna versión de mysql mas antigua.
Gerardo:
Aplica lo mismo que para manuel y para la duda que tienes del campo Date que te muestra la fecha y la hora, dejame decirte que mysql maneja un campo Date y otro Datetime, el campo Date no usa la hora por lo que solo te devolveria la fecha.
Aun así si no te es posible cambiar el tipo de dato en mysql hay maneras de formatear una DateTime:
TextBox1.Text = CDate(CStr(Dr(”fecha_nac”))).ToString(”dd/MM/yyyy”)
De esta manera le pides con ayuda del método Tostring que te muestre solo los primero dos dígitos del día, dos dígitos de mes y cuatro para el año.
MMM=Mes Abreviado (Nov, Dic …)
MMMM= Mes Completo(noviembre)
Respetando mayúsculas y minúsculas.
Saludos y gracias por sus comentarios.
si es cierto me funciono solo tuve que instalar un mysql mas actualizado
gracias…
hola
oye y como le hare para imprimir todo el contenido del listview en papel…ho como le hago para pasarlo a un formato de excel…
excelente pagina.
Con el control PrintDocument y un botón puedes imprimir los datos.
Aquí dejo el código completo, solo tienes que jugar con los márgenes, colores y posiciones.
Public Class Form1
Dim Item As ListViewItem
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Item = ListView1.Items.Add(”Carlos Ignacio”)
Item.SubItems.Add(”Hernández López”)
Item.SubItems.Add(”285456″)
Item = ListView1.Items.Add(”Jose Luis”)
Item.SubItems.Add(”Meza García”)
Item.SubItems.Add(”456545″)
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim font As Font = New System.Drawing.Font(”Arial”, 9.75!, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Dim i As Integer
Dim m As Integer
For i = 0 To ListView1.Items.Count - 1
If i = 0 Then
m = 40
Else
m = i * 20 + 40
End If
e.Graphics.DrawString(ListView1.Items(i).Text, font, Brushes.Blue, 100, m)
e.Graphics.DrawString(ListView1.Items(i).SubItems(1).Text, font, Brushes.Brown, 300, m)
e.Graphics.DrawString(ListView1.Items(i).SubItems(2).Text, font, Brushes.Red, 500, m)
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim previo As New PrintPreviewDialog
previo.Document = Me.PrintDocument1
previo.Show()
End Sub
End Class
hola…
ok. boy a probar el codigo… gracias por tu aporte.
Hola Alex
muy buena esta pagina
tengo un problema con el listview yo necesito que se me agreguen varios item pero me agrega uno solo y horizontalmente este es mi codigo.
Dim Cmd As New MySqlCommand(”select * from productos”, Con)
Dim Dr As MySqlDataReader
Try
ListView1.Items.Clear()
Con.Open()
Dr = Cmd.ExecuteReader
Dim item As New ListViewItem
While Dr.Read()
item = ListView1.Items.Add(CInt(Dr(”Co_producto”)))
item.SubItems.Add(CStr(Dr(”Producto”)))
item.SubItems.Add(CStr(Dr(”Tipo_corte”)))
item.SubItems.Add(CStr(Dr(”Precio”)))
End While
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
Con.Close()
Cmd = Nothing
Dr = Nothing
Hola Elena:
El problema esta en que estas llenando un solo item con varios subitems.
Simplifica el código así:
Dim Cmd As New MySqlCommand(”select * from productos”, Con)
Dim Dr As MySqlDataReader
Try
ListView1.Items.Clear()
Con.Open()
Dr = Cmd.ExecuteReader
While Dr.Read()
ListView1.Items.Add(CInt(Dr(”Co_producto”)))
ListView1.Items.Add(CStr(Dr(”Producto”)))
ListView1.Items.Add(CStr(Dr(”Tipo_corte”)))
ListView1.Items.Add(CStr(Dr(”Precio”)))
End While
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
Con.Close()
Cmd = Nothing
Dr = Nothing
Esto hace que se llenen en vez de un item, varios items con diferentes datos.
Espero haber entendido el problema bien.
Saludos.
como saber si la conslta está vacia ?? que me lo mande en un msgbox o algo por el estilo, porque al ejecutarla consulta si no hay nada… no hace nada, tal cual si no tubiera codigo la accón…
Que tal Jesus.
Después de ejecutar el comando puedes utilizar el metodo HasRows que te devuelve un valor lógico de verdadero o falso en caso de no encontrar datos.
Algo así:
Dr = Comando.ExecuteReader()
If Dr.HasRows = False Then
msgbox(”No existen datos”)
End If
K onda Alex:
Yo se k ya paso mucho tiempo de ke pusiste este gran aporte pero me gustaria k me ayudaras yo estoy usando el Visual Basic 2005 y ps me gustaria agregar a un listview como lo haces pero si tienes una manera de aplicarlo a en Visual Basic 2005 k no sea .NET me arias un gran favor…
O si de pura casualidad tienes la manera de bajar este programa ya hecho te lo agradeceria de ante mano nomas para entender lo que pones por favor si me lo puedes pasar a mi correo o mostrarme una pagina de donde pueda conseguir este ejemplo….o otras paginas k me recomiendes donde encuentre lo siguiente:
Hacer conexion con una base de datos access poder agregar e eliminar de la misma desde botones y ademas otro k me diga como agregar al listview como el k hiciste y los agregue a la base de datos.
te lo agradeceria de ante mano…
Y si el ejemplo que tienes si me sirve el problema es k no se como implementarlo te pido disculpas pero por favor si pudieras hacerme el favor te lo agradeceria infinitamente….
El 2005 es .Net
Solo que quieras Visual Basic 6.0
haaa ok… y este programa de arriba en k esta hecho????
Este fijate que tengo un proyecto que hacer tengo enlazada la base de datos y todo con OLE… lo que quiero hacer es actualize mi base de datos cuando agrego desde los textboxs pero no lo hace solo de manera temporal nomas estan guardados en lo que esta corriendo el proyecto pero al cerrarlo ya no estan cuando checo la base o vuelvo a correr el proyecto…
Si logro hacer que se graben en la base de datos cuando uso un DATAGRIDVIEW pero no se ve muy presentable kiero usar los textbox a ver si puedes ayudarme con eso????
aki esta el codigo de algo k tengo:
Imports System.Windows.Forms
Public Class Clientes
Dim dt As New DataTable
Dim intFila As Integer = 0
Private Sub Limpiar()
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
TextBox4.Clear()
TextBox5.Clear()
TextBox1.Focus()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
‘Es el boton para agregar datos a la base de datos
Dim Nocli As String
Dim NoCre As String
Dim Nomb, Dire, Tele As String
Nocli = TextBox1.Text
NoCre = TextBox2.Text
Nomb = TextBox3.Text
Dire = TextBox4.Text
Tele = TextBox5.Text
Dim strConexion As String = “Provider = Microsoft.jet.OLEDB.4.0; Data Source=BaseWell.mdb”
Dim sql As String
sql = “INSERT INTO Clientes (NoCliente,NoCredencial,Nombre,Direccion,Telefono) Values (” + Nocli + “,” + NoCre + “,’” + Nomb + “‘,’” + Dire + “‘,’” + Tele + “‘)”
Dim dataAdapter As New OleDb.OleDbDataAdapter(sql, strConexion)
SetClientes1.Clear()
OleDbDataAdapter1.SelectCommand.CommandText = sql
OleDbDataAdapter1.Fill(SetClientes1)
Button2.PerformClick()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
‘Actualiza la base de datos
OleDbDataAdapter1.Update(SetClientes1)
MsgBox(”Se Agrego Exitosamente”)
Limpiar()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
‘Es el boton para Buscar
Dim strConexion As String = “Provider = Microsoft.jet.OLEDB.4.0; Data Source=BaseWell.mdb”
Dim strSQL As String = “SELECT * FROM Clientes”
Dim dataAdapter As New OleDb.OleDbDataAdapter(strSQL, strConexion)
dataAdapter.Fill(dt)
dataAdapter.Dispose()
Dim strBusca As String
Dim Encontrado As Boolean = False
Dim i As Integer
strBusca = CStr(InputBox(”Escribe el Numero del Cliente a Buscar”, “Cliente a Buscar”))
For i = 0 To dt.Rows.Count - 1
If CStr(dt.Rows(i)(”NoCliente”)) = strBusca Then
Encontrado = True
intFila = i
TextBox1.Text = CStr(dt.Rows(intFila)(”NoCliente”))
TextBox2.Text = CStr(dt.Rows(intFila)(”NoCredencial”))
TextBox3.Text = CStr(dt.Rows(intFila)(”Nombre”))
TextBox4.Text = CStr(dt.Rows(intFila)(”Direccion”))
TextBox5.Text = CStr(dt.Rows(intFila)(”Telefono”))
End If
Next
If Not Encontrado Then
MsgBox(”No se encontro el Numero del Cliente : ” & strBusca, , “Busqueda Finalizada”)
End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
‘El boton de salir
OleDbDataAdapter1.Update(SetClientes1)
MessageBox.Show(”Origen de datos Actualizado”)
Me.Close()
End Sub
Private Sub Clientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SetClientes1.Clear()
OleDbDataAdapter1.Fill(SetClientes1)
End Sub
End Class
Aver k me puedes decir al respecto o si conoces una pagina donde venga lo que busco de agregar ala base de datos desde los textbox en VB 2005 te lo agradeceria….
Guillermo:
Yo lo haría así:
Imports System.Data.OleDb
Dim Con As OleDbConnection
Dim cmd As OleDbCommand
Dim Dr As OleDbDataReader
Dim ResAs Integer
Dim sql As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As_
System.EventArgs) Handles Button2.Click
Try
Con = New OleDbConnection(”Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mibase.mdb;”)
Con.Open()
sql = “INSERT INTO Clientes (NoCliente,NoCredencial,Nombre,Direccion,Telefono) Values (” + Nocli + “,” + NoCre + “,’” + Nomb + “‘,’” + Dire + “‘,’” + Tele + “‘)”
cmd = New OleDbCommand(sql, Con)
res= cmd.ExecuteNonQuery
MessageBox.Show(res) ‘este mensaje te muestra en numero de registros afectados
Catch
End Try
Con.Close()
End Sub
Claro, aqui te pongo solo la parte del insert utilizando el método ExecuteNonQuery que solo devuleve cuantos registros fueron afectados y solo te sirve para las operaciones de Insert, update y Delete que no devuelven valores.
Saludos.
haaa gracias heee!!!
si me funciono! muchas gracias man olle no necestio agregar los componentes o si???
bueno espero que no te alla perdido mucho tiempo te agradesco de antemano por tomarte el tiempo en ayudarme gracias man lo bueno es k no fue en vano!!!
Mientras funcione no necesitas agregar nada mas que ya este agregado.
que tal alex como hago para que me muestre los datos en la columna corespondiente ya que en la tabla de la base de datos tengo 3 campos nombre, apellido, calificacion pero cuando quiero mostrar los datos almacenados en el listview en donde ya tengo creadas las tres columnas, me aparesen todos los datos en la primera columna y no de manera ordenada entonces cual es la solucion
lo siento ya solucione el problema bien dicen que una cerbeza te ayuda a abrir la mente jejejeje de cualquier forma muchas gracias
Bueno la solucion era poner el listview en modo details
alex me podrias ayudar?quiero saber como se obtiene el numero de registros en una tabla y convertirlo propiamente a numero para hacer operaciones con el utilizando mysql+visualbasic.net………me alivianarias un chingo
Ramon: Lo otienes con la query:
Select count(nombreCampo) from tabla
y Lo almacenas en una variable de tipo integer o short.
Tengo una base de datos en excel nesecito llenar un listview con los datos de la columna a - f al dar click en un boton peron no lo he logrado!!!!!
ayudemnme!!!!
Crystian, es algo estenso ponerlo aqui en comentarios, pero en unos dias lo pongo en un post.
bueno yo quiero saver sobre el codigo de las 4 operaciones suma resta multiplicacion y division utilizando el if then else por favor le boya suplicar
Guido:
dim Tipo_operacion as string
dim Numero1 as double
dim Numero2 as double
dim Resultado as double
numero1=10
numero2=15
If Tipo_operacion=”suma” then
Resultado=numero1+numero2
else if Tipo_operacion=”resta” then
Resultado=numero1-numero2
else if Tipo_operacion=”multiplicacion” then
Resultado=numero1 * numero2
else if Tipo_operacion=”division” then
Resultado=numero1 / numero2
endif
msgbox (Resultado)
Lo ideal es usar Select Case en Vez de If else …
Saludos.
Estoy usando un listview como en tu ejemplo y mi duda es como puedo cambiar el ancho de las columnas del listview, lo que pasa es que cuando realizo una consulta y llamo los datos al listview no caben en el espacio en que se muestran y salta de linea y no quiero que salte.
De antemano gracias!!
Hola estoy probando tu ejemplo pero en mi caso la BD esta en un escritorio remoto y me marca un error en la linea de Dim Constr As String = “server=localhost;uid=user;password=mipass;database=mibase”
como se le hace para acceder mediante escritorio remoto?????
Manuel:
El list view se ajusta con el mouse en el diseñador y también se ajusta desde la propiedad Width-
Esther: Si tu base de datos esta en otro equipo, tienes que poner el nombre o la direccion IP del equipo remoto en donde dice server=localhost.
Localhost significa Local.
saludis alex muy buena pagina y buenas practicas q me han ayudado
tengo una pregunta y espero me pueda responder porfavor
esto asiendo algo similar pero en lenguaje C# y utilizo sql server 2005 y pues apenas comienso
no tenrdas u tuto de como insertar los datos de una tabla de sql a un listview en C#???
te lo agradeceria mucho.
No tengo ningún tutorial en C# y el problema que por el trabajo no tengo casi tiempo de postear, pero si me da un tiempecito te lo posteo.
HOLA AMIGO,TENGO UNA GRAN DUDA ,OJALA Y PUEDAS AYUDARME HE HECHO UNA INTERFAZ EN VISUAL ESTUDIO 2005 QUE ME CONECTA A MYSQL PUEDO DAR BAJAS Y ALTAS, PERO LO QUE NO HE PODIDO HACER ES COMO HACER UNA CONSULTA,POR EJEMPLO PONGO UN TEXTBOX Y POR MEDIO DE UN BOTON”CONSULTA POR EJEMPLO” QUE ME BUSQUE EL CAMPO LLAVE” EN MI CASO ES DE TIPO “INT”
Y QUE SOLO ME MUESTRE EL DATO QUE HE TECLEADO EN EL TEXBOX Y ME LO MUESTRE EN MI LISTVIEW ESPERO QUE AYUDES YA QU ES URGENTE LO ENTREGO EL DIA DE MAÑANA
PIPELINE
Es exactamente igual la consulta solo que mencionas el campo llave.
SELECT campollave FROM tabla WHERE campollave=textbox1.text
Saludos.
Hola alex, sos un groso, tengo una consulta, como obtengo el numero de la fila seleccionada en un listwiew, para luego mostrar la informacion de dicha fila en otro dormulario..
saludos
bueno ya lo solucione, pero ahora viene otra gran duda como hacer un istview editable en vb2005 u vb2008 , reurgente
Un listview editable? Lo que yo haria seria sobreponer un textbox a cada campo de la primera fila y ahi metes los datos. Pero .NET no trae uno editable.
Podrias conseguir uno en internet ya hecho.
Buenas Tardes,
Deseo mostrar una tabla en un listview, pero a la hora de cargar los datos cuándo agregó el ITEM me aparece que no coinciden los tipos, pero ya tengo definida la variable ITEM. Anexo código
Dim ITEM as ListItem
Set ITEM = ListView.ListItems.Add(, , (Rst.Fields(0).Value) <== Aquí me marca el error
Ya intenté varias veces y me sigue marcando el error, necesito configurar el objeto ListView??’
Agradezco tú ayuda.
Reno ListItem no es lo mismo que listViewItem. ese es el problema.
Hola alguien me puede decir como cargo los datos en el listview, pense que era como en el datagrid, pero nada que ver.. Estoy empezando a programar en visual.net..
Agradecido de antemano.
Precisamente lee este Post @Santiago
Alguien sabe como hacer enter en un datagrid y que solo me seleccione esos datos de esa fila..
el tema es que quiero pasar esos datos en otro datagrid y no son exactamente los mismos datos, ambos datagrid tienen datos distintos.
Con el evento keypress.
Hay muchas maneras.
Debes acceder a las columnas por su nombre.
Checa que en el editor de columnas les hayas puesto un nombre a cada una.
Maneja el evento RowEnter del datagridView.
El valor lo obtienes con un código parecido a este. remplazando los nombres correctos.
Dim Valor as integer
valor = datagridView1.CurrentRow.Cells(”NombreColumna”).Value
Te devolverá un valor de tipo object así que debes hacer la conversión adecuada.
Que ondas alex
es muy apreciable tu ayuda enserio a mi me a servido mucho, de echo utlize el codigo de imprimir y me funciono perfectammente…
oyes tengo una duda espero y me sepa explicar mira ya tengo un listView funcionando con un proyecto de punto de venta con el metodo key press…el detalle es que cuando realizo una venta primero debo de checar que la cantidad que boy a vender sea menor o igual a la cantidad de la base de datos…el detalle que no encuentro la forma de validar esa parte del codigo.
ya que debe mandar un msj que la cantidad es insuficiente a vender o que no hay en existencia…ayuda plz o dame una idea de como validar…
gracias amigo
Daniel: No comprendo muy bien, pero si el evento keypress lo tienes en un texbox donde metes el codigo de barras o la clave del producto, necesitas solamente hacer una consulta ala BD y dependiendo del resultado mandas el mensaje que dices y pones un exit sub o exit function y evitas que se llene el listview con esto.
Este artículo es muy bueno e interesante. Suerte!
Hola que tal Alex, mira tengo una duda bien grande y he estado batallando con este problemita… mira te explico
Estoy haciendo un punto de venta en el cual tengo un textbox donde coloco el codigo del producto y tengo un listview donde se va imprimiendo el producto, el problema es ke al poner un codigo que no existe, me manda el mensaje de que no existe pero de igual forma me imprime el codigo que puse en el textbox en el listview pero sin las demas columnas obviamente porque no existe, me gustaria que me mandara el mensaje de que no existe y no se imprima nada, te mando como lo tengo.
If e.KeyCode = Keys.Enter Then
Try
Dim db As New MySqlCommand(”SELECT * FROM productos” & ” WHERE CodigoProducto =’” & txtCodigoBarras.Text & “‘”, con)
con.Open()
mysqldr = db.ExecuteReader()
Dim item As New ListViewItem
While mysqldr.Read()
txtDescripcion.Text = mysqldr.Item(2)
txtCantidad.Text = mysqldr.Item(3)
txtPrecioporUnidad.Text = mysqldr.Item(5)
End While
mysqldr.Close()
con.Close()
Catch
txtCodigoBarras.Focus()
End Try
If txtCodigoBarras.Text = “” Then
SaurinaMBox.ShowWinMessage(”Introduzca el codigo del producto para añadir a la venta”, Windows.Forms.MessageBoxButtons.OK)
txtCodigoBarras.Focus()
Else
Try
Dim strSQL As String
strSQL = “INSERT INTO ventaporproducto ” & _
“(Ticket, FechaVenta, CodigoBarras, Descripcion, Cantidad,PrecioUnidad) VALUES ” & _
“(’” & lblTicket.Text & “‘, ‘” & lblDate.Text & “‘,’” & txtCodigoBarras.Text & “‘,” & _
“‘” & txtDescripcion.Text & “‘,’” & txtCantidad.Text & “‘, ” & _
“‘” & txtPrecioporUnidad.Text & “‘)”
con.Open()
Dim db As New MySqlCommand(strSQL, con)
db.ExecuteNonQuery()
Call listview()
Catch
SaurinaMBox.ShowWinMessage(”No existe el producto en la base de datos.!”, Windows.Forms.MessageBoxButtons.OK)
txtCodigoBarras.Focus()
End Try
con.Close()
End If
Aki te mando un link de una imagen para que veas como se ve en el programa http://yfrog.com/c9noexistej
Bueno, de igual manera ya solucione ese problema, aplicando otros metodos ;D si alguien esta desarrollando un punto de venta podemos intercambiar ideas..
Tienes que poner Exit Sub en el momento que sepas que noe xiste el producto y antes de agregar al listview.
Que onda gracias alex por responder, mira tengo otra duda, no se si me pudieras asesorar, por ejemplo ya tengo mi Form de ventas bien añade los productos al listview me hace el conteo de productos los subtotales etc etc, si presiono F3 sale un nuevo Form que indica el metido de pago, bueno mi duda es
Como puedo hacerle para que ese nuevo form, pueda leer cuanto es el subtotal del Form Ventas y cuantos productos esta comprando, es algo asi como poder ver las variables de un form en otro… sorry soy nuevo en vb.net :/ gracias alex
Declara tus variables de tipo Friend o Public y leelas desde el otro form así:
nombreform.variable
Donde nombreform es el nombre de tu form de ventas y variable es la variable friend donde tienes el subtotal.
Saludos.
Amigo necesito un poco de tu ayuda, como puedo hacer si tengo un login y quisiera imprimir en la ventana que sigue del login el nombre de quien ha entrado?
por ejemplo tengo en mi base de datos una tabla llamada cuentasdeacceso la cual contiene solo 4 campos que es Id, Usuario, Contrasena, Nombres
en el login te pide el usuario y contrasena y quisiera que al entrar al sistema te aparezca el nombre del usuario que jale el dato del campo Nombres
Estoy trabajando con mysql gracias bro y Feliz navidad
Jorge:
Hya muchas maneras. Yo declararía una variable tipo public en modulo creado especialmente para variables globales.
Public nombreUsuario as string
Al logearse con el form login verificas que el usuario y contraseña sean correctos y de ser así, sacas el nombre desde ese mismo formulario y lo asignas a la variable public:
nombreUsuario=”usuario”
Y durante toda la ejecución de tu aplicación puedes tener acceso a esa variable para ocuparla como quieras.
Ok muchas gracias ya lo conseguir y pongo por si a alguien le interesa:
Private Sub txtUsername_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtUsername.TextChanged
Dim db1 As New MySqlCommand(”SELECT * FROM cuentasdeacceso WHERE Usuario=’” & txtUsername.Text & “‘”, con)
con.Open()
mysqldr = db1.ExecuteReader
While mysqldr.Read()
lblNombre.Text = mysqldr.Item(3)
End While
mysqldr.Close()
con.Close()
nombreEmpleado = lblNombre.Text
End Sub
Automaticamente va ir cambiando si nosotros en nuestra caja de texto cambiamos de usuario.
Bro disculpa como puedo hacer una consulta a 2 campos de mi tabla ?
es ke por ejemplo al momento de poner ya sea el codigo de barras o codigo del producto dentro de un txtbox quisiera que busque en los 2 campos de mi tabla para ver si se encuentra…
solo puedo hacer que busque en 1 campo pero no lo consigo como kiero, te lo agradeceria mucho brother
Feliz año
Hola Alex, durante tiempo me ha servido de mucho tu blog, pero ya termine una pequeña aplicacion en vb2008 y Mysql pero ahora mi problema es que no puedo o mejor dicho nose como agregar el mysql al instalador de mi aplicacion cosa que el usuario final no tenga que instalar mysql para poder operar la aplicacion, he buscado por la red y encontre algo sobre mysql desatendido, pero la verdad kisiera tu ayuda por fa.
saludos desde ya mil gracias
Hola Alex, soy nuevo en esto, podrias poner el codigo de llenar el ListView pero con una base de datos de acces, me esta siendo complicado el adaptarlo.
Hola alex este tutorial me ha servido pues he logrado parte, cuando elimino una linea del ListView solo lo elimina del ListView en pantalla pero no de la base de datos, como se puede solucionar,tambien cuando hay un campo vacio de algun dato de una fila no pone las siguientes filas como se puede solucionar.
Pongo el codigo por si me puedes alludar y si tambien puede alludar a alguien, e logrado hacerlo con base datos de acces.
Imports System.Data
Imports System.Data.OleDb
Public Class Cliente
Dim Constr As String = (”Provider=Microsoft.Jet.Oledb.4.0;Data source=D:\BaseDatos.mdb”)
Dim dt As New DataTable
Private Sub Cliente_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Con As New OleDbConnection(Constr)
Dim Cmd As New OleDbCommand(”SELECT * FROM CLIENTE”, Con)
Dim DR As OleDbDataReader
Try
ListView1.Items.Clear()
Con.Open()
DR = Cmd.ExecuteReader
Dim item As New ListViewItem
While DR.Read()
item = ListView1.Items.Add(CStr(DR(”CODIGO”)))
item.SubItems.Add(CStr(DR(”CLIENTE”)))
item.SubItems.Add(CStr(DR(”NIF”)))
item.SubItems.Add(CStr(DR(”TELEFONO”)))
item.SubItems.Add(CStr(DR(”FAX”)))
End While
Catch ex As Exception
‘Catch ex As ReadOnlyException
MsgBox(ex.Message)
Finally
Con.Close()
Cmd = Nothing
DR = Nothing
End Try
‘DR = Comando.ExecuteReader()
‘If DR.HasRows = False Then
‘ MsgBox(”No existen registros”)
‘End If
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ventana As New Inicio()
ventana.Show()
Me.Finalize()
End Sub
‘Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.SelectedIndexChanged
‘Dentro del evento KeyDown
Private Sub ListView1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles ListView1.KeyDown
‘Si se presiona tecla Supr
If e.KeyCode = Keys.Delete Then
‘ ’si hay algun item seleccionado
If ListView1.SelectedItems.Count > 0 Then
‘ ‘remueve el item
ListView1.SelectedItems(0).Remove()
End If
End If
End Sub
End Class
estos codigos si que estan completos y entendibles usted si sabe responder una pregunta gracias por responder preguntas tan concreta mente siga asi