Visual Basic - Subrutina comparar_cedula

Life is soft - evento anual de software empresarial
 
Vista:

Subrutina comparar_cedula

Publicado por Mari (9 intervenciones) el 12/12/2002 15:32:03
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
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:Subrutina comparar_cedula

Publicado por Rodolfo del Peru (454 intervenciones) el 12/12/2002 18:28:58
Mari, parece que hoy me toco ayudarte (tambien lo hice en el foro de Crystal).
Te recomiendo hacer la funcion de busqueda como sigue, de esa manera te devolvera True si ya existe y False si no existe.

Function comparar_cedula() as Boolean
Dim xSql As String
xSql = "SELECT * FROM DATOS"
xSql = xSql & "WHERE CEDULA = '" & cedula.Text & "'"
Set rsWork = New ADODB.Recordset
Set rsWork.ActiveConnection = cn
With rsWork
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockReadOnly
.Open xSql
End With
'---
If rsWork.EOF Then
comparar_cedula = False 'No existe, esta bien
Else
comparar_cedula = True 'Existe, esta mal
MsgBox "Ésta cédula ya existe en la Base de Datos. Inténtelo de nuevo con otra cédula.", vbCritical, "ERROR"

'Esto es tu codigo, iria aqui
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
End If
rsWork.Close
Set rsWork.ActiveConnection = Nothing
End Function

Saludos desde Lima
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