Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/12/2009, 12:55
vicpal
 
Fecha de Ingreso: noviembre-2009
Mensajes: 26
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Duda cargar fichero ado.net

Buenas noches... :)

Parece que no es tan facil como pensaba, el caso es que el código está preparado para cargar una sola columna tipo

carlos,peres,4659887


lo mio es mas complicado, a parte de tener cabecera, mi excel, cada campo tiene su columna... no se si será muy complicado perdirselo al código... podeis ayudarme?


gracias de antemano...

pego el codigo del windowsapllication :)


Option Explicit On

Imports System.Array
Imports System.IO
Imports System.Data.OleDb

Public Class Form1

Private Sub Button1_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
' inicializar el array para los encabezados de columna
Dim aCol() As String = {"fecha_import", "incidentfile", "VIM", "type", "fecharegistro", "nombre_archivo"}
Dim ofd As New OpenFileDialog()
ofd.ShowDialog()
End Sub

Private Sub Cargar_Csv( _
ByVal lv As ListView, _
ByVal sPathCsv As String, _
ByVal aColumnHeader As String(), _
ByVal sDelimitador As String)
Try

' verificar que la ruta sea correcta
If File.Exists(sPathCsv) = False Then
MsgBox("No se encontró el archivo: " & sPathCsv)
Exit Sub
End If

With lv

.Columns.Clear() ' eliminar todos los encabezados
.Items.Clear() ' eliminar todos los items cargados

' recorre el vector y añade las cabeceras
For i As Integer = 0 To UBound(aColumnHeader)
.Columns.Add(aColumnHeader(i)).ToString()
Next
.View = View.Details ' vista detalle

' Abre el archivo para leer cada línea
Dim sr As New StreamReader(sPathCsv)
Dim aDatos() As String ' vector para el cvs

' recorrer todas las líneas hasta el final del archivo
Do While (sr.Peek >= 0)
' leer la línea y separar los datos con split
aDatos = sr.ReadLine.Split(sDelimitador)

' listview: Añadir los items y SubItems
''''''''''''''''''''''''''''''''''''''''''''''''
Dim Item As New ListViewItem(aDatos(0).ToString)
For i As Integer = 1 To UBound(aDatos)
With Item
.SubItems.Add(aDatos(i).ToString)
End With
Next
.Items.Add(Item)
Loop
sr.Close() ' cierra el streamReader
End With
' error
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
End Try
End Sub

Private Sub Button2_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button2.Click

Try

If lv.Items.Count = 0 Then
MsgBox("No hay datos para agregar", MsgBoxStyle.Information)
Exit Sub
End If

' Inicializar y abrir la conexión a la base de datos
Dim cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=datos.mdb")
cn.Open()

' inicializar el comando para insertar los registros
Dim Comando As New OleDbCommand()
Comando.Connection = cn ' asigna la conexión al OleDbCommand

' Recorrer los items
With lv
For i As Integer = 0 To .Items.Count - 1
' sql
Comando.CommandText = "INSERT INTO " & _
"tContactos(Nombre,Apellido,Telefono) " & _
"Values('" & .Items(i).Text & _
"','" & .Items(i).SubItems(1).Text & _
"','" & .Items(i).SubItems(2).Text & _
"')"
' Ejecutar el sql
Comando.ExecuteNonQuery()
Next
MsgBox("Listo", MsgBoxStyle.Information, "Exportar a Access")
End With
' cierra la conexión
cn.Close()
' errores
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical)
End Try
End Sub

Private Sub Form1_Load( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Button1.Text = "Leer Csv en Listview"
Button2.Text = "Exportar a Ms Aceess"
End Sub

Private Sub lv_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lv.SelectedIndexChanged

End Sub
End Class