📄 member_upgrade.pas
字号:
unit member_upgrade;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls;
type
TForm3 = class(TForm)
Button2: TButton;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Memo1: TMemo;
Label5: TLabel;
Button3: TButton;
Label6: TLabel;
Label3: TLabel;
Edit1: TEdit;
Button1: TButton;
StatusBar1: TStatusBar;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
function Upgrade_higher(str0: string):string;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
uses
Data_Unit1;
procedure TForm3.Button2Click(Sender: TObject);
begin
Form3.close;
end;
function TForm3.Upgrade_higher(str0:string):string;
var
str1:string;
Class1,Class2,Num:integer;
UpFinished:boolean;
begin
str1 := str0;
Num := 0;
Result := '';
with DataModule1.ADOQuery_upgrade1 do begin
close;
SQL.Clear;
SQL.Add('Select id from member where member_id = :AA1');
Parameters.ParamValues['AA1'] := str1;
open;
if RecordCount = 0 then begin
Result := '该会员不存在!';
close;
end
else begin
//开始检测上级会员,是否需要升级;
UpFinished := false;
repeat
close;
SQL.Clear; //查出输入会员的上级会员编号
SQL.Add('Select higher_id from member where member_id = :AA1');
Parameters.ParamValues['AA1'] := str1;
open;
if (RecordCount = 0) or (FieldValues['higher_id'] = '总部') then UpFinished := True
else begin
str1 := FieldValues['higher_id']; //上级会员编号
close;
SQL.Clear; //查询上级会员级别
SQL.Add('Select class from member where member_id = :AA1');
Parameters.ParamValues['AA1'] := str1;
open;
if RecordCount > 0 then begin
Class1 := FieldValues['class']; //上级会员级别
close;
SQL.Clear; //查询同级会员级别,
SQL.Add('Select class from member where higher_id = :AA1 order by class Desc');
Parameters.ParamValues['AA1'] := str1;
open;
if RecordCount > 1 then begin //若有两个以上同级会员,则继续判断,
Recordset.MoveFirst;
Recordset.MoveNext;
Class2 := Recordset.Fields.Item['class'].Value;
if Class2 >= Class1 then begin // 若第二高级别大于或等于上级会员级别,则上级会员需要升级;
close;
SQL.Clear;
SQL.Add('Update member set class = :AA2 where member_id = :AA1');
Parameters.ParamValues['AA1'] := str1;
Parameters.ParamValues['AA2'] := Class2 + 1;
ExecSQL;
Inc(Num);
Result := Result+' 编号为:'+str1+'的会员由'+inttostr(Class1)+'级升为'+inttostr(Class2+1)+'级!';
end
else begin //上级会员不需要升级
close;
end;
end
else begin // 否则上级会员不升级,循环结束
close;
end;
end
else begin //数据库有错误
UpFinished := true;
close;
end;
end;
until UpFinished = true;
Result := Result+' 共有:'+inttostr(Num)+'个会员升级完成!';
end;
end;
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo1.Lines.Add('***开始检测编号为'+Edit1.text+'的所有上级会员!');
Memo1.Lines.Add(Upgrade_higher(Edit1.text));
end;
procedure TForm3.Button3Click(Sender: TObject);
var
str1:string;
i:integer;
begin
//自底而上检测所有会员,是否需要升级;
Memo1.Lines.Clear;
with DataModule1.ADOQuery_upgrade2 do begin
close;
SQL.Clear; //选择没有业绩的会员(最底层会员)
SQL.Add('Select member_id from member where class = 0');
open;
end;
if DataModule1.ADOQuery_upgrade2.RecordCount = 0 then begin
Memo1.Lines.Add('没有要升级的会员!');
end
else begin
DataModule1.ADOQuery_upgrade2.Recordset.MoveFirst;
for i := 0 to DataModule1.ADOQuery_upgrade2.RecordCount-1 do begin //RecordCount为第一级会员数目
str1 := DataModule1.ADOQuery_upgrade2.Recordset.Fields.Item['member_id'].Value;
with DataModule1.ADOQuery_upgrade1 do begin
close;
SQL.Clear;
SQL.Add('Select id from yeji where member_id = :AA1');
Parameters.ParamValues['AA1'] := str1;
open;
if RecordCount = 0 then begin //此会员没有业绩
Memo1.Lines.Add('***开始检测编号为'+str1+'的所有上级会员!');
Memo1.Lines.Add(Upgrade_higher(str1));
end;
close;
end;
DataModule1.ADOQuery_upgrade2.Recordset.MoveNext;
end;
end;
DataModule1.ADOQuery_upgrade2.Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -