Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-07-2017
Tecnofacil Tecnofacil is offline
Miembro
 
Registrado: jun 2015
Posts: 50
Poder: 9
Tecnofacil Va por buen camino
Unhappy Error en DBGrid

No sabia como poner el titulo, básicamente lo que hago es poner dbcheck en dos columnas de un dbgrid, lo que necesito es que al hacer clic en el check de la segunda columna verifique, que si la primer columna esta tildada permita tildar sino que me avise, el problema es que luego del aviso, intento tildar la primer columna y me sigue tirando el mismo mensaje, revise el código y esta bien, en un paso a paso me di cuenta que cuando le doy clic a la columna "autorizado" ( o sea la primera), me sigue tomando como que clique la segunda.
Responder Con Cita
  #2  
Antiguo 10-07-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
pon algo de código, lamentablemente la imagen que has colocado al menos yo, no la puedo ver
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 10-07-2017
Tecnofacil Tecnofacil is offline
Miembro
 
Registrado: jun 2015
Posts: 50
Poder: 9
Tecnofacil Va por buen camino
en la primer columna tengo un tilde "autorizado" al darle clic se ejecuta este codigo
Código Delphi [-]
    if Column.FieldName='auto' then      // Se le doy clic al check que se encuentra en la columna 'Autorizado'
      begin
        if fdq_maestroauto.value = 1 then //Si esta tildado pregunto
          begin
            if Application.MessageBox('El pedido aún no esta autorizado, Confirma?','Atención',MB_YESNO)=id_yes then
              begin
                fdq_maestroauto.value := 0;    // si responde 'Si' destildo
                fdq_maestro.Post;
                Dbgrid1.Repaint;
              end;
            end
          else    //Si no esta tildado pregunto
            begin
              if Application.MessageBox('El pedido ya esta autorizado o no requiere CAI, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroauto.value := 1; //Si responde si Tildo
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end;
        end;

Hasta ahí todo bien, la idea es que al darle clic al segundo check, de la segunda columna sería, verifique si el primer check esta tildado, o mejor dicho, si el valor del campo "auto" es 1.
Código Delphi [-]
      if Column.FieldName='armado' then
        begin
          if fdq_maestroarmado.value = 1 then
            begin
              if Application.MessageBox('El pedido aún no esta armado, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroarmado.value := 0;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end
          else
            begin
              if fdq_maestroauto.Value = 1 then // verifico si el campo anterior esta tildado
                begin
                  if Application.MessageBox('El pedido ya esta armado, Confirma?','Atención',MB_YESNO)=id_yes then
                    begin
                      fdq_maestroarmado.value := 1;
                      fdq_maestro.Post;
                      Dbgrid1.Repaint;
                    end;
                end
                else
                begin
                  MessageBox(0, 'El pedido figura como "No autorizado"', 'ATENCIÓN', MB_ICONWARNING or MB_OK);
                  DBGrid1.Refresh;
                end;
            end;
          end;

Tambien funciona de mil maravillas, pero... si luego de que se ejecute este código le doy de nuevo a la primer columna, (FieldName = 'auto'), me vuelve a mostrar el mensaje de que no esta autorizado, y en el paso a paso corrobore que en esta linea de código
Código Delphi [-]
 if Column.FieldName='auto' then
El valor de FieldName es = 'armado' en lugar de ser 'auto' que es la columna que estoy dándole clic. Es como si la variable FieldName no se actualizara.
Imágenes Adjuntas
Tipo de Archivo: png 2017-07-10_09h23_13.png (8,0 KB, 11 visitas)

Última edición por Tecnofacil fecha: 10-07-2017 a las 17:53:30.
Responder Con Cita
  #4  
Antiguo 10-07-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
en que evento se esta ejecutando ese código?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 11-07-2017
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Hola Tecnofacil,

Esto posible que tengas que hacer un "fdq_maestro.Edit" antes de asignar ningún valor y después hacer un "fdq_maestro.Post", no veo que estes editando el registro.

Un Saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber.
Responder Con Cita
  #6  
Antiguo 11-07-2017
Tecnofacil Tecnofacil is offline
Miembro
 
Registrado: jun 2015
Posts: 50
Poder: 9
Tecnofacil Va por buen camino
Oscarac; en el evento OnCellClick (DBGrid1CellClick), pero me parece Olbeup (Pueblo) tiene razón, el edit esta al principio del código y el Post al final, pero dependiendo de la situación la verificación se lleva a cabo antes de que se haga el Post, de allí el problema, no puse el código entero porque es bastante extenso todo ese evento, (de allí que se me cruzan los cables).
Responder Con Cita
  #7  
Antiguo 11-07-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Tecnofacil Ver Mensaje
no puse el código entero porque es bastante extenso
Pues no podemos adivinar , así que tendrás que ponerlo, y si es muuuuuuy grande, comprímelo a zip y lo adjuntas
Responder Con Cita
  #8  
Antiguo 11-07-2017
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.009
Poder: 20
oscarac Va por buen camino
Cita:
Empezado por Tecnofacil Ver Mensaje
Oscarac; en el evento OnCellClick (DBGrid1CellClick), pero me parece Olbeup (Pueblo) tiene razón, el edit esta al principio del código y el Post al final, pero dependiendo de la situación la verificación se lleva a cabo antes de que se haga el Post, de allí el problema, no puse el código entero porque es bastante extenso todo ese evento, (de allí que se me cruzan los cables).
ahhhh pues.....
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #9  
Antiguo 12-07-2017
Tecnofacil Tecnofacil is offline
Miembro
 
Registrado: jun 2015
Posts: 50
Poder: 9
Tecnofacil Va por buen camino
Les dejo el código a ver si pueden detectar algun error que se me pase. Cada columna tiene un checkbox, si le doy clic a la segunda columna verifica si la primera no esta tildad me impide tildar la segunda, el problema es que luego al intentar tildar la primera me sigue mostrando el mensaje y al depurar veo que me sigue tomando como si el clic se hizo en la segunda columna. (Hago clic en 'auto' y me dice que se hizo clic en 'armado'

Código Delphi [-]
procedure TF_Pedidosproceso.DBGrid1CellClick(Column: TColumn);
begin
  fdq_maestro.Edit;
    if Column.FieldName='auto' then      // Si le doy clic al check que se encuentra en la columna 'Autorizado'
      begin
        if fdq_maestroauto.value = 1 then //Si esta tildado pregunto
          begin
            if Application.MessageBox('El pedido aún no esta autorizado, Confirma?','Atención',MB_YESNO)=id_yes then
              begin
                fdq_maestroauto.value := 0;    // si responde 'Si' destildo
                fdq_maestro.Post;    //Grabo
                Dbgrid1.Repaint;
              end;
            end
          else    //Si no esta tildado pregunto
            begin
              if Application.MessageBox('El pedido ya esta autorizado o no requiere CAI, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroauto.value := 1; //Si responde si Tildo
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end;
        end;

      if Column.FieldName='armado' then
        begin
          if fdq_maestroarmado.value = 1 then
            begin
              if Application.MessageBox('El pedido aún no esta armado, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroarmado.value := 0;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end
          else
            begin
              if fdq_maestroauto.Value = 1 then // verifico si el campo anterior esta tildado
                begin
                  if Application.MessageBox('El pedido ya esta armado, Confirma?','Atención',MB_YESNO)=id_yes then
                    begin
                      fdq_maestroarmado.value := 1;
                      fdq_maestro.Post;
                      Dbgrid1.Repaint;
                    end;
                end
                else
                begin
                  MessageBox(0, 'El pedido figura como "No autorizado"', 'ATENCIÓN', MB_ICONWARNING or MB_OK);
                  close;
                end;
            end;
          end;

        if Column.FieldName='original' then
          begin
            if fdq_maestrooriginal.value = 1 then
              begin
                if Application.MessageBox('Original aún no esta listo, Confirma?','Atención',MB_YESNO)=id_yes then
                  begin
                    fdq_maestrooriginal.value := 0;
                    fdq_maestro.Post;
                    Dbgrid1.Repaint;
                  end;
              end
              else
              begin
               if Application.MessageBox('Original listo, Confirma?','Atención',MB_YESNO)=id_yes then
                 begin
                   fdq_maestrooriginal.value := 1;
                   fdq_maestro.Post;
                   Dbgrid1.Repaint;
                 end;
              end;
          end;

        if Column.FieldName='chapa' then
          begin
            if fdq_maestrochapa.value = 1 then
              begin
                if Application.MessageBox('Chapa aún no esta lista, Confirma?','Atención',MB_YESNO)=id_yes then
                  begin
                    fdq_maestrochapa.value := 0;
                    fdq_maestro.Post;
                    Dbgrid1.Repaint;
                  end;
              end
              else
              begin
                if Application.MessageBox('Chapa lista, Confirma?','Atención',MB_YESNO)=id_yes then
                  begin
                    fdq_maestrochapa.value := 1;
                    fdq_maestro.Post;
                    Dbgrid1.Repaint;
                  end;
              end;
          end;
        if Column.FieldName='impreso' then
        begin
          if fdq_maestroimpreso.value = 1 then
            begin
              if Application.MessageBox('El pedido aún no esta Impreso, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroimpreso.value := 0;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end
          else
            begin
              if Application.MessageBox('Pedido listo, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroimpreso.value := 1;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end;
        end;
        if Column.FieldName='armado2' then
        begin
          if fdq_maestroarmado2.value = 1 then
            begin
              if Application.MessageBox('El pedido aún no fue armado, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroarmado2.value := 0;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end
          else
            begin
              if Application.MessageBox('Armado final listo, Confirma?','Atención',MB_YESNO)=id_yes then
                begin
                  fdq_maestroarmado2.value := 1;
                  fdq_maestro.Post;
                  Dbgrid1.Repaint;
                end;
            end;
        end;
  end;
Por lo pronto lo que hago es cerrar el form y forzar la liberación de esas variables
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
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
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error en DBGrid? identsoft Conexión con bases de datos 7 23-07-2008 09:57:26
Error en dbgrid alopete Varios 2 23-05-2008 08:18:57
Error recorriendo dbgrid Petolansa Varios 3 31-10-2007 11:12:44
raro error en dbgrid nikotina Varios 2 02-08-2007 10:15:59
Error en Dbgrid Nbull Conexión con bases de datos 6 10-04-2006 14:49:13


La franja horaria es GMT +2. Ahora son las 20:31:50.


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