Topic: Есть реальная проблема со скриптом
procedure vhod_button8_OnClick (Sender: string; ACol, ARow: Integer; Action: string);
var
t, mx, m: integer;
mxtext,sDate: string;
begin
sDate := '"'+ FormatDateTime('yyyy-MM-DD 00:00:00.000', (vhod.DateTimePicker1.DateTime)) + '"';
t:=SQLExecute('SELECT count(id) FROM kash WHERE date ='+sDate+'');
if t< SQLExecute('SELECT count(id) FROM azs ;') then
begin
m:= SQLExecute('SELECT max(id) FROM azs ;') ;
end;
for mx:=1 to m do
begin
mxtext:=VarToStr (mx);
if SQLExecute('SELECT count(id) FROM kash WHERE date ='+sDate+' and id='+mxtext+'') = 0 then
begin
SQLExecute('INSERT INTO kash (id_azs, date,gotov) VALUES ('+mxtext+','+sDate+',0);');
vhod.TableGrid2.dbUpdate;
UpdateDatabase('kash');
end;
end;
end;
суть такая.
1. есть справочник (azs)
2. на форме есть компонент дата (vhod.DateTimePicker1.DateTime)
3. запуская процедуру мы проверяем наличие записей в таблице (kash) на соответствие то чтобы кол-во записей было равно количеству записей в справочнике (azs)
4. При несовпадении в таблицу (kash) копируются записи из справочника (azs) с добавлением параметра ДАТА из компонента на форме.
проблема такая.
Пока не трогаю компонент дата (не меняю дату) скрипт работает.
Как только меняю дату скрипт ведет себя странно - перестает выполняться проверка условия
if t< SQLExecute('SELECT count(id) FROM azs ;') then
то есть даже если количество записей в таблице (kash) равняется количеству записей в таблице (azs) дальнейшие процедуры все равно выполняются и происходит задваивание записей.
Причем после закрытия базы и повторному открытии - на внесенные даты это условие работает нормально. но на новые даты опять ведет также
Подскажите что не так