Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2011
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Detener acción del DataSet

Hola Amigos

Estoy creado un programilla que se conecta a MySQL, cuando un campo esta en blanco (null) SQl me devuelve el error informando que no se aceptan campos nulos, hasta ahi esta bien, pero este error me termina la aplicacion, entonces deseo crear una funcion que determine primero si hay algun campo vacio, de ser cierto entonces que me muestre un mensaje inducandomelo y que detenga la accion post, sino que no haga nada.

la funcio que cree es esta

Código:
int nullerror ()
        {
                if (DBEdit2->Text == "" || ... || !DBMemo1->Lines... etc)
                {
                        MessageDlg("Algunos campos aun están vacios, por favor llénelos" , mtWarning, TMsgDlgButtons() << mbOK, 0);
                        return 1;
                }
                else
                {
                        return 0;
                }
        }
la llamada a la función la hago en el evento Before Action del DBNavigator

Código:
void __fastcall TForm2::DBNavigator1BeforeAction(TObject *Sender,
      TNavigateBtn Button)
{

AnsiString BtnName;
  switch (Button)
  {
    case nbPost:
    {
        switch (nullerror())
        {
                case 1:
                {
                        //Como detengo el POST ??;
                        break;
                }
        }
        break;
    }
  }
}
hasta ahora funciona perfecto, el problema es que si determina que hay algunos campos vacios no se como detener el post jejeje asi que estoy en las mismas.

Alguna sugerencia ?

gracias de antemano
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #2  
Antiguo 03-08-2011
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
buscando en los archivos encontré esta respuesta de hace ya algún tiempo, con este codigo se detiene el post del data set

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;

Sucede que da un error

Cita:
FELIPEDIAZ

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.
Pues si... eso mismo me pasa a mi en c++ pero bueno mas adelante dio con la solución

Cita:

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!!
Pues bien el cambia ABORT por EXIT excelente ahora bien... como se supone que lo implemente en c++ '¿¿¿ alguna idea ???

En este link esta el hilo del archivo por si desean verlo
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #3  
Antiguo 03-08-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola lmpadron.

Para cancelar el post y evitar el mensaje DataSet not in Edit or Insert mode:
Código:
void __fastcall TForm1::DBNavigator1BeforeAction(TObject *Sender,
      TNavigateBtn Button)
{
  switch (Button){
    case nbPost: {
      switch (nullerror()) {
        case 1:{
           Abort;
        } break;
      }break;
    }
  }
}
Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 04-08-2011
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Muchas gracias, por su ayuda. Me funciono perfecto
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Copiar el contenido de un DataSet a otro DataSet Javi2 Varios 82 22-11-2022 10:26:16
Actualizar un dataset desde otro dataset jafera Conexión con bases de datos 17 19-12-2008 00:57:10
Detener dispositivo USB Saindoft API de Windows 2 28-11-2008 09:26:37
detener la accion de un for douglas OOP 1 09-10-2007 08:31:48
Detener aplicacion trex2000 Varios 4 23-04-2005 00:08:37


La franja horaria es GMT +2. Ahora son las 19:50:12.


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