Autor Tema: no repetir registros?  (Leído 2582 veces)

0 Usuarios y 1 Visitante están viendo este tema.

florazulceleste

  • Bytes
  • *
  • Mensajes: 29
  • Reputación: +1/-0
  • si la vida no te sonrie... hazle consquillas!!
    • Ver Perfil
    • Mantenimiento de Computadoras
no repetir registros?
« 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!!
...vive como si fueras a morir mañana:
   aprende como si fueras a vivir para siempre...

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:no repetir registros?
« Respuesta #1 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.
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:no repetir registros?
« Respuesta #2 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
Me encuentras en YAcosta.com

florazulceleste

  • Bytes
  • *
  • Mensajes: 29
  • Reputación: +1/-0
  • si la vida no te sonrie... hazle consquillas!!
    • Ver Perfil
    • Mantenimiento de Computadoras
Re:no repetir registros?
« Respuesta #3 en: Septiembre 02, 2011, 09:19:09 pm »
funciona perfecto!

MUCHAS GRACIAS, por sus respuestas!!
...vive como si fueras a morir mañana:
   aprende como si fueras a vivir para siempre...