Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: florazulceleste en Septiembre 01, 2011, 09:51:23 pm

Título: no repetir registros?
Publicado por: florazulceleste en Septiembre 01, 2011, 09:51:23 pm
Hola... como hago para no volver a guardar un registro que ya existe con el mismo RNP (codigo unico de mi pais) este es el codigo que tengo para almecenar nuevo registros:

Código: [Seleccionar]
Public Function sqlGrabOficial(rnp As Double, nom As String, zona As String)
sqlGrabOficial = "Insert INTO Oficial (Identidad, Nombre, Zona) " & _
"Values (" & rnp & ", '" & nom & "', '" & zona & "')"
End Function

Private Sub cmdguardar_Click()
BD.BeginTrans
BD.Execute sqlGrabOficial(Val(txtid), txtnom, txtzona)
BD.CommitTrans
MsgBox ("Registro guardado correctamente ")
If rs.State = 1 Then rs.Close
cargarOficial
End Sub

lo almacena bien, el problema es que no se como hacer una "condición" para que no almacene el RNP repetido, que si alguien intenta hacerlo, me de un MsgBox diciendo "ya existe"??

GRACIAS, por tomarse el tiempo de responder!!
Título: Re:no repetir registros?
Publicado por: E N T E R en Septiembre 01, 2011, 10:17:19 pm
Acá lo que tenes que hacer es primero buscar el registro que vas a guardar y si ya existe que tire el msgbox.
Título: Re:no repetir registros?
Publicado por: YAcosta en Septiembre 02, 2011, 12:59:46 am
Es correcto lo que dice Enter. Debes buscar primero antes de insertar, ahora te recomiendo que hagas la buqueda en una funcion que solo te devuelva true o false para que no te enredes con el codigo, Por ejemplo

Código: [Seleccionar]
If RNPRegistrado(txtRNP) Then  'supongamos que tienes el control txtRNP
   MsgBox("RNP ya registrado")
else
   Grabas
End If

Y la funcion seria:

Código: [Seleccionar]
Public Function RNPRegistrado(RNP as Double) As Boolean 
Dim rs As New ADODB.Recordset
sql = "Select Identidad from Oficial Where Identidad = " & RNP    '<-- Si quieres esto lo sacas a una funcion para que lo reutilices
rs.Open sql, dB, 1, 1
if rs.recorcount > 0 then
   RNPRegistrado = true
else
   RNPRegistrado = False
endif
End Public

Para actualizar si tendrías que mandar el id del registro que imagino lo tienes.

Saludos
Título: Re:no repetir registros?
Publicado por: florazulceleste en Septiembre 02, 2011, 09:19:09 pm
funciona perfecto!

MUCHAS GRACIAS, por sus respuestas!!