Actualizar base en excel

15/07/2003 - 01:43 por Octavio Diaz | Informe spam
Hola amigos:

Me conecto a un archivo de excel para actualizar algunos
campos, el codigo funciona pero cuando abro el archivo de
excel no ha hecho ningun cambio el codigo es el siguiente:

Set pADOConnection = New ADODB.Connection
pADOConnection.ConnectionString
= "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & sFile & ";" & _
"Extended Properties=""Excel
8.0;HDR=YES;"""

pADOConnection.Open

Set pADORecordset = New ADODB.Recordset
pADORecordset.CursorLocation = adUseClient
pADORecordset.CursorType = adOpenDynamic
pADORecordset.LockType = adLockBatchOptimistic
pADORecordset.Open "Select * from [hoja1$] where
DEPURADO = 'ND'", pADOConnection
call Save_Register

Private Sub Save_Register()
pADORecordset("DEPURADO") = "OK"
pADORecordset("nombreP") = Trim(UCase(txtNombre.Text))
pADORecordset("paterno") = IIf(txtPaterno.Text
= "", " ", Trim(UCase(txtPaterno.Text)))
pADORecordset("materno") = IIf(txtMaterno.Text
= "", " ", Trim(UCase(txtMaterno.Text)))
pADORecordset("nombre") = Trim(UCase(txtNombre.Text))
& " " & Trim(UCase(txtPaterno.Text)) & " " & Trim(UCase
(txtMaterno.Text))
pADORecordset.Update
End Sub


Supuestamente graba los cambios, pero no es asi, espero
alguien pueda sugerirme algo.

Preguntas similare

Leer las respuestas

#1 Softjaen
15/07/2003 - 15:40 | Informe spam
"Octavio Diaz" escribió:

Me conecto a un archivo de excel para actualizar algunos
campos, el codigo funciona pero cuando abro el archivo de
excel no ha hecho ningun cambio el codigo es el siguiente:




Hola, Octavio:

Aparte de lo que te ha comentado Víctor B., al utilizar cursores del lado
cliente (CursorLocation = adUseClient), el tipo de cursor siempre será
«adOpenStatic», si utilizas el proveedor «Microsoft.Jet.OLEDB.4.0», aunque
hayas especificado otro tipo de cursor en la propiedad «CursorType». Aparte,
con el citado proveedor, el tipo de cursor nunca será «adOpenDynamic».
Prueba a utilizar las siguientes propiedades:

pADORecordset.CursorLocation = adUseClient
pADORecordset.CursorType = adOpenStatic
pADORecordset.LockType = adLockOptimistic

Un saludo

Enrique Martínez
[MS MVP - VB]
Respuesta Responder a este mensaje
#2 Octavio Diaz
15/07/2003 - 19:25 | Informe spam
Utilizo ahora las dos recomendaciones

updatebatch y adOpenstatic y sigue igual, sin embargo
incremente un parametro IMEX=3 y ahora si ya guarda los
cambios, obviamente mi aplicacion esta diseñada para
utilizarla con varios archivos y ahora mi problema es que
algunos archivos los deja dañados.

Espero alguna sugerencia, gracias.

Octavio
Respuesta Responder a este mensaje
#3 Softjaen
16/07/2003 - 16:42 | Informe spam
"Octavio Diaz" escribió:

Utilizo ahora las dos recomendaciones
updatebatch y adOpenstatic y sigue igual, sin embargo
incremente un parametro IMEX=3 y ahora si ya guarda los
cambios, obviamente mi aplicacion esta diseñada para
utilizarla con varios archivos y ahora mi problema es que
algunos archivos los deja dañados.



Hola, Octavio:

Desconozco el motivo por el que se te dañan algunos archivos, ya que ésto no
debería de suceder.

Si utilizas el método «UpdateBatch» entiendo que estás guardando en caché
los cambios efectuados en los registros para actualizarlos por lotes cuando
llames al citado método. Si no deseas utilizar el modo de actualización por
lotes, modifica el valor de la propiedad «LockType» del objeto «Recordset» y
utiliza el tipo de bloqueo optimista (pADORecordset.LockType adLockOptimistic), de ésta forma, los datos se modificaran cuando invoques
al método «Update».

En cuanto al parámetro «IMEX = 3», ignoro lo que realiza dicho valor, porque
que yo sepa, los valores que puede tomar el parámetro «IMEX», son los
siguientes:

0 - modo de Exportación
1 - modo de Importación
2 - modo de Vinculación (completa capacidad de actualización)

Aparte, debes de ser cuidadoso en utilizar el parámetro «IMEX», sobretodo en
el modo de «importación», porque los resultados obtenidos pueden ser
impredecibles, por lo que puede ser el motivo de que se te dañen los
archivos, aunque no estoy seguro porque, repito, no sé la función que
realiza el valor «IMEX = 3».

Si deseas más información sobre dicho parámetro, así cómo la manera de
trabajar con el ISAM de Excel y la biblioteca de ADO, échale un vistazo al
siguiente artículo:

Trabajar con ADO, DAO y Excel
http://es.geocities.com/softjaen/Ar..._excel.htm

Un saludo.

Enrique Martínez
[MS MVP - VB]
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida