Foros del Web » Programación para mayores de 30 ;) » .NET »

Guardar txt delimitado en una base de datos

Estas en el tema de Guardar txt delimitado en una base de datos en el foro de .NET en Foros del Web. Hola a todos Mi problema es el siguiente: Estoy guardando en una base de datos un archivo txt que tiene esta forma: <Factura> 088767,5557,Bueno,contado 088764,6678,Malo,Credito ...
  #1 (permalink)  
Antiguo 31/05/2010, 00:42
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Exclamación Guardar txt delimitado en una base de datos

Hola a todos
Mi problema es el siguiente:
Estoy guardando en una base de datos un archivo txt que tiene esta forma:

<Factura>
088767,5557,Bueno,contado
088764,6678,Malo,Credito

<cliente>
0889767,Max,Excelente,5
0778909,Jose,Full,6

----------------------------------------------------------------
Cada campo separado por comas corresponde a un campo que debo guardar
en la base de datos.
Este es el codigo que he hecho hasta el momento pero no sucede nada

Dim result As DialogResult = OpenFileDialog1.ShowDialog()
Dim rutas As String

If result = DialogResult.OK Then
rutas = OpenFileDialog1.FileName
lectura = My.Computer.FileSystem.ReadAllText(rutas)
End If
Dim datos As String() = lectura.Split(",")

dt = Ds.Tables("Facturas")
dt.Columns.Add("No Factura", Type.GetType("System.String"))
dt.Columns.Add("Codigo del Cliente", Type.GetType("System.String")) 'Asi todas las que necesitesluego hay que llenarla creas una nueva fila
dt.Columns.Add("Codigo del Articulo", Type.GetType("System.String"))
dt.Columns.Add("Descripcion", Type.GetType("System.String"))
dt.Columns.Add("Cantidad", Type.GetType("System.Integer")) 'Aqui me da problemas porque dice que es null
dt.Columns.Add("Precio_Venta", Type.GetType("System.Double"))
dt.Columns.Add("Impuesto", Type.GetType("System.Double"))
dt.Columns.Add("Subtotal sin Imp", Type.GetType("System.Double)"))
dt.Columns.Add("Subtotal_con_Imp", Type.GetType("System.Double)"))

Dim current As DataRow = dt.NewRow()
current("No Factura") = datos(0)
current("Codigo del Cliente") = datos(1)
current("Codigo del Articulo") = datos(2)
current("Descripcion") = datos(4)
current("Cantidad") = datos(5)
current("Precio_Venta") = datos(6)
current("Impuesto") = datos(7)
current("Subtotal sin Imp") = datos(8)
current("Subtotal_con_Imp") = datos(9)
dt.Rows.Add(current)

Da.Update(dt)
dt.AcceptChanges()

Agradeceria su ayuda
  #2 (permalink)  
Antiguo 31/05/2010, 08:33
Avatar de Darkavender  
Fecha de Ingreso: septiembre-2008
Ubicación: SLV
Mensajes: 125
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Guardar txt delimitado en una base de datos

No te saldria mejor cargar el txt a un DataGridView y luego con un ForEach cargar a la BD...
  #3 (permalink)  
Antiguo 31/05/2010, 12:42
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Guardar txt delimitado en una base de datos

Man es k tiene k cargarse de un solo en la base de datos, no puedo vizualizarlo en un datagrid,
para luego pasarlo a la base de datos.
  #4 (permalink)  
Antiguo 31/05/2010, 14:33
Avatar de Darkavender  
Fecha de Ingreso: septiembre-2008
Ubicación: SLV
Mensajes: 125
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Guardar txt delimitado en una base de datos

Cita:
Iniciado por ranchoteca Ver Mensaje
Man es k tiene k cargarse de un solo en la base de datos, no puedo vizualizarlo en un datagrid,
para luego pasarlo a la base de datos.

No necesitas visualizarlo ocultalo...


Tambien puedes usar el BULK
  #5 (permalink)  
Antiguo 31/05/2010, 17:59
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Guardar txt delimitado en una base de datos

Lo intentare a ver como me va, y gracias de antemano
  #6 (permalink)  
Antiguo 31/05/2010, 18:12
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Guardar txt delimitado en una base de datos

Mira me di cuenta de algo:
Los datos son de tablas distintas en un mismo txt, entonces si los guardo
en un datagrid, como lo puedo hacer, si tienen campos diferentes, tanto CLIENTES, como Facturas.
  #7 (permalink)  
Antiguo 01/06/2010, 16:35
Avatar de Darkavender  
Fecha de Ingreso: septiembre-2008
Ubicación: SLV
Mensajes: 125
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Guardar txt delimitado en una base de datos

ut... ahi si lo veo un poco cab....

1- No quieres mostrarlo
2- Debe ser un bolcado masivo de datos

No puedes hacer un volcado masivo pues los datos no son integros

pregunto ¿el txt tiene algun delimitador para saber donde inicia la siguiente tabla?
  #8 (permalink)  
Antiguo 01/06/2010, 18:05
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Guardar txt delimitado en una base de datos

<FACTURAS>
0000079056,VIMU001,001-0005,Teclado Genius,5,6500,4225,32500,36725
0000079056,VIMU001,002-0089,Mouse inhal mbrico,8,3500,3640,28000,31640
0000079056,VIMU001,001-0012,Teclado Logitech,10,8900,11570,89000,100570
0000079056,VIMU001,005-0095,Disco Duro 1 TB,3,45000,17550,135000,152550
0000079056,VIMU001,003-0080,Lector C¢digo barras Metrologic,1,158000,20540,158000,178540
0000079056,VIMU001,001-0001,Teclado IBM,2,12000,3120,24000,27120
0000079057,SIPC005,008-0030,Microprocesador Intel I12,5,940000,611000,4700000,5311000
0000079058,MESI003,001-0012,Teclado Logitech,12,8900,13884,106800,120684
0000079059,PIDP005,010-0001,Tarjeta madre Asus QWERTY,15,38445,74967.75,576675,651642.75
0000079059,PIDP005,010-0003,Tarjeta madre MSI ABCDD111,5,37555,24410.75,187775,212185.75
0000079059,PIDP005,008-0012,Microprocesador Phenom X15,8,67555,70257.2,540440,610697.2
0000079059,PIDP005,001-0012,Teclado Logitech,10,8900,11570,89000,100570

<CLIENTES>
VIMU001,"Vivió y Murió, S.A.","B§ La Cruz que se cayo, 100 mts al sur Bar El¡",Contado,0
SIPC005,"Si Puedo Choriceo, Ltda.",Asamblea Legislativa,Credito,15000556
MESI003,"Me siento mal y peor, S.A.",Hospital,Credito,850000
PIDP005,"Pídame Plata que no te doy, S.A.",Casa presidenta,Contado,2554785.35
  #9 (permalink)  
Antiguo 01/06/2010, 18:06
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Guardar txt delimitado en una base de datos

Todo ese texto dentro de una tabla, y debo ingresar facturas en la tabla facturas y la otra parte en la tabla clientes..
  #10 (permalink)  
Antiguo 01/06/2010, 18:07
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Guardar txt delimitado en una base de datos

Sorry todo el texto dentro de un txt no dentro de una tabla como dije..
  #11 (permalink)  
Antiguo 02/06/2010, 07:31
Avatar de Darkavender  
Fecha de Ingreso: septiembre-2008
Ubicación: SLV
Mensajes: 125
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Guardar txt delimitado en una base de datos

Si tienes las etiquetas solo buscalas y cuando las encuentre que inicie el bulk segun cada parte del texto

StreamReader
  #12 (permalink)  
Antiguo 02/06/2010, 10:02
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Guardar txt delimitado en una base de datos

Ok Amigo lo intentare a ver como me va, muchas gracias por tu ayuda....
  #13 (permalink)  
Antiguo 03/06/2010, 15:57
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Guardar txt delimitado en una base de datos

Man, vieras que k tengo un campo en una tabla de tipo varchar y al ingresar un campo
de esta forma: VMPIU000, no me lo acepta.
Ademas me dice K el BULK no se puede usar porque necesita OLEDB, y estoy trabajando con
SQLCLIENT.

Agradeceria tu ayuda.
  #14 (permalink)  
Antiguo 03/06/2010, 18:57
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Guardar txt delimitado en una base de datos

Man ese problema no se que sea, xq me dice:
Nombre de variable invalida en este contexto.

Solo cuando ingreso desde la aplicacion alguna variable que contenga numeros y letras, xq si lo hago desde la tabla
directamente no me tira ningun error.

Etiquetas: txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:55.