Friday, January 05, 2007

Insertar y actualizar datos desde Excel en MS Sql Server

¡Qué horror!... trabajo todo el día en Linux y hoy he publicado dos trabajos hechos sobre Hasefroch... pero de algo tengo que vivir ;)

La idea era la siguiente: necesito actualizar datos en una base de datos MS Sql a partir de datos que ingresé en una planilla electrónica.
Para nuestro caso, una celda contiene el valor del codigo del producto y otra la descripción del mismo a insertar o modificar. Esta macro hace los cambios en la base de datos.

Public Sub ActualizaDescripcion()
Dim Resp, Descr, VlSql, Codigo As String
If Trim(Range("B4").Value) = "" Then
Resp = MsgBox("La descripción en (celda B4) esta vacía", vbCritical, "Error en Descripcion")
Else
Resp = MsgBox("Seguro que desea actualizar la descripcion?", vbYesNo + vbQuestion, "Actualizacion")
If Resp = vbYes Then ' El usuario eligió el botón Sí.
Codigo = Range("A3").Value
Descr = Range("B4").Value

'Revisa si ya existia la descripcion
VlSql = "SELECT Cuantos = Count(invtid) "
VlSql = VlSql & "FROM ASA_InvtDIngles WHERE InvtID = '" & Codigo & "'"

Set RS1 = New ADODB.Recordset
RS1.Open VlSql, ADOCon, , adLockOptimistic
If RS1("Cuantos") > 0 Then
Set RS1 = Nothing
VlSql = "SELECT InvtId, DescrIngles "
VlSql = VlSql & "FROM ASA_InvtDIngles WHERE InvtID = '" & Codigo & "'"
RS1.Open VlSql, ADOCon, , adLockOptimistic
RS1.Fields("DescrIngles") = Descr
RS1.Update
Else
Set RS1 = Nothing
VlSql = "SELECT InvtId, DescrIngles "
VlSql = VlSql & "FROM DescrIngles WHERE InvtID = '" & Codigo & "'"
'Inserta el nuevo registro
RS1.Open VlSql, ADOCon, , adLockOptimistic
RS1.AddNew
RS1.Fields("InvtId") = Codigo
RS1.Fields("DescrIngles") = Descr
RS1.Update
End If
End If
End If
End Sub

Labels: , ,

0 Comments:

Post a Comment

<< Home