Problema con un formulario y vaidacion con registros

Buenas tengo un par de problemas el primero es que quiero que cuando le de a cerra en el formulario me mande un mensaje donde me diga que si desea guardar los cambios este es mi código:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
respuesta = MsgBox("¿Desea guardar cambios?", vbYesNoCancel)
Select Case respuesta
Case vbYes
Data_Tarjeta.UpdateRecord
Data_Tarjeta.Refresh
Unload Me
Case vbNo
Unload Me
Case vbCancel
Cancel = 1 'Esto cancela el fin del programa
End Select
End Sub
Cuando le doy si guardar sin problema, el caso es que cuando le doy no igual me guardar entonces no estoy haciendo nada si igual guarda, hay alguna manera de hacerlo gracias de antemano...
El otro es que necesito validar un registro existente en una base de datos access, es decir que no se duplique el campo primcipal de la tabla, creo que con sentencias sql se puede pero no he podido. Si me puedes ayudar te lo agradecería...

1 respuesta

Respuesta
1
Modifica el select case y usa un If en vez del select... recuerda que el if y el msgbox pueden ir en una misma linea.
Ya pude resolver pero a hora necesito validar un registro es decir que no se me duplique el campo primcipal de una tabla mostrándome un error en vb se que se puede hacer con sql
Bueno es bastante simple, primero realizas una consulta sql buscando el campo que no deseas duplicar(me imagino que es para que al grabar no te marque error de duplicado en campo llave).
Por ejemplo: si tienes una conexión adodb (si usas ADO es lo mismo pero en la propiedad sourse del ADO)
dim rs as new ADODB.recorset
dim cn as new ADODB.connection
cn.provider"microsoft jet 4.0..."
cn.open rutadelabd\bd1.mdb
VarSql= "Select * from TblAlumnos where (Id='Idbuscado')"
rs.open VarSql, cn
if rs.recorcount=0 then
<span style="white-space: pre;"> </span>'no hay registros con ese id
else
<span style="white-space: pre;"> </span>'encontro al menos un registro en la consulta sql
end if
donde cn es la conexion a la BD (referencia ADOBD.conection)
y rs es un ADODB.recorset 
SI usas ADO validas el resultado de manera similar ya se mediante algún ciclo
adodc1. recorset.movefirst
while NOT adodc1. EOF
<span style="white-space: pre;"> </span>'valida si encuentra el campo
<span style="white-space: pre;"> </span>if adodc1.recorset = ID then
<span style="white-space: pre;"> </span>end if
<span style="white-space: pre;"> </span>adodc1.recorset.movenext
wend
Disculpa si me equivoco en la sintaxis, solo es para darte la idea:
Consultar si ya existe el campo, y si es así pues lo ideal es incrementar tu valor hasta encontrar alguno que no este en la BD, pero eso ya deende de tu conexión a la BD, en lo personal he programado con ADODB que es un objeto en una variable más fácil de programar que un ADODC pero este ya es otro tema.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas