You are on page 1of 5

0

Inicie sesin para votar

"VALIENTE_ACERO" escribi:
> Ahora estoy tratando de mirar como puedo insertar los datos que tengo
> en ese listbox a una base de datos que tengo en Acces 2010.
>
> la ideas es cargarle todos las fechas que tengo en el listbox a una
> tabla que se llama LABOR de la BD llamada TURNOS
Hola:
Si ests utilizando una base de datos de Access, sea de la versin 2010, 2013 o
inferior a stas, tendrs que utilizar el proveedor de datos .NET para OLEDB, en lugar
del proveedor de datos .NET para SQL Server, ya que con ste ltimo, indudablemente
vas a obtener un error. ;-)
Asimismo, te aconsejo encerrar el cdigo entre un bloque Try ... End Try, a fin de
capturar los posibles errores que se puedan producir.
Imports System.Data.OleDb
' Si no hay elementos en el control ListBox,
' abandonamos el procedimiento.
'
If (ListBox1.Items.Count = 0) Then Return
Try
' Establecemos la conexin con la base de datos
' de Access 2010. Especifica correctamente la ruta
' donde se localiza tu base de datos.
'
Using cnn As New OleDbConnection( _
"Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=Turnos")
' Abrimos la conexin.
'
cnn.Open()
' Construimos la consulta SQL de datos aadimos
' que vamos a ejecutar para insertar nuevos
' registros.
'

Dim sql As String = _


"INSERT INTO Labor (NombreCampo) VALUES (?)"
' Conforme recorremos los elementos del control
' ListBox, vamos aadiendo nuevas filas a la tabla.
'
For Each item As String In ListBox1.Items
' Creamos el comando
Using cmd As OleDbCommand = cnn.CreateCommand()
cmd.CommandText = sql
' Le aadimos el parmetro, previa conversin
' del valor a DateTime, siempre y cuando el
' tipo de dato del campo de la tabla sea Fecha/Hora.
'
cmd.Parameters.AddWithValue("", Convert.ToDateTime(item))
' Ejecutamos el comando
cmd.ExecuteNonQuery()
End Using
Next
End Using
Catch ex As Exception
' Se ha producido un error
'
MessageBox.Show(ex.Message)
End Try
Doy por hecho que TODOS LOS VALORES existentes en el control ListBox se pueden
convertir al tipo de dato DateTime, es decir, que son fechas correctas.
Si por casualidad el tipo de dato del campo de la tabla es alfanumrico (Texto),
entonces no es necesaria la conversin al tipo de dato DateTime, por lo que puedes
aadir el valor del parmetro as:
cmd.Parameters.AddWithValue("", item)
En ste caso no se puede decir que ests trabajando con fechas, aunque los valores
parezcan "fechas"; ests trabajando con valores de texto. ;-)
Un saludo

>>>> Amigo trabaje con su codigo en mi proyecto de esta forma;


Private Sub Button7_Click(ByVal sender As System.Object, ByVal e AsSystem.
EventArgs) Handles guardar_List.Click

If (listNombres.Items.Count = 0) Then Return


Try
Using cnn As New OleDbConnection("
Provider=Microsoft.ACE.OLEDB.12.0;Data
Source=C:\parqueadero.accdb")
cnn.Open()
Dim sql As String = _
"INSERT INTO turnos(detalle)values(listNombre)"
For Each item As String In listNombres.Items
Using cmd As OleDbCommand = cnn.CreateCommand()
cmd.CommandText = sql
cmd.Parameters.AddWithValue("",
Convert.ToDateTime(item))
cmd.ExecuteNonQuery()
End Using
Next
End Using
Catch ex As Exception
MessageBox.Show(ex.Message)

End Try

End Sub
>>>> pero al momento de ejcutar el codigo me sale un error asi=

NOTA: Mi DB se llama parqueadero, la tabla a la que voy a ingresar los datos se


llama turnos, y tiene un solo campo que se llamadetalle.
COLABOREME, NECESITO GUARDAR LOS DATOS QUE TENGO EN EL LISTBOX..
POR FAVOR, NO SE QUE PROBLEMA TENGO

"VALIENTE_ACERO" escribi:
> POR FAVOR, NO SE QUE PROBLEMA TENGO
El problema que tienes es que en tu mensaje inicial NO DIJISTE que el control
ListBox ESTABA ENLAZADO A UN ORIGEN DE DATOS, de ah que supuse que habas
aadido "manualmente" las fechas a dicho control.
> La conversin del tipo 'DataRowView' en el tipo 'String' no es vlida.
>
> la tabla a la que voy a ingresar los datos se llama 'turnos',
> y tiene un solo campo que se llama 'detalle'.

Si el campo 'detalle' es del tipo Fecha/Hora, cambia la lnea


> For Each item As String In listNombres.Items
por sta otra:
For Each item As DataRowView In listNombres.Items
Y siempre que el campo 'Detalle' exista en el origen de datos al que has enlazado
el control ListBox, en lugar de aadir el valor al parmetro de sta manera:
> cmd.Parameters.AddWithValue("", Convert.ToDateTime(item))
hzlo de sta otra manera:
Dim fecha As DateTime = Convert.ToDateTime(item.Row("Detalle"))
cmd.Parameters.AddWithValue("", fecha)
Se comprende que el campo 'Detalle' se podr convertir a un valor de Fecha/Hora,
porque de no ser as, seguramente obtendrs otro tipo de error.
Y la prxima vez, explica bien desde un primer momento todos los detalles
necesarios para que se te pueda ayudar de una manera rpida y satisfactoria. De
acuerdo? ;-)

You might also like