H
hasp84
Здравствуйте !
к записям в разных таблицах необходимо добавить информацию если подобная строка есть во временной таблице
проблема заключается в следующем, что обновляется всего одна хотя при обработке процидуры вроде бы как должно обнавиться достаточное количество строк.
Почему обновляется только одна строка???
к записям в разных таблицах необходимо добавить информацию если подобная строка есть во временной таблице
проблема заключается в следующем, что обновляется всего одна хотя при обработке процидуры вроде бы как должно обнавиться достаточное количество строк.
Почему обновляется только одна строка???
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, ExtCtrls, StdCtrls, ComCtrls;
type
TFrmGlav = class(TForm) //Основная форма
con1: TADOConnection; //подключение к базе SQL
qryQuery: TADOQuery; //Обновляемые таблицы
ds1: TDataSource;
lbl1: TLabel; //Количество просмотренных таблиц
btnRun: TButton;
qryQuery1: TADOQuery; //для поиска обновляемых строк
ds2: TDataSource;
Label1: TLabel; //подсчитаное количество обновленных записей
Label2: TLabel; //подсчитаное количество просмотренных записей
procedure btnRunClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmGlav: TFrmGlav;
KeyInform : integer; //Количество обновленных строк
KeyView: integer; //Количество просмотренных строк
implementation
{$R *.dfm}
procedure N27Click(s:string);
procedure expandet(str1:String);
var d,i:integer;
begin
FrmGlav.qryQuery1.Active:=false;
FrmGlav.qryQuery1.SQL.Clear;
FrmGlav.qryQuery1.SQL.Add('Select Familia, Imia, Otchestvo');
FrmGlav.qryQuery1.SQL.Add('FROM temp_table');
FrmGlav.qryQuery1.Active:=True;
FrmGlav.qryQuery.Active:=false;
FrmGlav.qryQuery.SQL.Clear;
FrmGlav.qryQuery.SQL.Add('Select Familia, Imia, Otchestvo, inform');
FrmGlav.qryQuery.SQL.Add('FROM '+str1);
FrmGlav.qryQuery.Active:=True;
for i:=0 to FrmGlav.ds1.DataSet.RecordCount-1 do
begin
for d:=0 to FrmGlav.ds2.DataSet.RecordCount-1 do
Begin
KeyView:=KeyView+1; //подсчитываем количество проходов
if (FrmGlav.ds1.DataSet.Fields.FieldByName('Familia').AsString = FrmGlav.ds2.DataSet.Fields.FieldByName('Familia').AsString)
and (FrmGlav.ds1.DataSet.Fields.FieldByName('Imia').AsString = FrmGlav.ds2.DataSet.Fields.FieldByName('Imia').AsString)
and (FrmGlav.ds1.DataSet.Fields.FieldByName('Otchestvo').AsString = FrmGlav.ds2.DataSet.Fields.FieldByName('Otchestvo').AsString)
Then
Begin
FrmGlav.ds1.DataSet.Edit;
FrmGlav.ds1.DataSet.Fields.FieldByName('inform').AsString:='1 необходимо получить бланк';
FrmGlav.ds1.DataSet.Post;
KeyInform:= KeyInform + 1; //подсчитываем количество обновлений
FrmGlav.ds2.DataSet.Next;
End
Else FrmGlav.ds2.DataSet.Next;
end;
FrmGlav.ds1.DataSet.Next;
end;
end;
var
a:integer;
begin
KeyInform:=0; KeyView:=0;
for a:=1 to 10 do
begin
FrmGlav.lbl1.Caption:='обновление таблиц из темп '+IntToStr(a)+' из 10';
case a of
1:expandet('tbl1'); 2:expandet('tbl2');
3:expandet('tbl3'); 4:expandet('tbl4');
5:expandet('tbl5'); 6:expandet('tbl6');
7:expandet('tbl7'); 8:expandet('tbl8');
9:expandet('tbl9'); 10:expandet('tbl10');
end;
end;
FrmGlav.Label1.Caption:= IntToStr(KeyInform)+' обновлено записей';
FrmGlav.Label2.Caption:= IntToStr(KeyView)+' просмотрено записей';
end;
procedure TFrmGlav.btnRunClick(Sender: TObject);
begin
btnRun.Enabled:=False;
N27Click('');
end;
end.