Importar archivo delimitado de texto a BDD Access con Visual.NET

Cordiales a todos.

Espero puedan ayudarme con el siguiente tema.

Desde una aplicacion externa los usuarios descargan archivos delimitados de texto y luego los importan a una tabla de Access el codigo que implemente en la BDD fue este:

DoCmd.TransferText acImportDelim, "ProcessCardDeli", "Process_Card_1", Trim(OpenFile.lpstrFile), True

Para importer los datos primero genere una mascara de entrada para poder guarder los datos.

Ahora me veo en la necesidad de guardar los datos en la tabla Access pero usando Visual.NET estoy usando este codigo pero me guarda los datos en una sola columna de la tabla.

Dim cnn As New OleDb.OleDbConnection
        Dim cmd As New OleDb.OleDbCommand
        Dim SQL As String
        cnn.ConnectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Locations\Loc.mdb; Persist Security Info=")
        ' Abrimos la base de datos de Access
        cnn.Open()
        ' Construimos la consulta SQL
        SQL = "SELECT * INTO [Mi_Tabla] FROM " & _
        "[Archivo_Texto.txt] IN ''[TEXT;DATABASE=C:\Locations\]"
        ' Importamos los datos
        With cmd
        .Connection = cnn
        .CommandText = Sql
        .ExecuteNonQuery()
        'End With
        ' Cerramos la conexión
        Cnn. Close()

Tambien he configurado un archive Schema.ini pero me esta marcando este error:

Access to the registry key 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text' is denied.

Podrian ayudarme con este problema por favor hay alguna otra manera de guardar los datos a Access

1 Respuesta

Respuesta
1

Descargan archivos delimitados de texto <- No entiendo,
Es un archivo separado por "comas, puntos, |" ¿o slo es un archivo de texto sin algún tipo de separación?

' Construimos la consulta SQL
SQL = "SELECT * INTO [Mi_Tabla] FROM " & _
"[Archivo_Texto.txt] IN ''[TEXT;DATABASE=C:\Locations\]" <- en esta parte estas leyendo todo el archivo,
no estas diferenciando las separaciones si es que se cuentan.

. ExecuteNonQuery() <- Ejecutas tu query, es una tabla con un campo o varios campos "Columnas".

saludos …
http://www.itixmih.wordpress.com
 jemp_intrepido
 jempdulintre
 jemp_dulce

Gracias Jose.

He podido solucionar el problema de la siguiente manera:

Cree un archive Schema.ini en la misma ubicacion donde esta el archive delimitado de texto, el archivo esta separado por ";" el codigo que estoy usando es este:

 Dim cnn As New OleDb.OleDbConnection
        Dim cmd As New OleDb.OleDbCommand
        Dim SQL As String
        Dim SQLDEL As String
        SetCustomDelimiter(";")
        cnn.ConnectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Locations\Loc.mdb; Persist Security Info=")
        ' Abrimos la base de datos de Access
        cnn.Open()
        ' Construimos la consulta SQL
        SQL = "SELECT * INTO [Mi_Tabla] FROM " & _
        "[Archivo_Texto.txt] IN ''[TEXT;DATABASE=C:\GSD\]"
        SQLDEL = "DELETE FROM Mi_Tabla WHERE [ASM PART ID] ='A'"      
        ' Importamos los datos
        With cmd
            .Connection = cnn
            .CommandText = SQL
            .ExecuteNonQuery()
            .CommandText = SQLDEL
            .ExecuteNonQuery()
        End With
        ' Cerramos la conexión
        cnn.Close()

Solo que tengo un inconveniente, puedo importar el archivo de texto pero que el usuario tenga la opcion de seleccionar el archivo que quiere es decir el Schema.ini lo tengo configurado asi:

[Archivo_Texto.TXT]
ColNameHeader=True
Format=Delimited(;)
Col1="ASM PART ID" Text
Col2="ASM PART NBR" Text
Col3="ECL" Text
Col4="IN PROCESS PART NBR" Text
Col5="IN PROCESS PART ID" Text
Col6="GRP TYPE" Text
Col7="GRP NAME" Text
Col8="CKT NBR" Text
Col9="CKT SUFFIX" Text
Col10="CKT ID" Text
Col11="CABLE PART ID" Text
Col12="CABLE PN" Text
Col13="CABLE COLOR" Text
Col14="CATEGORY 1" Text

El nombre del archivo a importar siempre devera de llamarse "[Archivo_Texto.TXT]? como puedo importar el archivo de texto sin importar como se llame hay alguna opcion seria con el Open File Dialog pero como configuro el Schema.ini para importer los datos, podrias ayudarme experto.

Saludos

Cronoss83

Desconosco actualmente tuc odigo fuente,

Sin ambargo si es posible.

[Archivo_Texto.TXT] <- quita esta validación dentro de codigo.

Y ahora en un openfileDialog, selccioneas cualquier achivo, sin embargo como ya es la selccion del usuario te recomiendo que realices un a validación previa a.

Jose

Ya modifique el Schema.ini e implemente el OpenFileDialog, ¿pero a que te refieres con crear una validación?

Por ejemplo,

Que no se tengan separaciones en los archivos,

Que no sea un archivo txt (tu usuario cambia un excel por un txt) etc...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas