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
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...!
mira, aqui lo agregue en mi codigo, porfavor ayudenmmeeee :-(
(http://img85.imageshack.us/i/errorgh.jpg/)
me bota un error: error de compilación; etiqueta no definida :huh:
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
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.
porfavor amigos ayudenme ..... mira adecuense a mi codigo, la verdad q lo q me falta es algo sencillo para ustedes ... tan solo me falta que el usuario quue hace un nuevo registro no deje campos en blanco ayudenmeeee plis :-( :-( :-(
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
bno para q me salga todo lo que tenia que hacer era omitir On Error GoTo ErrorSub
Cita de: leliCabello en 22 Mayo 2010, 02:27 AM
porfavor amigos ayudenme ..... mira adecuense a mi codigo, la verdad q lo q me falta es algo sencillo para ustedes ... tan solo me falta que el usuario quue hace un nuevo registro no deje campos en blanco ayudenmeeee plis :-( :-( :-(
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
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.
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?
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
Ok, Ok, por alguna razón no vi el Exit Sub, pero siguiendo tal caso, solo diría que falta por llenar el Text2, pero entonces el Text3 que?, tendría que volver a darle clic en cmdGuardar, para que mostrará que el Text3 también esta vacío?
En Visual Studio .NET hay controles como ErrorProvider, en Visual Basic no existen?
si, le tendrias que dar al boton otra vez....digamos que te va validando por nivel...se puede hacer que te diga todos los que estan incompletos al dar click solo una vez, te tendrias que crear un string que se valla llenando en cada IF que entra...pero ya es otro trabajo...igualmente yo por lo menos lo que hago tambien es poner asteriscos rojos al lado del los campos obligatorios (como hacen la mayotria de los formularios de registro de las paginas web), o sea que aparte de tener la validacion tenemos los asteriscos que el usuario lo ve facilmente, y si el usuario con esa validacion y los asteriscos ya se olvida de llenar algun campo...entonces ya es medio tonto :xD
saludos.
eso es cierto ;) ______ gRaCias por este debate tan entretenido, me ayudaron mucho ;D
oigan y si el usuario deja en blanco los datos de un datagrid, en caso de q tendrian q llenar datos en un datagrid, como seria???? ...... asi????? bno esta mal creo :huh:
If dgDatos.Columns(0).DataField = "" Then
MsgBox "Debe adicionar un servicio", vbExclamation, "Datos incompletos"
dgDatos.SetFocus
Exit Sub
End If
la verdad he trabajado muy poco con el control datagrid, lo he reemplazado casi sin pensarlo por el MSHFlexgrid es mucho mas personalizable y queda mejor en la interfaz, yo creo que todos los programadores prefieren por arriba el MSHFlexgrid que el datagrid.
me imagino que lo que estaras tratando de hacer, es que el usuario pueda ingresar manualmente los datos al datagrid y asi se inserten en la base directamente, por lo menos yo cuando quiero ingresar un registro nunca lo he realizado de ese modo directo, prefiero hacerme una pantalla de ABM, donde al hacer click en un registro me carga una nueva pantalla con los datos del registro seleccionado, porque si llegas a tener 50 campos, no creo queda efectivo que el usuario tenga que cargar todos esos datos en la grilla...aparte de la forma que yo te digo es como hacen la mayoria de los sistemas, por ejemplo, si tenes clientes que agregar, en una pantalla pones una grilla donde te lista todos los clientes..al hacer click en un registro te aparece una ventana con los datos del cliente para poder editarlo...esta pantalla de paso tambien te sirve para agregar uno nuevo , y despues que agreges el nuevo lo ves en la grilla de la anterior pantalla:
fijate esta pantalla por ejemplo de ABM de clientes:
ABM Clientes (http://www.imagosur.com/imagenes/capturas/BO/ABM%20Clientes%20de%20Administrativa.jpg)
saludos.
Lo mejor que puede hacer es usar el MSHFlexgrid, sino pues el grandioso ListView... Con la clase de leandro lo hace editable si desea, pero por lo general no me gusta que las grillas se editen, sino que sean informativas...! Pero ya depende de su criterio..!