unit UdmDatos; interface uses SysUtils, Classes, DB, IBCustomDataSet, IBQuery, IniFiles; //Declaro el tipo TGrupo type TGrupo = array[1..6] of boolean; type TdmDatos = class(TDataModule) qyGrupo1: TIBQuery; qyGrupo2: TIBQuery; qyGrupo3: TIBQuery; procedure DataModuleCreate(Sender: TObject); private { Private declarations } idx11,idx12,idx13,idx14,idx15,idx16: integer; //Numeros de bascula grupo1 idx21,idx22,idx23,idx24,idx25,idx26: integer; //Numeros de bascula grupo2 idx31,idx32,idx33,idx34,idx35,idx36: integer; //Numeros de bascula grupo3 procedure LeerGrupos; procedure AsignaBasculaGrupo1; procedure AsignaBasculaGrupo2; procedure AsignaBasculaGrupo3; public { Public declarations } Grupo1, Grupo2, Grupo3: TGrupo; Cuantos1,Cuantos2,Cuantos3: integer; Total1,Total2,Total3: double; procedure SumarGrupo1; procedure SumarGrupo2; procedure SumarGrupo3; end; const Archivo = 'Configura.ini'; var dmDatos: TdmDatos; implementation uses UdmCnx; {$R *.dfm} { TdmDatos } //Al crear el modulo se ejecutan estos procedimientos procedure TdmDatos.DataModuleCreate(Sender: TObject); begin LeerGrupos; AsignaBasculaGrupo1; AsignaBasculaGrupo2; AsignaBasculaGrupo3; SumarGrupo1; SumarGrupo2; SumarGrupo3; end; //Leemos el ultimo estado de los checkbox el cual se guardo en un INI procedure TdmDatos.LeerGrupos; var F: TiniFile; begin F := TIniFile.Create(ExtractFilePath(Paramstr(0)) + Archivo); try //***************** grupo 1 Grupo1[1] := F.readbool('Grupo1', 'Bascula1', False); Grupo1[2] := F.readbool('Grupo1', 'Bascula2', False); Grupo1[3] := F.readbool('Grupo1', 'Bascula3', False); Grupo1[4] := F.readbool('Grupo1', 'Bascula4', False); Grupo1[5] := F.readbool('Grupo1', 'Bascula5', False); Grupo1[6] := F.readbool('Grupo1', 'Bascula6', False); //***************** grupo 2 Grupo2[1] := F.readbool('Grupo2', 'Bascula1', False); Grupo2[2] := F.readbool('Grupo2', 'Bascula2', False); Grupo2[3] := F.readbool('Grupo2', 'Bascula3', False); Grupo2[4] := F.readbool('Grupo2', 'Bascula4', False); Grupo2[5] := F.readbool('Grupo2', 'Bascula5', False); Grupo2[6] := F.readbool('Grupo2', 'Bascula6', False); //***************** grupo 3 Grupo3[1] := F.readbool('Grupo3', 'Bascula1', False); Grupo3[2] := F.readbool('Grupo3', 'Bascula2', False); Grupo3[3] := F.readbool('Grupo3', 'Bascula3', False); Grupo3[4] := F.readbool('Grupo3', 'Bascula4', False); Grupo3[5] := F.readbool('Grupo3', 'Bascula5', False); Grupo3[6] := F.readbool('Grupo3', 'Bascula6', False); finally F.Free ; end; end; {Segun el estado de cada elemento del array (TRUE / FALSE) asignamos un numero a los indices} procedure TdmDatos.AsignaBasculaGrupo1; begin if Grupo1[1] then idx11 := 1 else idx11 := 0; if Grupo1[2] then idx12 := 2 else idx12 := 0; if Grupo1[3] then idx13 := 3 else idx13 := 0; if Grupo1[4] then idx14 := 4 else idx14 := 0; if Grupo1[5] then idx15 := 5 else idx15 := 0; if Grupo1[6] then idx16 := 6 else idx16 := 0; end; {Segun el estado de cada elemento del array (TRUE / FALSE) asignamos un numero a los indices} procedure TdmDatos.AsignaBasculaGrupo2; begin if Grupo2[1] then idx21 := 1 else idx21 := 0; if Grupo2[2] then idx22 := 2 else idx22 := 0; if Grupo2[3] then idx23 := 3 else idx23 := 0; if Grupo2[4] then idx24 := 4 else idx24 := 0; if Grupo2[5] then idx25 := 5 else idx25 := 0; if Grupo2[6] then idx26 := 6 else idx26 := 0; end; {Segun el estado de cada elemento del array (TRUE / FALSE) asignamos un numero a los indices} procedure TdmDatos.AsignaBasculaGrupo3; begin if Grupo3[1] then idx31 := 1 else idx31 := 0; if Grupo3[2] then idx32 := 2 else idx32 := 0; if Grupo3[3] then idx33 := 3 else idx33 := 0; if Grupo3[4] then idx34 := 4 else idx34 := 0; if Grupo3[5] then idx35 := 5 else idx35 := 0; if Grupo3[6] then idx36 := 6 else idx36 := 0; end; {Ejecutamos la consulta. Proporcionamos como parametro el numero de bascula que se obtuvo en el procedure AsignarGrupoBascula} procedure TdmDatos.SumarGrupo1; begin with qyGrupo1 do begin close; sql.Clear ; sql.Add('SELECT COUNT(*) AS Pesadas, ' + 'SUM (peso) AS Total ' + 'FROM DATOS WHERE ((Bascula = :Bas1) OR (Bascula = :Bas2) OR ' + '(Bascula = :Bas3) OR (Bascula = :Bas4) OR ' + '(Bascula = :Bas5) OR (Bascula = :Bas6))'); Params.ParamByName('Bas1').Value := idx11; Params.ParamByName('Bas2').Value := idx12; Params.ParamByName('Bas3').Value := idx13; Params.ParamByName('Bas4').Value := idx14; Params.ParamByName('Bas5').Value := idx15; Params.ParamByName('Bas6').Value := idx16; open; end; if not qygrupo1.IsEmpty then begin Cuantos1 := qyGrupo1.FieldValues['Pesadas']; Total1 := qyGrupo1.FieldValues['Total']; end; end; {Ejecutamos la consulta. Proporcionamos como parametro el numero de bascula que se obtuvo en el procedure AsignarGrupoBascula} procedure TdmDatos.SumarGrupo2; begin with qyGrupo2 do begin close; sql.Clear ; sql.Add('SELECT COUNT(*) AS Pesadas, ' + 'SUM (peso) AS Total ' + 'FROM DATOS WHERE ((Bascula = :Bas1) OR (Bascula = :Bas2) OR ' + '(Bascula = :Bas3) OR (Bascula = :Bas4) OR ' + '(Bascula = :Bas5) OR (Bascula = :Bas6))'); Params.ParamByName('Bas1').Value := idx21; Params.ParamByName('Bas2').Value := idx22; Params.ParamByName('Bas3').Value := idx23; Params.ParamByName('Bas4').Value := idx24; Params.ParamByName('Bas5').Value := idx25; Params.ParamByName('Bas6').Value := idx26; open; end; if not qygrupo2.IsEmpty then begin Cuantos2 := qyGrupo2.FieldValues['Pesadas']; Total2 := qyGrupo2.FieldValues['Total']; end; end; {Ejecutamos la consulta. Proporcionamos como parametro el numero de bascula que se obtuvo en el procedure AsignarGrupoBascula} procedure TdmDatos.SumarGrupo3; begin with qyGrupo3 do begin close; sql.Clear ; sql.Add('SELECT COUNT(*) AS Pesadas, ' + 'SUM (peso) AS Total ' + 'FROM DATOS WHERE ((Bascula = :Bas1) OR (Bascula = :Bas2) OR ' + '(Bascula = :Bas3) OR (Bascula = :Bas4) OR ' + '(Bascula = :Bas5) OR (Bascula = :Bas6))'); Params.ParamByName('Bas1').Value := idx31; Params.ParamByName('Bas2').Value := idx32; Params.ParamByName('Bas3').Value := idx33; Params.ParamByName('Bas4').Value := idx34; Params.ParamByName('Bas5').Value := idx35; Params.ParamByName('Bas6').Value := idx36; open; end; if not qygrupo3.IsEmpty then begin Cuantos3 := qyGrupo3.FieldValues['Pesadas']; Total3 := qyGrupo3.FieldValues['Total']; end; end; end.
Como siempre les agradesco la atencion y ayuda que me puedan proporcionar.