-
Notifications
You must be signed in to change notification settings - Fork 0
/
UOchUpdPodkultury.pas
183 lines (157 loc) · 5.05 KB
/
UOchUpdPodkultury.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
unit UOchUpdPodkultury;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, memds, db, FileUtil, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, Buttons, DBGrids, datamodule;
type
{ TOchUpdPodkultury }
TOchUpdPodkultury = class(TForm)
BitBtn1: TBitBtn;
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
MemPodkultura: TMemDataset;
Memo1: TMemo;
Panel1: TPanel;
Panel2: TPanel;
StaticText1: TStaticText;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Memo1Change(Sender: TObject);
private
procedure AktualizacjaWykazuGR;
public
procedure AktualizacjaGR;
end;
//var
// OchUpdPodkultury: TOchUpdPodkultury;
const ID_WYKAZU_PODKULTURY = 8; // ID from DB katalog_wykazow;
implementation
{$R *.frm}
{ TOchUpdPodkultury }
procedure TOchUpdPodkultury.FormCreate(Sender: TObject);
begin
Label2.Caption:='0';
Label4.Caption:='0';
Label6.Caption:='0';
Label8.Caption:='0';
end;
procedure TOchUpdPodkultury.AktualizacjaGR;
var i : integer;
ido : string;
p1 : integer;
ZQ : TZQueryPom;
iupd: integer;
begin
Screen.Cursor:= crHourGlass;
try
// zaczynamy od wiersza 1 bo 0 jest nagłówek
for i:=1 to Memo1.Lines.Count-1 do
begin
Application.ProcessMessages;
p1 := Pos(' ',Memo1.Lines.Strings[i]);
ido:= Copy(Memo1.Lines.Strings[i] , 1, p1-1);
MemPodkultura.Append;
MemPodkultura.FieldByName('IDO').AsInteger:= StrToIntDef(ido, 0);
MemPodkultura.FieldByName('GR').AsInteger:= 1;
MemPodkultura.Post;
Label2.Caption:= IntToStr(i);
end;
finally
Screen.Cursor:= crDefault;
end;
Memo1.Clear;
// SPRAWDZAMY co mamy w bazie
Screen.Cursor:= crHourGlass;
try
ZQ:= TZQueryPom.Create(Self);
ZQ.SQL.Text:= 'SELECT IDO, GR FROM os_info WHERE IDO in (SELECT IDO FROM osadzeni)';
ZQ.Open;
iupd:= 0; // zmodyfikowano pozycji
if not ZQ.IsEmpty then
while not ZQ.EOF do
begin
Application.ProcessMessages;
Label4.Caption:= IntToStr( ZQ.RecNo );
ZQ.FieldByName('IDO').AsInteger;
if MemPodkultura.Locate('IDO', ZQ.FieldByName('IDO').AsInteger, []) then
begin
if (ZQ.FieldByName('GR').IsNull) or (ZQ.FieldByName('GR').AsInteger = 0) then
begin
ZQ.Edit;
ZQ.FieldByName('GR').AsInteger:= 1; // Grypsuje
ZQ.Post;
inc(iupd);
end;
MemPodkultura.Delete; // jak już dopisane to można usunąć
end
else
begin
if (ZQ.FieldByName('GR').IsNull) or (ZQ.FieldByName('GR').AsInteger = 1) then
begin
ZQ.Edit;
ZQ.FieldByName('GR').AsInteger:= 0; // NIE Grypsuje
ZQ.Post;
inc(iupd);
end;
end;
Label8.Caption:= IntToStr( iupd );
ZQ.Next;
end;
// Dopisujemy do os_info to co zostało w MemPodkultura
while not MemPodkultura.IsEmpty do
begin
Application.ProcessMessages;
Label6.Caption:= IntToStr( MemPodkultura.RecNo );
ZQ.Append;
ZQ.FieldByName('IDO').AsInteger:= MemPodkultura.FieldByName('IDO').AsInteger;
ZQ.FieldByName('GR').AsInteger:= 1; // jeśli dodajemy to tylko GR, jak nie był nigdy GR to może pozostać Null, jak był a się zmieniło to zmodyfikowano powyżej
ZQ.Post;
MemPodkultura.Delete;
end;
// dodajemy os_info dla osadzonych niegrypsujących
ZQ.SQL.Text:= 'INSERT INTO os_info (IDO, GR) SELECT IDO, 0 FROM osadzeni WHERE IDO not in (SELECT IDO FROM os_info)';
ZQ.ExecSQL;
//---
// Aktualizacja wykazu osadzonych grypsujących
AktualizacjaWykazuGR;
MessageDlg('Aktualizacja zakończona poprawnie.', mtInformation, [mbOK],0);
finally
FreeAndNil(ZQ);
Screen.Cursor:= crDefault;
end;
end;
procedure TOchUpdPodkultury.Memo1Change(Sender: TObject);
begin
BitBtn1.Enabled:= (Memo1.Lines.Text <> '');
end;
procedure TOchUpdPodkultury.AktualizacjaWykazuGR;
var ZQPom: TZQueryPom;
begin
try
ZQPom:= TZQueryPom.Create(Self);
ZQPom.SQL.Text:= 'DELETE FROM uwagi_wykazy WHERE (Kategoria = :idGR) AND (IDO NOT IN (SELECT IDO FROM os_info WHERE GR=1))';
ZQPom.ParamByName('idGR').AsInteger:= ID_WYKAZU_PODKULTURY;
ZQPom.ExecSQL;
ZQPom.SQL.Text:= 'INSERT INTO uwagi_wykazy (IDO, Kategoria, data_dodania, user_dodania) '+
'SELECT IDO, :idGR, Now(), :usr FROM os_info WHERE (GR = 1) AND (IDO NOT IN (SELECT IDO FROM uwagi_wykazy WHERE Kategoria=:idGR))';
ZQPom.ParamByName('idGR').AsInteger:= ID_WYKAZU_PODKULTURY;
ZQPom.ParamByName('usr').AsString := DM.PelnaNazwa;
ZQPom.ExecSQL;
DM.KomunikatPopUp(Self, 'Aktualizacja podkultury','Zaktualizowano WYKAZ osadzonych grypsujących.', nots_Info);
finally
FreeAndNil(ZQPom);
end;
end;
procedure TOchUpdPodkultury.BitBtn1Click(Sender: TObject);
begin
AktualizacjaGR;
end;
end.