Para cargar una tabla en un ListView utilizo este codigo...
Imports System.Data.OleDb
Private Sub Cargar_ListView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim CNN As New OleDb.OleDbConnection
Dim DT As New DataTable
Dim DA As New OleDb.OleDbDataAdapter
Dim CMD As New OleDb.OleDbCommand
CNN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\CONTROL_SERVICENTRO\COMBUSTIBLES.mdb"
CNN.Open()
CMD.Connection = CNN
CMD.CommandText = "SELECT * FROM PERSONAL"
CMD.CommandType = CommandType.TableDirect
DA.SelectCommand = CMD
DA.Fill(DT)
For Each DR As DataRow In DT.Rows
Dim item As ListViewItem
item = New ListViewItem(DR("CODIGO").ToString)
item.SubItems.Add(DR("NOMBRE").ToString)
item.SubItems.Add(DR("TURNO").ToString)
ListView1.Items.Add(item)
Next
End Sub
'Este aca me carga todo se necesita cerrar la base de datos ahi???
'--------------------------------------------------------------------------------------------------------------------------------------------
'//Este Utilizo para cargar un registro en TextBox
Private Sub cmdCargar_en_TextBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cnn As New OleDb.OleDbConnection
Dim dt As New DataTable
Dim da As New OleDb.OleDbDataAdapter
Dim cmd As New OleDb.OleDbCommand
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\CONTROL_SERVICENTRO\COMBUSTIBLES.mdb"
cnn.Open()
cmd.Connection = cnn
cmd.CommandText = "SELECT * FROM PERSONAL WHERE CODIGO='10'"
cmd.CommandType = CommandType.TableDirect
da.SelectCommand = cmd
da.Fill(dt)
TextBox1.Text = CStr(dt.Rows(intFile)("CODIGO"))
TextBox2.Text = CStr(dt.Rows(intFile)("NOMBRE"))
TextBox3.Text = CStr(dt.Rows(intFile)("TURNO"))
End Sub
'Este aca me carga todo se necesita cerrar la base de datos ahi???
'--------------------------------------------------------------------------------------------------------------------------------------------
'Esta parte es lo que mas me interesa Guardar varios registro al mismo tiempo, En un control ListView tengo unos registro tiene que guardar todo el contenido
Private Sub Guardar_todo_el_contenido_de_un_ListView_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim I As Integer = 0
For I = 0 To ListView2.Items.Count - 1
Dim cnx As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\CONTROL_SERVICENTRO\COMBUSTIBLES.mdb")
Dim SQLGuardar As String
SQLGuardar = "INSERT INTO PERSONAL VALUES(@CODIGO,@NOMBRE,@TURNO)"
Dim cmd As New OleDbCommand(SQLGuardar, cnx)
cmd.CommandType = CommandType.Text
cmd.Parameters.AddWithValue("@CODIGO", ListView2.Items(I).Text)
cmd.Parameters.AddWithValue("@NOMBRE", ListView2.Items(I).SubItems(1).Text)
cmd.Parameters.AddWithValue("@TURNO", ListView2.Items(I).SubItems(2).Text)
cmd.CommandType = CommandType.Text
cnx.Open()
cmd.ExecuteNonQuery()
cnx.Close()
Next I
End Sub
Pueden ayudarme a optimizar o mejorar o como estoy usando esta bien, gracias
Esta bien utilizado, pero por ejemplo el campo codigo en la base de datos, deberia ser un numero entero si no quieres poner un codigo tipo "ASA10B", ya que a la hora de hacer consultas es mas rápido, y lo de utilizar los comandos evita la inyeccion sql, pero para mayor seguridad y que no se te salgan de rango o de tipo prueba con:
cmd.Parameters.Add("@NOMBRE", OleDbType.VarChar, 40)
cmd.Parameters("@NOMBRE").Value = "Juan luis gomez"
El 40 define la anchura máxima del campo de la base de datos y OleDbType.VarChar el tipo de datos que almacena.
Por que en el caso de que el nombre ocupe mas de 40 caracteres y en la base de datos este configurado así, saltará un error que podras controlar.
Un saludo!!
Otro asunto que podes tener en cuenta es no utilizar "Select * From" pues solo estas utilizando los campos nombre,codigo,turno, haz el select asi "Select Nombre,Codigo,Turno From" esto optimiza el acceso a datos.
Atentamente,
Juan Manuel Lombana
Medellín - Colombia