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.
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
0