Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-10-2005
Leonardo Leonardo is offline
Miembro
 
Registrado: ago 2004
Posts: 37
Poder: 0
Leonardo Va por buen camino
detener actualizacion o cancelar el post

Existe una manera de detener una actualizacion si se esta utilizando un datanavigator para las modificaciones del dataset, por ejemplo tengo pensado mostrar un mensaje antes de que se actualize cierto registro y dependiendo de si la persona esta de acuerdo enactualizar que se actualize si no que se cancele la actualizacion.
Responder Con Cita
  #2  
Antiguo 14-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No tengo mucha experiencia en ese control, así que, te pido disculpas si la respuesta no fuera acertada. En fin. ¿Qué tal si estuvieras pendiente del evento "OnClick" del "TDbNavigator", de tal manera que comprobaras el botón (pulsado) que te interese y actuar en consecuencia a partir de ahí? Quiere decirse algo así:

Código Delphi [-]
  procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
  begin
    if Button = nbPost then
    begin
      if MessageDlg('¿Quieres actualizar?', mtConfirmation, mbOKCancel, 0) = 1 then
        // De acuerdo, actualizemos
      else
        // Está bien, cancelemos
    end;
  end;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 14-10-2005 a las 00:58:22. Razón: Corrección del texto.
Responder Con Cita
  #3  
Antiguo 14-10-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Leonardo
Existe una manera de detener una actualizacion si se esta utilizando un datanavigator para las modificaciones del dataset, por ejemplo tengo pensado mostrar un mensaje antes de que se actualize cierto registro y dependiendo de si la persona esta de acuerdo enactualizar que se actualize si no que se cancele la actualizacion.
En estos caso, muchas veces los más prolijo es pensar únicamente en la acción (lo marcado en negritas) y no en la causa de ésta (el dbnavigator).

Dicho de otra forma, generalmente lo importante aquí es cancelar (o no) la actualización del registro, independientemente de cómo se intenten guardar los cambios. De esta manera dependes menos de la interfaz de usuario.

Para ello es conveniente pensar, no en tal o cual control en particular, sino en el dataset asociado.

En este caso, cuentas con el evento BeforePost que se genera cuando el motor está a punto de mandar los cambios a la base:

Código Delphi [-]
const
  Flags = MB_ICONQUESTION or MB_YESNO;

begin
  if Application.MessageBox('¿Desea guardar los cambios?', 'Confirmar', Flags) = idNo then
  begin
    DataSet.Cancel;
    abort;
  end;
end;

// Saludos
Responder Con Cita
  #4  
Antiguo 14-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno, eso es justo lo que yo quería decir, lo que pasa es que... lo que pasa es que... lo que pasa.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 17-10-2005
Leonardo Leonardo is offline
Miembro
 
Registrado: ago 2004
Posts: 37
Poder: 0
Leonardo Va por buen camino
Gracias roman eso era justo lo que necesitaba
Responder Con Cita
  #6  
Antiguo 05-12-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 17
FelipeDiaz Va por buen camino
Hola

Tenia esta misma Duda, y lo implemento asi como esta descrito... pero, cuando se ejecuta el Dataset.cancel;

Me manda una excepcion, diciendo que el dataset,no esta en modo insercion o Edicion.

Estare haciendo algo mal?

Todo se esta operando desde el DB NAvigator.


Saudos.
__________________
El Calentamiento Global acabara con la tierra. No mas Barreras, No mas Guerras, No mas discrimiancion, No mas violencia, No mas indiferencia, No mas terrorismo, No mas secuestros. !Valoremos la vida!
Responder Con Cita
  #7  
Antiguo 05-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por FelipeDiaz Ver Mensaje
Tenia esta misma Duda, y lo implemento asi como esta descrito... pero, cuando se ejecuta el Dataset.cancel;

Me manda una excepcion, diciendo que el dataset,no esta en modo insercion o Edicion.

Estare haciendo algo mal?

Todo se esta operando desde el DB NAvigator.
Seguramente lo estas haciendo en el AfterPost del DataSet, cuando deberia ser en el BeforePost
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #8  
Antiguo 05-12-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 17
FelipeDiaz Va por buen camino
Hola jhonny

Nooo, Lo estoy haciendo en el BeforePost, estaba seguro pero igual revisé y si es alli.
__________________
El Calentamiento Global acabara con la tierra. No mas Barreras, No mas Guerras, No mas discrimiancion, No mas violencia, No mas indiferencia, No mas terrorismo, No mas secuestros. !Valoremos la vida!
Responder Con Cita
  #9  
Antiguo 05-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por FelipeDiaz Ver Mensaje
Nooo, Lo estoy haciendo en el BeforePost, estaba seguro pero igual revisé y si es alli.
Entonces agregale lo siguiente para verificar que al momento de hacer el Cancel, el Dataset este en modo Edit o Insert y nos contas como te va:

Código Delphi [-]
const
  Flags = MB_ICONQUESTION or MB_YESNO;
begin
  if Application.MessageBox('¿Desea guardar los cambios?', 'Confirmar', Flags) = idNo then
  begin
    if (DataSet.State in [dsEdit, dsInsert]) then
    begin
      DataSet.Cancel;
      abort;
    end;
  end;
end;
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #10  
Antiguo 05-12-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 17
FelipeDiaz Va por buen camino
jhonny que pena

Que pena Jhonny,

Resulta que al principio lo habia hecho asi y ya había probado la alternativa que me dabas, pero se me hizo igual haber utilizado la instrucción EXIT; en lugar de Abort;

Ese era el detalle, Que pena... Tenias razon!!.

Muchas Gracias!!
__________________
El Calentamiento Global acabara con la tierra. No mas Barreras, No mas Guerras, No mas discrimiancion, No mas violencia, No mas indiferencia, No mas terrorismo, No mas secuestros. !Valoremos la vida!
Responder Con Cita
  #11  
Antiguo 05-12-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Bueno, pues que bien que ya funciona el asunto .

P.D: roman ¿donde estasss? .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #12  
Antiguo 16-12-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 17
FelipeDiaz Va por buen camino
Smile Hola Jhonny

Hola Jhonny.

Nuevamente vuelvo con este problema.

Mira antes yo no tenia que preguntarle al usuario si el queria cancelar o no, dentro del evento BeforePost. y me funcionó.

Ahora llegue a una parte donde si debo preguntarle en el BeforeDelete, y resulta que al colocar la intruccion:

Código Delphi [-]
 If Application.MessageBox('Desea eliminar la tabla de comisiones actual', 'Confirmar', Flags) = idNo then

o esta otra :

Código Delphi [-]
If MessageDlg('Desea eliminar la tabla de comisiones actual',
    mtConfirmation, [mbYes, mbNo], 0) = mrYes then

Resulta que el compilador no reconoce ni "Application" ni "mrYes" y me aseguré de tener la unidad Dialogs en la declaracion USES.

Ando en una plicación que la quiero hacer bien robusta, y cada dos dias es un error que me para el trabajo. y eso que al principio me leí La Cara Oculta de Delphi, pero cuando llega el momento de programar, no recuerdo haber visto sobre el tema.

Bueno, volvi a este hilo porque recorde que en la solucion que planteaste le preguntabas al usuario.... me disculpas no habia visto el P.D. Yo me encuentro en Bucaramanga.

Saludos y nuevamente gracias.


Felipe Diaz
__________________
El Calentamiento Global acabara con la tierra. No mas Barreras, No mas Guerras, No mas discrimiancion, No mas violencia, No mas indiferencia, No mas terrorismo, No mas secuestros. !Valoremos la vida!
Responder Con Cita
  #13  
Antiguo 16-12-2007
FelipeDiaz FelipeDiaz is offline
Miembro
 
Registrado: may 2007
Posts: 75
Poder: 17
FelipeDiaz Va por buen camino
DISCULPA Jhonny

JHONNY, QUE PENA OTRA VEZ..
En mi deseseperacion por crear un mensaje, no me habia fijado que el evento mismo manda un mensaje automatico que confirma el borrado.

Gracias.
__________________
El Calentamiento Global acabara con la tierra. No mas Barreras, No mas Guerras, No mas discrimiancion, No mas violencia, No mas indiferencia, No mas terrorismo, No mas secuestros. !Valoremos la vida!
Responder Con Cita
Respuesta



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
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:31:21.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi