Subrutina comparar_cedula
Hice ésta subrutina para comparar la cédula que introduzco por teclado y la que tengo en la bd. Si son iguales me retorna un mensaje de error, pero tengo un error de ejecución, que dice:
EL INDICE O LA CLAVE PRINCIPAL NO PUEDE CONTENER UN VALOR NULL y se ubica en datos.MoveFirst y en datos.MoveNext.
Entra en el WHILE pero no toma en cuenta el IF ???
Les agradezco mucho su ayuda, saludo a todos!!!
Sub comparar_cedula()
datos.MoveFirst
Do While Not datos.EOF
If cedula.Text = datos.Fields("cedula") Then
MsgBox "Ésta cédula ya existe en la Base de Datos. Inténtelo de nuevo con otra cédula.", vbCritical, "ERROR"
blanquear
btnincluir.Enabled = False
btnmodificar.Enabled = False
btneliminar.Enabled = False
btnbuscar.Enabled = False
btnaceptar.Enabled = True
btncancelar.Enabled = True
btnsalir.Enabled = False
nombre.Enabled = True
cedula.Enabled = True
ciudad.Enabled = True
nombre.SetFocus
Exit Do
Else
datos.MoveNext
End If
Loop
End Sub
EL INDICE O LA CLAVE PRINCIPAL NO PUEDE CONTENER UN VALOR NULL y se ubica en datos.MoveFirst y en datos.MoveNext.
Entra en el WHILE pero no toma en cuenta el IF ???
Les agradezco mucho su ayuda, saludo a todos!!!
Sub comparar_cedula()
datos.MoveFirst
Do While Not datos.EOF
If cedula.Text = datos.Fields("cedula") Then
MsgBox "Ésta cédula ya existe en la Base de Datos. Inténtelo de nuevo con otra cédula.", vbCritical, "ERROR"
blanquear
btnincluir.Enabled = False
btnmodificar.Enabled = False
btneliminar.Enabled = False
btnbuscar.Enabled = False
btnaceptar.Enabled = True
btncancelar.Enabled = True
btnsalir.Enabled = False
nombre.Enabled = True
cedula.Enabled = True
ciudad.Enabled = True
nombre.SetFocus
Exit Do
Else
datos.MoveNext
End If
Loop
End Sub
prueba este codigo, no se si estas usando Data,
si asi es usa este codigo
Data1.Refresh
Do While Data1.Recordset.EOF = False
If Data1.Recordset("cedula") = cedula.Text Then
MsgBox (" CEDULA YA EXISTE"), 16, "MENSAJE"
Data1.Recordset.Close
Exit Sub
Else
Data1.Recordset.MoveNext
End If
Loop
Data1.Refresh
Data1.Recordset.AddNew
Data1.Recordset("campotabla") = Val(cedula.Text)
Data1.Recordset.Update
Data1.Recordset.Close
MsgBox "LA CEDULA HA SIDO AGREGADA", 16, "mensaje"
espero que te sirva
si asi es usa este codigo
Data1.Refresh
Do While Data1.Recordset.EOF = False
If Data1.Recordset("cedula") = cedula.Text Then
MsgBox (" CEDULA YA EXISTE"), 16, "MENSAJE"
Data1.Recordset.Close
Exit Sub
Else
Data1.Recordset.MoveNext
End If
Loop
Data1.Refresh
Data1.Recordset.AddNew
Data1.Recordset("campotabla") = Val(cedula.Text)
Data1.Recordset.Update
Data1.Recordset.Close
MsgBox "LA CEDULA HA SIDO AGREGADA", 16, "mensaje"
espero que te sirva
Esta muy bien lo que te dice ccortes
Quizas te aparesca ese error porque la base de datos que estas utilizando tiene algún registro en blanco o estas creando un nuevo registro en el cual no as guardado aun los datos de los campos, si es asi eliminalo antes de realizar la comparacion. tambien puedes realizar la busqueda con Seek, desde luego deberias de tener indexado por el campo cedula y que el campo no sea tipo memo y quizas se tarde menos tiempo
Quizas te aparesca ese error porque la base de datos que estas utilizando tiene algún registro en blanco o estas creando un nuevo registro en el cual no as guardado aun los datos de los campos, si es asi eliminalo antes de realizar la comparacion. tambien puedes realizar la busqueda con Seek, desde luego deberias de tener indexado por el campo cedula y que el campo no sea tipo memo y quizas se tarde menos tiempo
Esta muy bien lo que te dice ccortes
Quizas te aparesca ese error porque la base de datos que estas utilizando tiene algún registro en blanco o estas creando un nuevo registro en el cual no as guardado aun los datos de los campos, si es asi eliminalo antes de realizar la comparacion. tambien puedes realizar la busqueda con Seek, desde luego deberias de tener indexado por el campo cedula y que el campo no sea tipo memo y quizas se tarde menos tiempo
Quizas te aparesca ese error porque la base de datos que estas utilizando tiene algún registro en blanco o estas creando un nuevo registro en el cual no as guardado aun los datos de los campos, si es asi eliminalo antes de realizar la comparacion. tambien puedes realizar la busqueda con Seek, desde luego deberias de tener indexado por el campo cedula y que el campo no sea tipo memo y quizas se tarde menos tiempo
quisiera saber para que se utiliza el SEEK
ya que apenas comienzo a utilizar bd
ya que apenas comienzo a utilizar bd
No tiene mucho sentido utilizar un bucle y rastrear toda una tabla para buscar un registro determinado cuando se puede acceder directamente a ese registro:
bien utilizando un data o un recordset :
data1.recordset.finfirst("celula='" & celula.text & '")
IF data1.recordset.nomatch THEN
'NO EXISTE ...
ELSE
'Existe ..
END IF
bien utilizando una objeto tabla.
datos.seek "=",celula.text
if datos.nomatch then
'No existe
else
'existe
endif
bien utilizando un data o un recordset :
data1.recordset.finfirst("celula='" & celula.text & '")
IF data1.recordset.nomatch THEN
'NO EXISTE ...
ELSE
'Existe ..
END IF
bien utilizando una objeto tabla.
datos.seek "=",celula.text
if datos.nomatch then
'No existe
else
'existe
endif
