Error de compilación

14/07/2010 - 18:58 por isidorodos | Informe spam
Buenas tardes:

Después de actualizar un campo hago que se busque el valor en una
tabla y si existe me avise con un mensaje, el código siguiente me ha
funcionado sin ningún problema desde hace años pero estoy actualizando
el formulario y desde hace unos días me salta el siguiente error
despues de actualizar el campo

Error de compilación, no se ha definido la variable

La línea que da el error es Set mibd = CurrentDb()

y el código que estoy usando es el siguiente:

Dim sSQL As String
sSQL = "SELECT * FROM articulos"
Set mibd = CurrentDb()
Set rsRegistros = mibd.OpenRecordset(sSQL, dbOpenDynaset)
If rsRegistros.RecordCount > 0 Then
Do While Not rsRegistros.EOF
If Me.idarticuloa = rsRegistros!idarticuloa Then
MsgBox "EL CÓDIGO DE ARTÍCULO YA EXISTE EN LA TABLA
ARTÍCULO, ELIJA OTRO CÓDIGO DE ARTÍCULO", vbInformation
Me.idarticuloa.SetFocus
Me.Undo
Exit Do
End If
rsRegistros.MoveNext
Loop
End If

No tengo muchos conocimientos de programación pero no se que está
pasando.

¿Alguna ayuda?

Utilizo Access 2002

Gracias y un saludo

Preguntas similare

Leer las respuestas

#1 jorge hector vega
15/07/2010 - 14:33 | Informe spam
Antes de la linea del error falto declarar la variable:

Dim mibd as Database

Y también tenes que declarar rsRegistros:

Dim rsRegistros as DAO.Recordset

Si no quieres hacer las declaracion de variables hay que eliminar la
siguiente línea al principio del código:

Option Explicit

Saludos.
Respuesta Responder a este mensaje
#2 isidorodos
16/07/2010 - 09:05 | Informe spam
Ok, jorge:

Muchísimas gracias, no recuerdo por qué, pero al principio del código
de todos mís formularios estoy indicando la opción de Option Explicit,
y de ahí viene el fallo.

Un millón de gracias.
Respuesta Responder a este mensaje
#3 Emilio
16/07/2010 - 09:51 | Informe spam
¡Importante!: Colabora con el grupo. Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
Hola!

"no recuerdo por qué, pero al principio del código
de todos mís formularios estoy indicando la opción de Option Explicit,
y de ahí viene el fallo."

Esa es la médida mas inteligente que puedes tomar (utilizar Option
Explicit), aunque ello conlleve algún problema colateral, como que se
produzcan errores de compilación por variables no declaradas, se resuelve
ese pequeño detalle y te ahorrarás muchos disgustos.

Saludos a todos
Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio

"isidorodos" escribió en el mensaje
news:
Ok, jorge:

Muchísimas gracias, no recuerdo por qué, pero al principio del código
de todos mís formularios estoy indicando la opción de Option Explicit,
y de ahí viene el fallo.

Un millón de gracias.
Respuesta Responder a este mensaje
#4 isidorodos
16/07/2010 - 13:30 | Informe spam
Gracias Emilio:

Qué gano con utilizar Option Explicit y dime algún ejemplo de problema
o disgusto que me evito al requerir la declaración de variables.

Me pica el gusanillo :) y perdón por mí ignorancia...

Gracias de nuevo y un saludo.
Respuesta Responder a este mensaje
#5 Emilio
16/07/2010 - 14:07 | Informe spam
¡Importante!: Colabora con el grupo. Contesta a este mensaje
y dinos si te sirvió o no la respuesta dada. Muchas gracias
Por ejemplo, no declaras la variable strCliente y trabajas con ella, hasta
que en un determinado momento cometes uns falta de ortografía y en lugar de
escribir strCliente escribes srtCliente, VBA no te va a avisar de tu error
pero el proceso va a fallar y te costará mucho trabajo encontrar el error,
si hubieras utilizado Option Explicit al compilar te avisaría de toodos y
cada unos de los errores ortográficas.

Además una debida declaración de variables, es decir con los debidos
tiempos, hace que el proceso sea mucho mas rápido,

prrueba este código y lo comprobarás

' esta tarda muuucho
Public Sub Prueba1()
Dim i, _
j, _
lngEmpieza As Single

lngEmpieza = Timer
For i = 1 To 100000000
j = i + j
Next

Debug.Print Timer - lngEmpieza
End Sub


' esta casca por que la variable j está mal dimensionada y
' no cabe en ella el resultado (5,00000005E+15)
Public Sub Prueba2()
Dim i As Long, _
j As Long, _
lngEmpieza As Single

lngEmpieza = Timer
For i = 1 To 100000000
j = i + j
Next

Debug.Print Timer - lngEmpieza
End Sub


' esta tarda mucho menos
Public Sub Prueba3()
Dim i As Long, _
j As Double, _
lngEmpieza As Single

lngEmpieza = Timer
For i = 1 To 100000000
j = i + j
Next

Debug.Print Timer - lngEmpieza
End Sub

Saludos a todos
Emilio [MS-MVP Access 2006/10]
miliuco56 ALGARROBA hotmail.com
http://www.mvp-access.com/foro
http://www.mvp-access.es/emilio

"isidorodos" escribió en el mensaje
news:
Gracias Emilio:

Qué gano con utilizar Option Explicit y dime algún ejemplo de problema
o disgusto que me evito al requerir la declaración de variables.

Me pica el gusanillo :) y perdón por mí ignorancia...

Gracias de nuevo y un saludo.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida