⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 member_upgrade.pas

📁 类似于安利公司的奖金制度下的会员层次关系、会员级别、会员奖金等
💻 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 + -