Problema con código VBA en versión Access 2010

Quiero pedirte el favor de que si me ayudas con lo siguiente:Tengo una base de datos que se llama Calificador.mdb
(Versión 2000 o 2003) y aquí la aplicación con el código VBA funciona bien
(Sirven los botones y todo), pero al convertirla a Access 2010 para poder
realizar el archivo .mde o .Accde a pesar de lograr convertirla se me presenta
el serio problema de que la aplicación no me funciona,, me marca errores
en el código VBA ¿Qué debo de hacer, para que funcione bien en Access
¿2010?

1 Respuesta

Respuesta
1

En primer lugar, para crear un archivo mde no te hace falta convertir la BD a access 2010.

Dicho esto, poco hay que te pueda decir sobre el problema que comentas. La única solución es ir viendo donde te falla el código y solucionarlo caso por caso (hay propiedades y métodos que cambian de una versión a otra)

Siento no tener mejores noticias que darte.

Hola muchas gracias por la respuesta, aunque le comemto que desafortunadamente si se necesita convertir la bases de datos que están en formato 2000 o 2003 a 2007 o 2010 para crear que quede como mde o accde, es un requerimiento de access,que no se por que lo exija pero lo exige.

En cuanto al código vba tengo estos dos inconvenientes que pese a depurarlos y ver el código una y otra zez no se de donde procede el error, las lineas de código en donde aparecen l,es errores están comentariadas con negrilla:

Private Sub
CmdAsignar_Click()
If DCount("NRC1",
"Tabla_Pregunta") > 0 Then
Dim SQLERASER As String
SQLERASER = "Delete from
Tabla_Pregunta"
CurrentDb.Execute SQLERASER
Me.Refresh
End If
Dim que, N, Nmax, Nmin As Integer
Dim i, l, NRC, Npreg As Integer
Nmax =
Me.TxtMax
'Materias valor predeternminado 50
Nmin =
Me.TxtMin
Materias valor predeternminado 10
Npreg =
Me.TxtPregunta
N = 10
Materias
'l = 0
For i = 1 To Npreg + 1
que = (Nmax - Nmin) / Npreg
N = N + que
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Select * from
Tabla_Pregunta")
rst.AddNew
rst!NRC1 = i - 1
rst!NOTA = N - que
rst.Update
Next i
Me.Refresh
Dim BASE As Database
Dim y As Recordset
Dim y1 As Recordset
Set BASE = CurrentDb
''''''''''''''''''''''''''''''
CALCULA TOTALES POR INSUMO ''''''''''''''''''''
Set y = BASE.OpenRecordset("SELECT
* FROM Tabla_Pregunta;")
With y
Do While Not .EOF
.Edit 'Aquí esta el problema dice el error: Error de compilación No se encontró el
‘ 'método o dato miembro
.Update
.MoveNext
Loop
End With
End Sub
Segundo error:
Private Sub Identificarse_Click()
Dim dbs As Database
Dim rstpassword As Recordset
Dim bfoundMatch As Boolean
Set dbs = CurrentDb
Set rstpassword =
dbs.OpenRecordset("qryUserPwd") 'aqui esta el error dice que no coinciden los tipos
bfoundMatch = False
If rstpassword.RecordCount > 0
Then
rstpassword.MoveFirst
' checkiar registros almacenados
Do While rstpassword.EOF = False
If rstpassword![Usuario] = Form_Contraseña.Txtusuario And
rstpassword![Contraseña] = Form_Contraseña.Txtcontraseña Then
bfoundMatch = True
Exit Do
End If
rstpassword.MoveNext
Loop
End If
If bfoundMatch = True Then
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "SOFTWARE
CALIFICADOR Menu"
Else
Dim adv As
Integer
adv =
MsgBox("Nombre de usuario o contraseña falsa", vbCritical,
"CDT")
Forms![Contraseña]![Txtusuario] = ""
Forms![Contraseña]![Txtcontraseña] =
""
Forms![Contraseña]![Txtusuario].SetFocus
End If
End Sub

Gracias y muy amable por su atención!.

En primer lugar, repito que no es necesario convertir la BD a access 2007 o 2010 para crear un archivo mde. Sí lo es si lo que quieres es crear un archivo accde.

Los formatos de archivo de access 2000/2003 son los mdb y mde, mientras que cuando salió access 2007, se cambió a accdb y accde, formato que se mantiene para access 2010 y 2013.

Los archivos accde y mde no son más que archivos accdb y mdb que se abren de un modo especial, sin permitir crear/modificar informes/formularios, sin acceso a los módulos de código...

Por tanto, un mde se crea a partir de un mdb y un accde a partir de un accdb, por lo que no es necesario cambiarle el formato a una versión superior (si no ¿cómo se hacía antes de que aparecieran access 2007?)

En cuanto a los errores de código que te dan, creo que sé por donde van los tiros:

1º/ Fíjate que tengas registrada la librería Microsoft DAO x.y Object Library. Si no es así, actívala (igual tienes que desactivar esta otra: Microsoft Office x.y Acces Database Engine Object Library)

2º/ Si esto no te soluciona el problema, declara las variables de esta manera: Dim y As DAO.Recordset, Dim BASE As DAO. Database, y así con todas.

Y otra cosa: aqúi parece que te falta algo, entre el .Edit y el .Update...

Do While Not .EOF
. Edit 'Aquí esta el problema dice el error: Error de compilación No se encontró el
‘ 'método o dato miembro
.Update

Ya me contarás.

Gracias Sveinbjorn, la cuestión era poner DAO.recordset y DAO.database en el código ademas de habilitar en referencias lo que me habías comentado

Saludos y muchas gracias de nuevo!.

Att.Ing. Hernán Camilo Martínez

Bogotá D.C -Colombia.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas