120
If not DBGrid2.DataSource.DataSet.FieldByName('id').IsNull then
begin
if InputQuery('Ввод показаний прибора','Введите текущие показания для:
'+DBGrid2.DataSource.DataSet.FieldByName('PriborL').AsString,p) then
begin
if TryStrToFloat(p,pok) then
begin
npok:=DbGrid2.DataSource.DataSet.FieldByName('pokazanie').AsFloat;
idusluga:= DbGrid2.DataSource.DataSet.FieldByName('idusluga').AsInteger;
With AdoQuery1 do
begin
close;
SQl.clear;
SQl.add('SELECT tarif.idusluga, tarif.tarif, Max(tarif.dataenter) AS
Maxdataenter, tarif.id');
SQl.add('FROM (SELECTtarif.idusluga, Max(tarif.dataenter) AS Maxdataenter');
SQl.add('FROM tarif');
SQl.add('GROUP BY tarif.idusluga)AS tarifmax INNER JOIN tarif ON
(tarifmax.Maxdataenter = tarif.dataenter) AND (tarifmax.idusluga =
tarif.idusluga)');
SQl.add('GROUP BY tarif.idusluga, tarif.tarif, tarif.id');
SQL.add('HAVING (((tarif.idusluga)='+IntToStr(idusluga)+'))');
open;
end;
idtarif:=AdoQuery1.FieldByName('id').AsInteger;
tarif:=AdoQuery1.FieldByName('tarif.tarif').AsFloat;
nachisl:=(pok-npok)*tarif;
With AdoQuery1 do
begin
close;
SQl.Clear;
SQl.Add('SELECT priborkvartira.id, kvartira.id, usluga.id, uslugakvartira.id,
pribor.nam, kvartira.nomer, usluga.nam, priborkvartira.pokazanie');
SQl.add('FROM pribor INNER JOIN (usluga INNER JOIN ((kvartira INNER JOIN
priborkvartira ON kvartira.id = priborkvartira.idkvartira) INNER JOIN ');
SQl.add('uslugakvartira ON kvartira.id = uslugakvartira.idkvartira) ON usluga.id
= uslugakvartira.idusluga) ON (usluga.id = pribor.idusluga) AND (pribor.id =
priborkvartira.idpribor)');
SQl.add('WHERE priborkvartira.id =
'+DbGrid2.DataSource.DataSet.FieldByName('id').AsString);
open;
end;
if AdoQuery1.RecordCount<>0 then
iduslugakvartira:=AdoQuery1.FieldByName('uslugakvartira.id').AsInteger else
iduslugakvartira:=0;
With AdoQuery1 do
begin
close;
SQL.clear;
SQL.Add('INSERT INTO nachisl (iduslugakvartira, datenachisl, stoim, okazano,
summa, typenachisl) ');
SQL.add('VALUES ( :iduslugakvartira , :datenachisl , :stoim , :okazano, :summa,
:typenachisl )');
Parameters.ParamByName('iduslugakvartira').Value:=iduslugakvartira;
Parameters.ParamByName('datenachisl').Value:=now;
Parameters.ParamByName('stoim').Value:=tarif;
Parameters.ParamByName('okazano').Value:=pok-npok;
Parameters.ParamByName('summa').Value:=nachisl;
Parameters.ParamByName('typenachisl').Value:='Счетчик';
ExecSQL;