📄 member_input.pas
字号:
unit member_input;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, DB, DBCtrls, Mask, ExtCtrls, Grids, DBGrids,
ADODB, Menus;
type
TForm2 = class(TForm)
StatusBar1: TStatusBar;
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Edit9: TEdit;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Label7: TLabel;
Label8: TLabel;
Panel2: TPanel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label3: TLabel;
Edit4: TEdit;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Upgrade_higher(str0:string);
procedure add_kaituo(str1:string;str2:string;ratio:Extended);
procedure add_fudao(str1:string;str2:string;ratio:Extended);
procedure add_guanli(str1:string;str2:string;ratio:Extended);
procedure Button3Click(Sender: TObject);
procedure ChangeFonts(OldFormWidth:integer;NewFormWidth:integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
uses
Data_Unit1,select_member;
type
TFooClass = class(TControl); { needed to get at protected }
{ font property }
const
ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}
ScreenHeight: LongInt = 600;
procedure TForm2.ChangeFonts(OldFormWidth:integer;NewFormWidth:integer);
var
i: integer;
begin
NewFormWidth := longint(width) * longint(screen.width) div ScreenWidth;
for i := ControlCount - 1 downto 0 do
TFooClass(Controls[i]).Font.Size :=
(NewFormWidth div OldFormWidth) *
TFooClass(Controls[i]).Font.Size;
end;
procedure TForm2.FormCreate(Sender: TObject);
var
str1,c1:string;
begin
scaled := true;
if (screen.width <> ScreenWidth) then
begin
height := longint(height) * longint(screen.height) div ScreenHeight;
width := longint(width) * longint(screen.width) div ScreenWidth;
scaleBy(screen.width, ScreenWidth);
end;
ChangeFonts(ScreenWidth,width);
Edit8.Text := '18800.00';
Edit9.Text := datetostr(date);
DataModule1.ADOQuery5.Open;
if DataModule1.ADOQuery5.Recordset.RecordCount = 0 then str1 := 'M00001'
else begin
str1 := DataModule1.ADOQuery5.FieldValues['member_id'];
str1 := '1'+Copy (str1,2,length(str1)-1);
str1 := inttostr(strtoint(str1)+1);
c1 := Copy (str1,1,1);
if strtoint(c1) > 1 then
str1 := 'M1' + Copy (str1,2,length(str1)-1)
else
str1 := 'M' + Copy (str1,2,length(str1)-1);
end;
Edit1.Text := str1;
DataModule1.ADOQuery5.Close;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
str1,str2,str3:string;
C1,C2,S:integer;
UpFinished:boolean;
begin
with DataModule1.ADOQuery_upgrade2 do begin
sql.Clear;
sql.Add('select id from member where member_id = :AA1');
Parameters.ParamValues['AA1'] := Edit1.Text;
open;
end;
if DataModule1.ADOQuery_upgrade2.Recordset.RecordCount > 0 then begin
showmessage('会员编号或名称已经存在,请重新输入!');
DataModule1.ADOQuery_upgrade2.Close;
end
else begin
DataModule1.ADOQuery_upgrade2.Close;
with DataModule1.ADOQuery_upgrade2 do begin
sql.Clear;
sql.Add('select id from member where name = :AA3 or member_id = :AA1');
Parameters.ParamValues['AA1'] := Edit4.Text;
Parameters.ParamValues['AA3'] := Edit2.Text;
open;
end;
if DataModule1.ADOQuery_upgrade2.Recordset.RecordCount = 0 then begin
showmessage('上级会员不存在,请重新输入!');
DataModule1.ADOQuery_upgrade2.Close;
end
else begin
DataModule1.ADOQuery_upgrade2.Close;
StatusBar1.SimpleText := '正在保存新会员信息……';
StatusBar1.Show;
with DataModule1.ADOQuery1 do begin
SQL.Clear;
SQL.Add('insert into member (member_id,name,class,higher_id,person,telephone,'+
'handphone,email,url,pay_amount,pay_date,remarks) VALUES (:AA1,:AA2,:AA3,'+
':AA4,:AA5,:AA6,:AA7,:AA8,:AA9,:AA10,:AA11,:AA12)');
Parameters.ParamValues['AA1'] := Edit1.Text;
Parameters.ParamValues['AA2'] := Edit2.Text;
Parameters.ParamValues['AA3'] := 0;
Parameters.ParamValues['AA4'] := Edit4.Text;
Parameters.ParamValues['AA5'] := Edit5.Text;
Parameters.ParamValues['AA6'] := Edit6.Text;
Parameters.ParamValues['AA7'] := Edit7.Text;
Parameters.ParamValues['AA8'] := 'info@chinafoods.cn';
Parameters.ParamValues['AA9'] := 'http://www.chinafoods.cn';
Parameters.ParamValues['AA10'] := strtofloat(Edit8.Text);
Parameters.ParamValues['AA11'] := strtodate(Edit9.Text);
Parameters.ParamValues['AA12'] := memo1.Lines.Text;
ExecSQL;
end;
StatusBar1.SimpleText := '正在升级上级会员,并计算奖金等……';
StatusBar1.Show;
//计算上级会员开拓奖金
add_kaituo(Edit4.Text,Edit1.Text,20.0);
//计算上级会员辅导津贴
str1 := Edit4.Text;
C1 := 0;
UpFinished := False;
repeat
if C1 >= 5 then UpFinished := True else begin
with DataModule1.ADOQuery_upgrade1 do begin
SQL.Clear;
SQL.Add('Select higher_id,class from member where member_id = :AA1');
Parameters.ParamValues['AA1'] := str1;
open;
if RecordCount = 0 then begin
UpFinished := True;
end
else begin
str2 := Recordset.Fields.Item['higher_id'].Value;
C2 := Recordset.Fields.Item['class'].Value;
if C2 > C1 then begin
add_fudao(str1,Edit1.Text,5*(C2-C1));
C1 := C2;
end;
str1 := str2;
end;
close;
end;
end;
until UpFinished = True;
//计算上级会员管理奖金
str3 := Edit4.Text;
S := 0;
UpFinished := False;
with DataModule1.ADOQuery_upgrade1 do begin
SQL.Clear;
SQL.Add('Select higher_id,class from member where member_id = :AA1');
Parameters.ParamValues['AA1'] := str3;
open;
end;
if DataModule1.ADOQuery_upgrade1.RecordCount <> 0 then begin
C1 := DataModule1.ADOQuery_upgrade1.Recordset.Fields.Item['class'].Value;
str1 := DataModule1.ADOQuery_upgrade1.Recordset.Fields.Item['higher_id'].Value;
repeat
if C1 <= S then UpFinished := True else begin
with DataModule1.ADOQuery_upgrade1 do begin
SQL.Clear;
SQL.Add('Select higher_id,class from member where member_id = :AA1');
Parameters.ParamValues['AA1'] := str1;
open;
if RecordCount = 0 then begin
UpFinished := True;
end
else begin
str2 := Recordset.Fields.Item['higher_id'].Value;
C2 := Recordset.Fields.Item['class'].Value;
if C2>5 then C2 := 5;
if (C2 = C1) and (C2 > S) then begin
add_guanli(str1,Edit1.Text,C2-S);
Inc(S);
end;
str1 := str2;
end;
close;
end;
end;
until UpFinished = True;
end;
//升级上级会员
Upgrade_higher(Edit1.Text);
//将显示的会员编号加1
str1 := Edit1.Text;
str1 := '1'+Copy (str1,2,length(str1)-1);
str1 := inttostr(strtoint(str1)+1);
if strtoint(Copy (str1,1,1)) > 1 then
str1 := 'M1' + Copy (str1,2,length(str1)-1)
else
str1 := 'M' + Copy (str1,2,length(str1)-1);
Edit1.Text := str1;
Showmessage('新会员保存、上级会员升级完毕!');
StatusBar1.SimpleText := '新会员保存、上级会员升级完毕!';
StatusBar1.Show;
end;
end;
end;
procedure TForm2.add_kaituo(str1:string;str2:string;ratio:Extended);
begin
with DataModule1.ADOinsert_jiangjin do begin
SQL.Clear;
SQL.Add('insert into jiangjin (member_id,lower_id,jj_type,amount,date_valid) VALUES (:AA1,:AA2,:AA3,:AA4,:AA5)');
Parameters.ParamValues['AA1'] := str1;
Parameters.ParamValues['AA2'] := str2;
Parameters.ParamValues['AA3'] := '开拓奖';
Parameters.ParamValues['AA4'] := 188.0*ratio;
Parameters.ParamValues['AA5'] := date;
ExecSQL;
end;
end;
procedure TForm2.add_fudao(str1:string;str2:string;ratio:Extended);
begin
with DataModule1.ADOinsert_jiangjin do begin
SQL.Clear;
SQL.Add('insert into jiangjin (member_id,lower_id,jj_type,amount,date_valid) VALUES (:AA1,:AA2,:AA3,:AA4,:AA5)');
Parameters.ParamValues['AA1'] := str1;
Parameters.ParamValues['AA2'] := str2;
Parameters.ParamValues['AA3'] := '辅导奖';
Parameters.ParamValues['AA4'] := 150.4*ratio;
Parameters.ParamValues['AA5'] := date;
ExecSQL;
end;
end;
procedure TForm2.add_guanli(str1:string;str2:string;ratio:Extended);
begin
with DataModule1.ADOinsert_jiangjin do begin
SQL.Clear;
SQL.Add('insert into jiangjin (member_id,lower_id,jj_type,amount,date_valid) VALUES (:AA1,:AA2,:AA3,:AA4,:AA5)');
Parameters.ParamValues['AA1'] := str1;
Parameters.ParamValues['AA2'] := str2;
Parameters.ParamValues['AA3'] := '管理奖';
Parameters.ParamValues['AA4'] := 150.4*ratio;
Parameters.ParamValues['AA5'] := date;
ExecSQL;
end;
end;
procedure TForm2.Upgrade_higher(str0:string);
var
str1:string;
Class1,Class2:integer;
UpFinished:boolean;
begin
str1 := str0;
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 //开始检测上级会员,是否需要升级;
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;
end;
end;
end
else begin //数据库有错误
UpFinished := true;
end;
end;
until UpFinished = true;
end;
close;
end;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Form2.Close;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
Application.CreateForm(TForm7,Form7);
if Form7.Tag = 1 then
try
Form7.ShowModal;
finally
Form7.Release;
end
else
Form7.Release;
Edit4.Text := VarMember_ID;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -