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

Actualizar Base de Datos con Archivo Excel

Estas en el tema de Actualizar Base de Datos con Archivo Excel en el foro de .NET en Foros del Web. Buenos Dias: tengo un pequeño problema estoy tratando de actualizar una bases de datos, con un archivo excel, esto con la finalidad de hacer una ...
  #1 (permalink)  
Antiguo 07/03/2012, 11:35
 
Fecha de Ingreso: marzo-2012
Mensajes: 11
Antigüedad: 12 años, 1 mes
Puntos: 0
Información Actualizar Base de Datos con Archivo Excel

Buenos Dias:
tengo un pequeño problema estoy tratando de actualizar una bases de datos, con un archivo excel, esto con la finalidad de hacer una carga masiva de datos capturados en una hoja de excel la cual ya cuanta con una estructura igual a la de la base de datos, lo mas que me acerque a esto es lo siguiente:

Public Sub ActualizarBDSTD()

Try


Using objOleConnection = New OleDbConnection( _
"Provider=PervasiveOLEDB;Data Source=PFWENTARI;Location=10.27.17.33;")
objOleConnection.Open()

Dim query As String = "INSERT INTO PLFRCSTD(Itemkey,Locationkey,Forecastkey,Forecastd ate,Forecastqty,Recuresid,Recdate,Rectime) VALUES (@Itemkey,@Locationkey,@Forecastkey,@Forecastdate, @Forecastqty,@Recuresid,@Recdate,@Rectime)"
Dim cmd As New OleDbCommand(query, objOleConnection)

For Each row As DataGridViewRow In frmCargaDG.DGE1.Rows
cmd.Parameters.Clear()

cmd.Parameters.AddWithValue("@ItemKey", CStr(row.Cells("ItemKey").Value))
cmd.Parameters.AddWithValue("@Locationkey", CStr(row.Cells("Locationkey").Value))
cmd.Parameters.AddWithValue("@Forecastkey", CStr(row.Cells("Forecastkey").Value))
cmd.Parameters.AddWithValue("@Forecastdate", CDate(row.Cells("Forecastdate").Value))
cmd.Parameters.AddWithValue("@Forecastqty", CDbl(row.Cells("Forecastqty").Value))
cmd.Parameters.AddWithValue("@ItemKey", CStr(row.Cells("ItemKey").Value))
cmd.Parameters.AddWithValue("@Recuserid", CStr(row.Cells("Recuserid").Value))
cmd.Parameters.AddWithValue("@Recdate", CStr(row.Cells("Recdate").Value))
cmd.Parameters.AddWithValue("@Rectime", CDate(row.Cells("Rectime").Value))

cmd.ExecuteNonQuery()
Next
End Using
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub

pero me arroja el siguiente error...
intento de leer o escribir en la memoria protegida. A menudo, esto indica que hay otra memoria dañada.

ya no se como hacerle para lograr este proyecto si alguien tiene un codigo que me pueda servir se los agradesco...

Esto es otra solucion que vi en internet
Crear una macro que transforme el archivo excel a access y de ahi hacer una Api que actualice la base de datos, pero soy muy novato en esto y no se como hacerlo si necesito ayuda de verdad muchas gracias por su ayuda y colaboracion
de antemano gracias
  #2 (permalink)  
Antiguo 09/03/2012, 11:19
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Actualizar Base de Datos con Archivo Excel

Hola betojasso, te dejo un fragmento de codigo que utilizo para actualizar los datos en una BD desde un DGV, espero te ayude.

Dim update_string As String
Dim codigo As String
Dim nombre As String = ""
Dim plu As String = ""
Dim caducidad As String = ""
Dim u_medida As String = ""
Dim precio As String = ""

With DataGridView1
Try
For i As Integer = 0 To DataGridView1.Rows.Count - 2
codigo = Me.DataGridView1.Rows(i).Cells("Col_Codigo").Value .ToString
nombre = Me.DataGridView1.Rows(i).Cells("Col_Desc").Value.T oString
plu = Me.DataGridView1.Rows(i).Cells("Col_PLU").Value.To String
caducidad = Me.DataGridView1.Rows(i).Cells("Col_Cad").Value.To String
u_medida = Me.DataGridView1.Rows(i).Cells("Col_Med").Value.To String
precio = Me.DataGridView1.Rows(i).Cells("Col_Precio").Value .ToString


update_string = "INSERT INTO T_Articulo(ID_Articulo, Desc_Articulo, plu_Articulo, Caducidad, U_Medida, Precio)" & _
"VALUES(@codigo, @nombre, @plu, @caducidad, @U_medida, @Precio)"

Dim com As New OleDbCommand(update_string, conexion)
com.Parameters.AddWithValue("@codigo", codigo)
com.Parameters.AddWithValue("@nombre", nombre)
com.Parameters.AddWithValue("@plu", plu)
com.Parameters.AddWithValue("@caducidad", caducidad)
com.Parameters.AddWithValue("@U_medida", u_medida)
com.Parameters.AddWithValue("@Precio", precio)


com.ExecuteNonQuery()

Next
MsgBox("Base de Datos Actualizada", MsgBoxStyle.Information)
Me.DataGridView1.Rows.Clear()
Catch
MsgBox("Error al Actualizar", MsgBoxStyle.Critical)
End Try

End With

Comenta si te sirvio, Saludos........
  #3 (permalink)  
Antiguo 09/03/2012, 12:02
 
Fecha de Ingreso: marzo-2012
Mensajes: 11
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Actualizar Base de Datos con Archivo Excel

Hola que tal Emmax..
3 preguntillas...

1.- update_string = "INSERT INTO T_Articulo es el nombre de la tabla de la base de datos ??

2.- Dim com As New OleDbCommand(update_string, conexion)
es la cadena de conexion a la misma Base de datos??

3.- esto actualiza todos los datos del DGView osea pasa todo lo que este en el data grid a la base de datos??

Bueno lo intentare y te informo como salio de antemano gracias por tu ayuda
Saludos cordiales
  #4 (permalink)  
Antiguo 09/03/2012, 13:39
 
Fecha de Ingreso: marzo-2012
Mensajes: 11
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Actualizar Base de Datos con Archivo Excel

Que tal Emmax
me salio error pero no se porque te copio como puse el codigo para que si ves un error me ayudes a corregirlo gracias por tu aportacion

Saludos

Using objOleConnection = New OleDbConnection( _
"Provider=PervasiveOLEDB;Data Source=PFWENTARI;Location=10.27.17.33;")
End Using

Dim update_string As String
Dim Itemkey As String
Dim Locationkey As String = ""
Dim Forecastkey As String = ""
Dim Forecastdate As String = ""
Dim Forecastqty As String = ""
Dim Recdate As String = ""
Dim Rectime As String = ""
Dim Recuserid As String = ""

With frmCargaDG.DGE1
Try
For i As Integer = 0 To frmCargaDG.DGE1.Rows.Count - 2
Itemkey = frmCargaDG.DGE1.Rows(i).Cells("Itemkey").Value.ToS tring
Locationkey = frmCargaDG.DGE1.Rows(i).Cells("Locationkey").Value .ToString
Forecastkey = frmCargaDG.DGE1.Rows(i).Cells("Forescastkey").Valu e.ToString
Forecastdate = frmCargaDG.DGE1.Rows(i).Cells("Forecastdate").Valu e.ToString
Forecastqty = frmCargaDG.DGE1.Rows(i).Cells("Forecastqty").Value .ToString
Recuserid = frmCargaDG.DGE1.Rows(i).Cells("Recuserid").Value.T oString
Rectime = frmCargaDG.DGE1.Rows(i).Cells("Rectime").Value.ToS tring
Recdate = frmCargaDG.DGE1.Rows(i).Cells("Recdate").Value.ToS tring

update_string = "INSERT INTO PLFRCSTD(Itemkey, Locationkey, Forecastkey, Forecastdate, Forecastqty, Recuserid, Recdate, Rectime)" & _
"VALUES(@Itemkey, @Locationkey, @Forecastkey, @Forecastdate, @Forecastqty, @Recuserid, @Recdate, @Rectime)"

cmdText = New OleDbCommand(update_string, objOleConnection)
cmdText.Parameters.AddWithValue("@Itemkey", Itemkey)
cmdText.Parameters.AddWithValue("@Locationkey", Locationkey)
cmdText.Parameters.AddWithValue("@@Forecastkey", Forecastkey)
cmdText.Parameters.AddWithValue("@@Forecastdate", Forecastdate)
cmdText.Parameters.AddWithValue("@Forecastqty", Forecastqty)
cmdText.Parameters.AddWithValue("@Recuserid", Recuserid)
cmdText.Parameters.AddWithValue("@Recdate", Recdate)
cmdText.Parameters.AddWithValue("@Rectime", Rectime)

cmdText.ExecuteNonQuery()

Next
MsgBox("Base de Datos Actualizada", MsgBoxStyle.Information)
frmCargaDG.DGE1.Rows.Clear()
Catch
MsgBox("Error al Actualizar", MsgBoxStyle.Critical)
End Try
End With

Espero me puedas ayudar con este error gracias por tu ayuda :)
  #5 (permalink)  
Antiguo 09/03/2012, 20:26
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Actualizar Base de Datos con Archivo Excel

Que tal betojasso, lo primero, con las preguntas es correcto las respuestas que das, con respecto al error, me podrias decir mas en concreto que error te marca? para poder ayudarte.

saludos...
  #6 (permalink)  
Antiguo 11/03/2012, 04:44
 
Fecha de Ingreso: septiembre-2007
Mensajes: 51
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Actualizar Base de Datos con Archivo Excel

Hola una pregunta, tu base de datos es en SQL??
Si es asi puedes crear un DTS y meter los datos del archivo en la tabla siempre y cuando tengan la misma estructura.
En todo caso lo crearias desde el Enterprise Manager del SQL Server de Microsoft.

saludos!!
  #7 (permalink)  
Antiguo 12/03/2012, 09:18
 
Fecha de Ingreso: marzo-2012
Mensajes: 11
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Actualizar Base de Datos con Archivo Excel

Emmax:
El erro únicamente me dice "Erro al Actualizar",

Sin Nombre.
mi base de datos es de PervasiveSQL segun yo es la misma estructura que el mismo SQL pero no he podido actualizar las bases de datos, investigare si puedo hacer eso del DTS desde el manager de Pervasive SQL

un saludo y gracias por Su apoyo Emmax y "sin Nombre" Anonymus?? jeje
  #8 (permalink)  
Antiguo 12/03/2012, 09:52
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Actualizar Base de Datos con Archivo Excel

Ok betojasso, solo mencionarte que el codigo que te mande es para trabajar con Access, tu lo tendrias que adaptar a SQL, basicamente tendria que ser en la conexion a tu BD, en lugar de usar OleDbConnection seria SQLConnection, creo si mi vista no me falla que lo demas quedaria igual.

Saludos......
  #9 (permalink)  
Antiguo 13/03/2012, 08:33
 
Fecha de Ingreso: marzo-2012
Mensajes: 11
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Actualizar Base de Datos con Archivo Excel

osea que puedo usar conexion con sql y el manejo del OleDb se pude??
Mejor explicado

sqlconection

oledbcomand

se puede de esta manera??
  #10 (permalink)  
Antiguo 14/03/2012, 21:23
Avatar de emmax  
Fecha de Ingreso: agosto-2010
Ubicación: Sonora
Mensajes: 172
Antigüedad: 13 años, 8 meses
Puntos: 8
Respuesta: Actualizar Base de Datos con Archivo Excel

Hola betojasso, mira no he usado Pervasive, la verdad he escuchado no muy buenos comentarios de pervasive, pero bueno ese es otro show, la cosa es que viendo un poco como funciona encontre que lo que tienes que hacer es utilizar el proveedor OLEDB de .NET con la cadena de conexión de Pervasive.

te dejo un enlace en donde puedes ver ejemplos de cadena de conexion para la BD de pervasive.

http://www.connectionstrings.com/pervasive

Saludos......

Etiquetas: net
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 17:04.