border

Miembros:
Mensajes:
Temas:
Online:

Ultimo Miembro:

 
 

  #1 (permalink)  
Antiguo 21-10-2004, 22:03:04
Gran Participación en el Foro
 
Registrado: oct 2004
Posts: 177
dagoba77 Valoración +2
Predeterminado CANCELAR CAMBIOS

Hola nuevamente me encuentro en un apuro


En mi aplicacion la idea es que el ususario pueda cerrar un formulario aun cuando ya haya ingresado datos en algun textbox enlazado a una tabla, ok lo puede hacer , pero... si el usuario no llena todos los campos o se le va una tecla antes de cerrar esta se almacena en la tabla lo cual es un terrible error

Ya probe limpiar los cuadros en querry unload

Text1.text = ""

tambien data1.updatecontrols (que funciona perfecto en keydow con el form abierto)

y de la misma manera data1.recordsourse = ""

y aun asi no me obedece sigue almacenando los datos falsos


De antemano gracias por su ayuda
__________________
voy aprendiendo , siempre
Responder Con Cita
  #2 (permalink)  
Antiguo 21-10-2004, 22:16:51
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.262
J.M.Movilla Valoración +2
Predeterminado

Yo creo que el error estriba en que uses textbox enlazados para hacer lo que pretendes... Eso es peligroso, peligroso... y lo que tú pplanteas es lo mínimo que te puede ocurrir...

No enlaces las cajas de texto, sino que cuando vayas a cerrar el formulario le pones una cuestión de "¿Quieres grabar los cambios realizados?" y a la respuesta afirmativa le haces un
Código:
Adodc1.AddNew 
For n = 0 to Adodc1.FileCount - 1
    Adodc1.Fields(n) = Text1(n).Text + ""
Next
Adodc1.Update
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #3 (permalink)  
Antiguo 21-10-2004, 22:18:07
Gran Participación en el Foro
 
Registrado: oct 2004
Posts: 177
dagoba77 Valoración +2
Predeterminado

Perdon gracias por las intenciones de ayuda pero ya lo resolvi

Código:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Data1.Recordset.MoveLast
Data1.Recordset.Delete

End Sub
tan facil¡¡¡

Aun asi si alguien tiene alguna aportacion o mejor idea se lo agradecere

Saludos¡¡¡
__________________
voy aprendiendo , siempre
Responder Con Cita
  #4 (permalink)  
Antiguo 21-10-2004, 22:30:13
Gran Participación en el Foro
 
Registrado: oct 2004
Posts: 177
dagoba77 Valoración +2
Predeterminado

Hola J.M Movilla:

he seguido su ejemplo y me funciona perfecto exepto la salvedad de que solo se guardan los datos que en ese momento esten a la vista, dicho de otro modo el usuario debe cerrar el formulario cada vez que ingrese un dato y si estos datos es un inventario de almacen entonces la cosa se complica, yo deseo que se pueda ir escribiendo y almacenando de una forma similar a los formularios de accsses lo caul logro sin problema, pero si el usuario ya termino de agregar datos y antes de cerrar el formulario agrega un carcter por error este se guarda tambien, ahora mi ejemplo que postee un poco arriba no me funciona tampoco pues borra el ultimo registro aun cuando este completo

Saludos cordiales
__________________
voy aprendiendo , siempre
Responder Con Cita
  #5 (permalink)  
Antiguo 21-10-2004, 22:39:52
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.262
J.M.Movilla Valoración +2
Predeterminado

Pues es que no entiendo eso de que el usuario tiene que cerrar el formulario cada vez que ingrese un dato... Para mí que eso lo tienes mal panteado... Y si se equivocó al introducir el dato previo, ¿qué hace? ¿cómo da marcha atrás?

Yo te lo planteaba suponiendo que abrías un formulario con todos los textboxes necesarios...

Respecto a que te anula el registro en todos los casos, es lógico... Para evitarlo haz algo como esto

Código:
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) 
Dim nResp as Long
    nResp = MsgBox("¿Desea grabar los datos?", vbYesNo)
    If nResp <> vbYes then
        Data1.Recordset.MoveLast 
        Data1.Recordset.Delete 
    End If
End Sub
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #6 (permalink)  
Antiguo 21-10-2004, 23:02:56
Gran Participación en el Foro
 
Registrado: oct 2004
Posts: 177
dagoba77 Valoración +2
Predeterminado

Muchas gracias su ejemplo esta perfecto¡¡


Pero perdone mi obstinacion ¿no hay una forma de hacer eso mismo sin nececidad de preguntar al usuario?


Digamos si no ha rellenado todos los campos o no ha vuelto el enfoque al primer control?

gracias de antemano
__________________
voy aprendiendo , siempre
Responder Con Cita
  #7 (permalink)  
Antiguo 22-10-2004, 08:21:14
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.262
J.M.Movilla Valoración +2
Predeterminado

Vale!!! Pues a ver cómo te las ingenias para trabajarte una "bandera" que te controle esos detallitos...

Pudieras sustituir la cuestión con algo así:

Código:
Dim n As Integer, lNoVale as Booleam

For n = 0 to NúmerodeBoxes - 1
    If IsEmpty(Text1(n).Text) Then lNovale = True: Exit For
next

If lNovale then Exit Sub

Data1.Recordset.MoveLast 
Data1.Recordset.Delete
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
  #8 (permalink)  
Antiguo 22-10-2004, 20:02:23
Gran Participación en el Foro
 
Registrado: oct 2004
Posts: 177
dagoba77 Valoración +2
Predeterminado

Perdon por tarda respuesta:


Muchas gracias nuevamente estoy estudiando esto del flag y me parece muy interesante, aunque complejo por mi inexperiencia, aun asi continuo con la duda, si llamo a un codigo para cerrar el form por la pulsacion de una tecla es decir:

Código:
Select Case KeyCode
Case vbKeyF2
Data1.UpdateControls
Unload Me
Mis intenciones se realizan perfectamente, no ocurre asi si llamo tal procedimiento desde unload, terminate o querryunload, conozco el orden de estos eventos y el tiempo en que se producen pero me aqueja la duda ¿existe algun evento anterior a estos que actualiza el recrdset antes de limpiar los controles??


Gracias
__________________
voy aprendiendo , siempre
Responder Con Cita
  #9 (permalink)  
Antiguo 22-10-2004, 23:10:40
Avatar de J.M.Movilla
Administrator
 
Registrado: dic 2002
Ubicación: BURGOS - ESPAÑA
Posts: 5.262
J.M.Movilla Valoración +2
Predeterminado

Prepara la salida del formulario siempre por "la misma puerta"

Código:
    Case vbKeyF2 
    Form_Unload (1)
    .....

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Cancel = 1
    CmdCerrar_Click
End Sub

Private Sub CmdCerrar_Click()
    Form_Unload (1)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Data1.UpdateControls 
    Unload Me
End Sub
__________________
José María Movilla Cuadrado
______________________

Visual Basic Videos Programacion Foro Programacion
Tutoriales Programacion Trucos Programacion Codigos Programacion
Responder Con Cita
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último Mensaje
Cancelar la X de un formulario Spawn69 Visual Basic 6.00 1 05-09-2007 17:10:29
VAYA CAMBIOS !!! J.M.Movilla Anuncios & Novedades 5 05-03-2006 18:18:32
Cambios en Programación al pasar de Access a SQL !!! dares_ Visual Basic 6.00 9 11-07-2005 16:30:24
Cambios en www.vb-mundo.com imported_chiaravel Anuncios & Novedades 3 08-07-2005 18:35:41
ProcessBar porque no veo los cambios Gace Visual Basic 6.00 2 13-01-2005 14:48:17


La franja horaria es GMT. Ahora son las 20:54:21.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
A vBSkinworks Design

Alojado en el servicio Premium de Masquewebs | Diseño mejorado por MasqueWebs

right