Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bueno, ahí da una explicación de lo que puede estar pasando. Poco más podemos hacer con la no información que das, sin ver código ni tener nada con lo que hacer pruebas.
Responder Con Cita
  #2  
Antiguo 28-09-2018
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Quizas la logica que uso no sea la mas adecuada, por lo que cualquier sugerencia para cambiarla sera aceptada.

El problema es que tengo una tabla prenominas, pero al calcular tengo que dividirla en dos, los miembros de la direccion y los consultores.
Entonces hago dos consultas basadas en prenomina, una para la direccion del area y otra para los consultores de esa area, y los muestro en sus datagrid respectivos.

Al calcular, las formulas de los 2 casos son diferentes, pero la cantidad de salario a distribuir es comun para los dos.

En una ocasion el error me lo dio en la consulta de la direccion de la 2da area, vacie la tabla y despues me lo da en la consulta de los consultores en la 6ta area.

Es decir, que da el error arbitrariamente ??

Este es el codigo que uso en el boton Calcular
Código Delphi [-]
  with ModuloBD do
  begin
    //--- Direccion del Grupo de Trabajo ---
    TDeveng:=0; TAjust:=0; TPenal:=0;
    fdtPrenomGTDir.First;
    fdtPrenomGTDir.DisableControls;
    while not fdtPrenomGTDir.Eof do
    begin
      fdtPrenomGTDir.Edit;
        fdtPrenomGTDirSalarioNeto.Value:=fdtPrenomGTDirSalarioAjust.Value + fdtPrenomGTDirEstimAdic.Value;
        fdtPrenomGTDirEstimulac.Value:=fdtPrenomGTDirSalarioNeto.Value - fdtPrenomGTDirSalarioDeveng.Value;
        // Calcular el formado
        if fdtPrenomGTDirIngresos.Value > 0 then
          SalForm:=fdtPrenomGTDirIngresos.Value * fdtAuxiliarCDSEspPrinc.Value
        else
        begin
          //--- Si es el Esp. Princiapal ---
          if fdtPrenomGTDirIDSUBCAT.Value = 7 then
            if frmSisleg.CantTrabGT > 0 then SalForm:=(fdtIngxGruposMontoADist.Value / frmSisleg.CantTrabGT) * fdtPrenomGTDirSalarioDeveng.Value / fdtPrenomGTDirSalarioBasico.Value
            else SalForm:=0
          //--- Si es la Contadora
          else
            if frmSisleg.CantTrabGT > 0 then SalForm:=(fdtIngxGruposMontoADist.Value / frmSisleg.CantTrabGT) * fdtPrenomGTDirSalarioDeveng.Value / fdtPrenomGTDirSalarioBasico.Value * 50 / 100
            else SalForm:=0
        end;
        fdtPrenomGTDirSalarioFormado.Value:=SalForm;
      fdtPrenomGTDir.Post;
      //--- Totalizar ---
      TAjust:=TAjust + fdtPrenomGTDirSalarioAjust.Value;
      TPenal:=TPenal + fdtPrenomGTDirPenalizacion.Value;
      fdtPrenomGTDir.Next;
    end;
    fdtPrenomGTDir.First;   fdtPrenomGTDir.Refresh;
    fdtPrenomGTDir.EnableControls;
    qryTotPrenomGTDir.Refresh;
    TDeveng:=dbtxtTotSalEsc.Field.Value + dbtxtTotDFer.Field.Value + dbtxtTotOtrosP.Field.Value;
    lblDevengDG.Caption:=FloatToStrF(TDeveng, ffNumber, 6, 2);
    lblSalAjustDG.Caption:=FloatToStrF(TAjust, ffNumber, 6, 2);
    lblTotPenalDG.Caption:=FloatToStrF(TPenal, ffNumber, 6, 2);

    //--- Consultores ---
    fdtPrenomGTCons.Refresh;
    TDeveng:=0; TAjust:=0; TPenal:=0;
    fdtPrenomGTCons.DisableControls;
    fdtPrenomGTCons.First;
    while not fdtPrenomGTCons.Eof do
    begin
      fdtPrenomGTCons.Edit;
        fdtPrenomGTConsSalarioNeto.Value:=fdtPrenomGTConsSalarioAjust.Value + fdtPrenomGTConsEstimAdic.Value;
        fdtPrenomGTConsEstimulac.Value:=fdtPrenomGTConsSalarioNeto.Value - fdtPrenomGTConsSalarioDeveng.Value;
        // Calcular el formado
        if fdtPrenomGTConsIngresos.Value > 0 then
          SalForm:=fdtPrenomGTConsIngresos.Value * StrToFloatDef(lblCDSCons.Caption, 0)
        else
          SalForm:=0;
        fdtPrenomGTConsSalarioFormado.Value:=SalForm;
      fdtPrenomGTCons.Post;
      //--- Totalizar ---
      TAjust:=TAjust + fdtPrenomGTConsSalarioAjust.Value;
      TPenal:=TPenal + fdtPrenomGTConsPenalizacion.Value;
      fdtPrenomGTCons.Next;
    end;
    fdtPrenomGTCons.First;  fdtPrenomGTCons.Refresh;
    fdtPrenomGTCons.EnableControls;
    qryTotPrenomGTCons.Refresh;
    TDeveng:=dbtxtTotSalEsc1.Field.Value + dbtxtTotDFer1.Field.Value + dbtxtTotOtrosP1.Field.Value;
    lblDevengCons.Caption:=FloatToStrF(TDeveng, ffNumber, 6, 2);
    lblSalAjustCons.Caption:=FloatToStrF(TAjust, ffNumber, 6, 2);
    lblTotPenalCons.Caption:=FloatToStrF(TPenal, ffNumber, 6, 2);
  end;
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #3  
Antiguo 28-09-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo primero que llama la atención es justo la primera línea del código:
Código Delphi [-]
with ModuloBD do
No es que esté mal ni que sea la culpable, pero ¿puedes estar seguro al 100% que todo lo que se ejecuta después no interfiere con eso?
with es un peligro, y cuanto más código involucrado, más peligro es.
Para empezar, yo eliminaría ese with. Es una fuente de problemas.
Y eso sin tan siquiera haber leído lo que hay después.
Responder Con Cita
  #4  
Antiguo 28-09-2018
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Unhappy

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Lo primero que llama la atención es justo la primera línea del código:
Código Delphi [-]with ModuloBD do

No es que esté mal ni que sea la culpable, pero ¿puedes estar seguro al 100% que todo lo que se ejecuta después no interfiere con eso?
with es un peligro, y cuanto más código involucrado, más peligro es.
Para empezar, yo eliminaría ese with. Es una fuente de problemas.
Y eso sin tan siquiera haber leído lo que hay después.

Ok, lo elimine por si acaso.


Pero curiosamente, antes el error me lo daba en el 2do datagrid, ahora lo da en el primero
Por eso es que me tiene loco y no se ya donde buscar, ni que cambiar, unas veces lo da en un lugar otras en otro
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #5  
Antiguo 28-09-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tampoco entiendo lo que dices sobre que el problema lo da el "datagrid". Un dbgrid es una "ventana" que muestra los datos de un dataset, mediante un datasource que hace de intermediario.
Las consultas, cálculos, y todo lo que quieras hacer con los datos es en el dataset. El dbgrid es solamente una presentación de esos datos devueltos.
No puede haber un problema en el datagrid.
Responder Con Cita
  #6  
Antiguo 28-09-2018
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Tampoco entiendo lo que dices sobre que el problema lo da el "datagrid". Un dbgrid es una "ventana" que muestra los datos de un dataset, mediante un datasource que hace de intermediario.
Las consultas, cálculos, y todo lo que quieras hacer con los datos es en el dataset. El dbgrid es solamente una presentación de esos datos devueltos.
No puede haber un problema en el datagrid.

No le hecho la culpa al datagrid, en realidad quise decir en el dataset
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #7  
Antiguo 28-09-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por JoAnCa Ver Mensaje
No le hecho la culpa al datagrid, en realidad quise decir en el dataset
Bueno, es lo que has dicho, y nosotros solamente podemos guiarnos de lo que dices tú y todos los que plantean sus dudas. Ojalá pudiésemos conectar a tu ordenador y ayudar a buscar el problema.
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
MySQL con Firedac muli Desarrollo en Delphi para Android 4 17-05-2018 19:35:19
Firedac y tabla temporal Mysql lbidi Conexión con bases de datos 3 21-02-2018 19:47:54
Firedac pierde coneccion a MYSQL lbidi Varios 3 24-06-2016 18:11:18
Conectar a MySql con Firedac lbidi Conexión con bases de datos 3 24-05-2016 22:03:07
Firedac vs Acceso Directo a MySQl F3niX Conexión con bases de datos 3 16-02-2015 08:33:30


La franja horaria es GMT +2. Ahora son las 16:44:55.


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