Visual Basic - Update e Insert

Life is soft - evento anual de software empresarial
 
Vista:

Update e Insert

Publicado por Manuel Calvo (10 intervenciones) el 12/04/2006 21:58:03
Hola a todos tengo una pregunta:
Yo hize una rutina que actualiza los precios de unos productos de una bd obteniendo los datos desde excel lo que necesito es saber que datos no estan en la bd pero si en excel para que esos datos los agrege a mi tabla.
En pocas palabra si los datos estan actualizalos y si no agregalos
sub Actualiza
CmUpdate1.CommandText = "update Catalogo set precio=? where codig=?"
Dim rsX As ADODB.Recordset
Set cnn = New ADODB.Connection
If nombrefichero = "" Then
MsgBox "No se ha Seleccionado un Archivo", vbCritical, "SUFASOFT"
Else
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & nombrefichero & ";" & _
"Extended Properties=""Excel 8.0;HDR=yes;"""
Set rsX = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
End With
i = 1
rsX.Open "SELECT Codigo,Precio FROM [JANABRIL$]", cnn, adOpenStatic, adLockOptimistic
Do While Not (rsX.EOF)
CmUpdate1(0) = rsX!Precio
CmUpdate1(1) = rsX!Codigo
CmUpdate1.Execute
rsX.MoveNext
i = i + 1
Loop
MsgBox "Se Actualizaron " & i & " Datos Exitosamente", vbOKOnly, "SUFASOFT"
end sub
esto me actualiza mis precios en la bd pero como se que el producto con codigo="123456" con un precio="150" existe, y si no existe que lo agrege se que para agregar seria un ("Insert catalogo set Codigo=?, Descripcion=?,Empaque=?,Precio=?")
pero no se como decirle que cuando el update no encuentre ese codig pase a insertarlo
espero no los confunda con todo este desastre pero me seria de mucha utlidad eso ya que son mas de 5000 productos los que se actualizan gracias cualquier aportacion es bien recibida

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Update e Insert

Publicado por CristianHM (1 intervención) el 13/04/2006 12:28:34
Hola Manuel! Estuve viendo tu problema, yo creo que la solución es la siguiente:

Deberías tenes declaradas como claves principales los campos "codigo" y "precio" (por lo que entiendo que buscas). Al tener declarado estos campos como claves principales de la tabla, al intentar executar una instrucción INSERT de SQL que contiene datos que ya existen dentro de la tabla, como tenes declarados esos dos campos como claves principales, el codigo te devolverá un error, si los datos no existen, el INSERT cargará el nuevo registro sin problemas.

Deberás hacer un bucle, tratando de insertar con un INSERT cada registro de excel a tu tabla en la BD, si te da error, es porque el registro ya existe, de lo contrario, tendrás un nuevo registro en la tabla.

Espero te ayude esto.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar