Access - No se porque Falla!!!!!!!!!!!!!!! AYUDA!!!

 
Vista:

No se porque Falla!!!!!!!!!!!!!!! AYUDA!!!

Publicado por Deboh (24 intervenciones) el 12/04/2007 10:51:41
Hola a Todos, vereis...lo que tengo que hacer es: A partir de una mdb que ya tengo con sus fdatos y eso , tengo que crearme otra solo con los datos que yo especifico en la primera mediante código. Para ello me he creado una plantilla base , la cual copio tal cual y luego le paso las tablas que contienen los registros que quiero. Segun unos datos especificados , borro de esas tablas los registros que no se correspondan con los datos. Para ello me he creado un módulo de clase con un función que es:

Public Function VolcarDatos ( Tabla as AccessObject , strPath as string, strcampo as string,strSubSis() as string)
' * tabla:objeto que copio
' * strPath: Ubicasción del nuevo mdb
' * strcampo:campo por el que filtro los datos
'* strsubSis: datos que me servirán para hacer la sentencia sql.

Dim strDelete as string
Dim strAdd as string
Dim i,x as integer
Dim conCopia as new Application

i = iBound(strSubSis)

' Delete que usaré para quedarme con los datos que quiero.
strDelete = "Delete * from " + Tabla.Name + " Where " + strCampo + " Not Like ' "+ strSubSis(0) + "* ' ; "

if i>0 then
For x = 1 to i
strAdd = " and " + strCampo + " Not Like " + strsubSis(x) + "*' "
strDelete = strDelete + strAdd
Next
strDelete = strDelete + ";"
end if

'Abro la mdb que me copio segun la plantilla
ConCopia.OpenCurrentDatabase strPath

'Copio la tabla que me interesa
Docmd.CopyObject strPath, Tabla.Name, acTable, Table.Name

'Aqui está el problema que no entiendo
' ****************************************************************************************
conCopia.CurrentDb.Execute strDelete

'Resulta que funciona correctamente cuando antes de ejecutar el Delete esperas un poco (con un punto de interrupción...no se si me explico...en modo de interrupción antes de ejecutar esa línea paro unos 5 segundos y la ejecuto.) , sino te da un error que dice que no existe la tabla (cosa que es mentira)....pero el código es correcto.....esperando no da errores y funciona exactamente como quiero.....

'*****************************************************************************************

conCopia.CloseCurrentDatabase

End Function

ENTONCES, Mi pregunta es ¿Porque ocurre esto? como puedo solucionarlo? No encuentro un comando exacto que me permita esperar un poco y luego ejecutar la línea ....

Gracias por adelantado.
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:No se porque Falla!!!!!!!!!!!!!!! AYUDA!!!

Publicado por Cristian Vasquez (47 intervenciones) el 13/04/2007 05:40:42
Viejo realmente yo tampoco entiendo cual puede ser el problema, lo que yo haría seria buscar una solucion alternativa porque no creas una consulta acción mas especificamente una de crecion de tablas, esto haria que tuvieras que definir una consulta sql y correrla con el metodo RunSQl del objeto Docmd, una consulta mas o menos asi:

SELECT Tabla1.* INTO NombreNuevo IN 'C:\BaseDatos.mdb' FROM D_Actividades;

Por supuesto la clausula where corre por tu cuenta, pero segun lo que entendi que quieres hacer es mucho mas simple ejecutar una consulta de creacion de tablas que realizar el copiado y despus rellenarla.

Ah si encuentras el porque te esta sucediendo esto me lo cuentas al correo por favor, puede llegar a ser util en el futuro.

Espero haberte ayudado,
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

RE:No se porque Falla!!!!!!!!!!!!!!! AYUDA!!!

Publicado por deboh (24 intervenciones) el 13/04/2007 09:22:28
Hola Cristian, voy a probarlo. Muchas gracias por la ayuda!! Cuando lo pruebe te comento.
Respecto a lo que me ocurría con el delete , es un problema de access que necesita tiempo para procesar los datos....y no puede. Son las esquisiteces de access. No es por fallo de código, es porque access es así de especial. Se soluciona haciendo que se entretenga en otra cosa antes de ejecutar la sql. Yo le puse un bucle for y funciona. Pero tu sugerencia es mucho más eficaz y eficiente asique gracias de nuevo!
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