Error con XLS y VB-ADO

25/09/2003 - 19:21 por Saga | Informe spam
Va de nuez!
Maldito Swen...

Hola!!

Tengo una aplicacion que abre un XLS para leer datos de inventario. Ha
funcionado chorrocientas veces sin ningun problema, pero ayer presento
un error. El error que presenta indica que no encontro el objeto
"hjInventario", que es el nombre de una hoja.

Mi codigo es el siguiente:

Nota: strCarpeta y strArchivo se reciben como parametros a esta rutina.

strConn = "Driver={Microsoft Excel Driver (*.xls)}; " & _
"DriverIdy0; Dbq=" & strArchivo & _
"; DefaultDir=" & strCarpeta & ";"

Set xlsADO = New ADODB.Connection

With xlsADO
.ConnectionString = strConn
.CursorLocation = adUseClient
.ConnectionTimeout = 60
.CommandTimeout = 120
.Open
End With

If xlsADO.State = adStateOpen Then
'Set rs = New ADODB.Recordset

'Set rs = xlsADO.OpenSchema(adSchemaTables)
'While Not rs.EOF
' Debug.Print rs!TABLE_NAME
' rs.MoveNext
' Wend


strX = "SELECT * FROM ""hjInventario"""

Set rs = New ADODB.Recordset

With rs
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
'En la linea siguiente es donde me da el error.
.Open strX, xlsADO, , adLockOptimistic, adCmdText
End With

Como notan, en comentarios, tengo un OpenSchema para ver que pasa dentro del
XLS. Para mi sorpresa, el OpenSchema encontro dos "tablas" en los XLSs
anteriores:

hjInventario$ y hjInventario.

El XLS del problema solo tiene una: hjInventario$ Por que????

Abri el XLS con Excel y efectivamente tiene una hoja cuyo nombre es
hjInventario, pero por alguna razon esta "tabla" no la ve el openschema de
ADO. En este momento abri un XLS anterior, seleccione todo, borre,
copie el contenido del XLS con el problema y guarde. Al volver a probar
funciono bien, pero esto fue solo para salir del apuro. Me gustaria saber
que otra medida necesito tomar, ya que el usuario de la aplicacion no puede
estar haciendo este movimiento todos los dias.

Les agradezco su tiempo y cualquier recmendacion que me puedan hacer...
Gracias!!!

Saga
PD: Este mensaje lo mande a microsoft.public.es.excel y
microsoft.public.es.vb

Preguntas similare

Leer las respuestas

#1 Softjaen
26/09/2003 - 06:03 | Informe spam
"Saga" escribió:

Va de nuez!
Maldito Swen...




Jejeje. Ésta es la tercera vez que respondo a tu mensaje. Espero que lo
puedas leer.


tengo un OpenSchema para ver que pasa dentro del
XLS. Para mi sorpresa, el OpenSchema encontro
dos "tablas" en los XLSs anteriores:

hjInventario$ y hjInventario.

El XLS del problema solo tiene una: hjInventario$
Por que????




No es una sorpresa. «hjInventario$» es el nombre de la
hoja y «hjInventario» seguramente es el nombre de un rango
de igual nombre al de la hoja de cálculo.

Si tu escribes «"SELECT * FROM ""hjInventario"""», estás
seleccionando las columnas del rango con nombre, no las
columnas de la hoja de cálculo. Para ello, deberías de
añadir el símbolo $ al nombre de la hoja (hjInventario$).

Échale un vistazo al artículo que tengo publicado sobre el
ISAM de Excel, concretamente al punto número 4. Allí
también encontrarás abundante información y ejemplos:

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

Un saludo.

Enrique Martínez
[MS MVP - VB]
Respuesta Responder a este mensaje
#2 Saga
26/09/2003 - 18:13 | Informe spam
Ya lo vi... gracias!!

Tengo poca informacion de lo sucedido del lado donde se genera este archivo
pero segun entiendo, actualizaron su version de Excel, asi que esto pudo
haber provocado un ligero cambio de la estructura del archivo XLS.

Lo resolvi eliminado el nombre de la hoja del estatuto SQL, ahora abro un
Schema de tablas y busco entre los objetos encontrados uno que tenga 11
columnas y al encontrarlo uso ese nombre para el nombre de la tabla dentro
del SELECT.

Esto no funciona si se les ocurre cambiar el numero de columnas, pero si
hacen
eso, entonces nos tienen que decir para saber como procesar ese cambio de
columnas, asi que por lo menos el usuario de la applicacion esta contenta
;-)

Gracias... y te felicito por el articulo, pues esta muy completo.
Saga

"Softjaen" wrote in message
news:uXfefM%

"Saga" escribió:
>
> Va de nuez!
> Maldito Swen...
>

Jejeje. Ésta es la tercera vez que respondo a tu mensaje. Espero que lo
puedas leer.

>
> tengo un OpenSchema para ver que pasa dentro del
> XLS. Para mi sorpresa, el OpenSchema encontro
> dos "tablas" en los XLSs anteriores:
>
> hjInventario$ y hjInventario.
>
> El XLS del problema solo tiene una: hjInventario$
> Por que????
>

No es una sorpresa. «hjInventario$» es el nombre de la
hoja y «hjInventario» seguramente es el nombre de un rango
de igual nombre al de la hoja de cálculo.

Si tu escribes «"SELECT * FROM ""hjInventario"""», estás
seleccionando las columnas del rango con nombre, no las
columnas de la hoja de cálculo. Para ello, deberías de
añadir el símbolo $ al nombre de la hoja (hjInventario$).

Échale un vistazo al artículo que tengo publicado sobre el
ISAM de Excel, concretamente al punto número 4. Allí
también encontrarás abundante información y ejemplos:

Trabajar con ADO, DAO y Excel
http://es.geocities.com/softjaen/Ar...ado_dao_ex
cel.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