Autor
|
Tema: controles de error (Leído 7,133 veces)
|
leliCabello
Desconectado
Mensajes: 158
|
qtal amigos, miren este es un boton guardar, que ya guarda al darle clik, pero me falta controlar que no guarden datos en blanco, como puedo hacer, ya q si no escojo al cliente se guarda asi .. ayudenme porfassssssS Private Sub cmdGuardar_Click() Dim rs As New ADODB.Recordset If adoDatos.Recordset.RecordCount > 0 Then adoDatos.Recordset.MoveFirst rs.Open "LLAMADAS", cn, adOpenStatic, adLockOptimistic For i = 1 To adoDatos.Recordset.RecordCount rs.AddNew rs("cod_cliente") = adoDatos.Recordset("cod_cliente") rs("cod_tipo") = adoDatos.Recordset("cod_tipo") rs("llamadatipo") = adoDatos.Recordset("llamadatipo") rs("fecha") = Date rs("descripcion") = adoDatos.Recordset("descripcion") rs("cod_usuario") = adoDatos.Recordset("cod_usuario") rs.Update adoDatos.Recordset.MoveNext Next BorraRegistros "TEMPORAL_LLAMADAS", "" adoDatos.Refresh ModoEditar False MsgBox "El registro se guardó con éxito", , "TICOM S.R.L." End If End Sub
|
|
|
En línea
|
|
|
|
ssccaann43 ©
Desconectado
Mensajes: 792
¬¬
|
Primera vez que veo algo asi...!
Amiga usted por casualidad reviso el codigo que le sugeri? Alli le explica como puede guardar, modificar, eliminar, etc...!
|
|
|
En línea
|
- Miguel Núñez Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio... "I like ^TiFa^"
|
|
|
|
leliCabello
Desconectado
Mensajes: 158
|
me bota un error: error de compilación; etiqueta no definida Private Sub cmdGuardar_Click() Dim rs As New ADODB.Recordset If adoDatos.Recordset.RecordCount > 0 Then adoDatos.Recordset.MoveFirst rs.Open "LLAMADAS", cn, adOpenStatic, adLockOptimistic For i = 1 To adoDatos.Recordset.RecordCount rs.AddNew rs("cod_cliente") = adoDatos.Recordset("cod_cliente") rs("cod_tipo") = adoDatos.Recordset("cod_tipo") rs("llamadatipo") = adoDatos.Recordset("llamadatipo") rs("fecha") = Date rs("descripcion") = adoDatos.Recordset("descripcion") rs("cod_usuario") = adoDatos.Recordset("cod_usuario") rs.Update adoDatos.Recordset.MoveNext Next BorraRegistros "TEMPORAL_LLAMADAS", "" adoDatos.Refresh ModoEditar False MsgBox "El registro se guardó con éxito", , "TICOM S.R.L." On Error GoTo ErrorSub If Trim(cboClientes.Text) = "" Then MsgBox "No se ha indicado el cliente", vbCritical, "Datos incompletos" cboClientes.SetFocus Exit Sub
End If End If End Sub
|
|
|
En línea
|
|
|
|
seba123neo
|
Hola, leliCabello , cuando haces algo como "On Error GoTo ErrorSub" tambien tenes que crear la etiqueta, ahi solo la definiste, pero nunca la creaste, busca esto porque es de manual...aparte no es por ofender ni nada por el estilo, pero al codigo lo veo algo confuso...tendrias que definir arriba de todo la etiqueta y el pedazo de codigo que chequea el cliente debe ir antes de ingresar los registros, no tiene logica chequearlo despues de que ya ha sido ingresado, aparte si eso ocurre seguro te tira error porque no existe el codigo...tampoco hagas esto "As New" es por un tema de rendimiento y de posibles errores. mejor primero lo declaras con As y despues le haces el Set (como con cualquier objeto).
saludos.
|
|
|
En línea
|
|
|
|
|
leliCabello
Desconectado
Mensajes: 158
|
bno para q me salga todo lo que tenia que hacer era omitir On Error GoTo ErrorSub
|
|
|
En línea
|
|
|
|
seba123neo
|
eso es facil, tendrias que poner un chequeo antes de ejecutar el codigo que guarda los registros, algo asi lo haria yo. Private Sub cmdGuardar_Click() On Error GoTo ErrorInsertar If txtCodCliente.Text = "" Then MsgBox "Debe Ingresar un Codigo de Cliente", vbExclamation txtCodCliente.SetFocus Exit Sub End If If txtCodTipo.Text = "" Then MsgBox "Debe Ingresar un Tipo de Codigo", vbExclamation txtCodTipo.SetFocus Exit Sub End If Dim rs As ADODB.Recordset 'Declaras el objeto recordset Set rs = New ADODB.Recordset 'Creas el objeto recordset If adoDatos.Recordset.RecordCount > 0 Then adoDatos.Recordset.MoveFirst rs.Open "LLAMADAS", cn, adOpenStatic, adLockOptimistic For i = 1 To adoDatos.Recordset.RecordCount rs.AddNew rs("cod_cliente") = adoDatos.Recordset("cod_cliente") rs("cod_tipo") = adoDatos.Recordset("cod_tipo") rs("llamadatipo") = adoDatos.Recordset("llamadatipo") rs("fecha") = Date rs("descripcion") = adoDatos.Recordset("descripcion") rs("cod_usuario") = adoDatos.Recordset("cod_usuario") rs.Update adoDatos.Recordset.MoveNext Next BorraRegistros "TEMPORAL_LLAMADAS", "" adoDatos.Refresh ModoEditar False MsgBox "El registro se guardó con éxito", , "TICOM S.R.L." End If Exit Sub ErrorInsertar: MsgBox "Se ha producido un error al ingresar los datos", vbCritical End Sub
fijate que por cada campo que necesito chequear voy agregando un bloque IF...yo ahi puse 2 solamente , vos pones todos los que necesites chequear... saludos.
|
|
|
En línea
|
|
|
|
Shell Root
|
No entiendo lo del .SetFocus. Obviamente sé para que sirve y como se usa. Pero dado el caso en el que sean 3 campos y solo inserte el primero. El .SetFocus, se situará dentro del ultimo objeto. Es decir, Text1.Text = "Hola" ' Text Lleno Text2.Text = "" ' Text Vacio Text3.Text = "" ' Text Vacio
En este caso y con tu código el .SetFocus, quedará dentro del Text3 o me equivoco?
|
|
« Última modificación: 24 Mayo 2010, 02:30 am por Alex@ShellRoot »
|
En línea
|
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.
|
|
|
seba123neo
|
supongamos que tiene 3 textbox, y hace esto: If Text1.Text = "" Then MsgBox "Debe Completar el Text1...", vbExclamation Text1.SetFocus Exit Sub End If If Text2.Text = "" Then MsgBox "Debe Completar el Text2...", vbExclamation Text2.SetFocus Exit Sub End If If Text3.Text = "" Then MsgBox "Debe Completar el Text3...", vbExclamation Text3.SetFocus Exit Sub End If
los MsgBox son de ejemplo nomas... sigueindo tu ejemplo Alex...si completa el primero entonces no entra por el primer IF y pasa al segundo...cuando vea el Text2 vacio entra por el segundo IF...posiciona el foco en el Text2...pero el Text3 ni lo valida porque ya encontro el Text2 vacio y sale del Sub...obviamente si se usa este metodo se tiene que poner los IF en orden a los campos que queremos chequear..porque si ponemos que valide primero el text3 antes que el text1 estaria mal... saludos
|
|
|
En línea
|
|
|
|
|
|