📄 unit_common_files.pas
字号:
unit Unit_common_files;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, ExtCtrls, Mask, DBCtrls, Grids, DBGrids, Db, DBTables,
AppEvnts, Buttons, WinSock, ADODB, Variants;
var
CurrentID :string;
CurrentUserName:string;//当前操作用户名称
Currentturename:string;
CurrentPassword:string;//当前用户名称简写
Currentaward_1 :string;
Currentaward_2 :string;
Currentaward_3 :string;
Currentaward_4 :string;
StrTableName :string;
SyTableName :string;
OldTableName :string;
ChineseNumericNames:array[0..9] of string=('零','壹','贰','叁','肆','伍','陆','柒','捌','玖');
function ToChineseCurrency(theCurr: Currency): string; //大小写转换
procedure Warning(warnMsg:String);//警告提示信息
function Transform(Chinises: String): String;//取助记码字符
function get_goods_zjm(TempStr: string): string;//取得助记码字符串
function CurrentUserName1:string;
Procedure GetTableName(nYear,nMonth :integer );
Procedure GetsyTableName(nYear,nMonth :integer );
procedure AlterView;
Procedure CreateBiaodiTable;
procedure CreateSybiaodiTable;
implementation
uses DataModule, Login;
/////////////////////////////////////////////////////////////////////
function ToChineseCurrency(theCurr: Currency): string; //大小写转换
var
ShiWan,Wan,Qian,Bai,Shi,Ge,Jiao,Fen:Integer;
CurrStr:string;
Curr:Currency;
begin
Curr:=Abs(StrToFloat(IntToStr(Round(theCurr*100)))/100);
ShiWan:=Trunc(Curr/100000) mod 10;
Wan:=Trunc(Curr/10000) mod 10;
Qian:=Trunc(Curr/1000) mod 10;
Bai:=Trunc(Curr/100) mod 10;
Shi:=Trunc(Curr/10) mod 10;
Ge:=Trunc(Curr) mod 10;
Jiao:=Trunc(Curr*10) mod 10;
Fen:=Round(Curr*100) mod 10;
CurrStr:='';
if (CurrStr<>'') or (ShiWan<>0) then
CurrStr:=CurrStr+ChineseNumericNames[ShiWan]+'拾';
if (Wan<>0) then
CurrStr:=CurrStr+ChineseNumericNames[Wan]+'万'
else
if (ShiWan<>0) then CurrStr:=CurrStr+'万';
if (Qian<>0) then
CurrStr:=CurrStr+ChineseNumericNames[Qian]+'仟'
else
if (CurrStr<>'') and (Bai<>0) then CurrStr:=CurrStr+ChineseNumericNames[0];
if (Bai<>0) then
CurrStr:=CurrStr+ChineseNumericNames[Bai]+'佰'
else
if (CurrStr<>'') and (Shi<>0) then CurrStr:=CurrStr+ChineseNumericNames[0];
if (Shi<>0) then
CurrStr:=CurrStr+ChineseNumericNames[Shi]+'拾'
else
if (CurrStr<>'') and (Ge<>0)
then CurrStr:=CurrStr+ChineseNumericNames[0];
if (Ge<>0) then
CurrStr:=CurrStr+ChineseNumericNames[Ge]+'圆'
else
if (CurrStr<>'') then
CurrStr:=CurrStr+'圆';
if (Jiao<>0) then
CurrStr:=CurrStr+ChineseNumericNames[Jiao]+'角'
else
if (CurrStr<>'') and (Fen<>0) then
CurrStr:=CurrStr+ChineseNumericNames[0];
if (Fen<>0) then
CurrStr:=CurrStr+ChineseNumericNames[Fen]+'分'
else
CurrStr:=CurrStr+'整';
if (theCurr<0) then
Result:='负'+CurrStr
else
Result:=CurrStr;
end;
////////////////////////////////////////////////////////////////////
procedure AlterView;
var nYear,nMonth,nDay:word;
ADQ_XmXf:TADOQuery;
begin
ADQ_XmXf:=TADOQuery.Create(nil);
ADQ_XmXf.Connection:=DB_module.ADOCon ;
DecodeDate(Now(),nYear,nMonth,nDay);
GetTableName(nYear,nMonth);
GetsyTableName(nYear,nMonth);
With ADQ_XmXf do
Begin
Close;
SQL.Clear;
SQL.Text :='Alter view XmXf as SELECT C.manid, D.manname, D.Zjm, C.fangno,B.Cbrq, B.lsb, B.rsb,'
+'B.db, B.mqb,A.Cbrq AS bycbrq, A.lsb AS bylsb,A.rsb AS byrsb, A.db AS bydb,A.mqb AS bymqb'
+' FROM dbo.Zf_Man D INNER JOIN dbo.Zf_Rz C ON D.manid = C.manid INNER JOIN '
+''+ StrTableName+ ' A ON C.fangno = A.fangno INNER JOIN '
+''+ SyTableName+ ' B ON A.fangno = B.fangno';
ExecSQL;
End;
end;
///////////////////////////////////////////////////////////////////
procedure CreateBiaodiTable;
var ADQ_Biaodi:TADOQuery;
begin
ADQ_Biaodi:=TADOQuery.Create(nil);
ADQ_Biaodi.Connection:=DB_module.ADOCon ;
With ADQ_Biaodi do
Begin
Close;
SQL.Clear;
SQL.Text:='Select * From Sysobjects Where name='''+StrTableName+'''';
Open;
End;
if ADQ_Biaodi.IsEmpty then
Begin
With ADQ_Biaodi do
Begin
Close;
SQL.Clear;
SQL.Text :='CREATE TABLE [dbo].['+StrTableName+'] ('
+'[ID] [int] IDENTITY (1, 1) NOT NULL ,'
+'[fangno] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,'
+'[Cbrq] [datetime] NOT NULL ,'
+'[lsb] [numeric](6, 2) NULL ,'
+'[rsb] [numeric](6, 2) NULL ,'
+'[db] [numeric](6, 2) NULL ,'
+'[mqb] [numeric](6, 2) NULL'
+') ON [PRIMARY]' ;
ExecSQL;
End;
With ADQ_Biaodi do
Begin
Close;
SQL.Clear;
SQL.Text:='ALTER TABLE [dbo].['+StrTableName+'] WITH NOCHECK ADD '
+'CONSTRAINT [PK_'+StrTableName+'] PRIMARY KEY CLUSTERED'
+'([ID]) ON [PRIMARY] ' ;
ExecSQL;
End;
End;
end;
///////////////////////////////////////////////////////////////////
procedure CreateSyBiaodiTable;
var ADQ_Biaodi:TADOQuery;
begin
ADQ_Biaodi:=TADOQuery.Create(nil);
ADQ_Biaodi.Connection:=DB_module.ADOCon ;
With ADQ_Biaodi do
Begin
Close;
SQL.Clear;
SQL.Text:='Select * From Sysobjects Where name='''+SyTableName+'''';
Open;
End;
if ADQ_Biaodi.IsEmpty then
Begin
With ADQ_Biaodi do
Begin
Close;
SQL.Clear;
SQL.Text :='CREATE TABLE [dbo].['+SyTableName+'] ('
+'[ID] [int] IDENTITY (1, 1) NOT NULL ,'
+'[fangno] [char] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,'
+'[Cbrq] [datetime] NOT NULL ,'
+'[lsb] [numeric](6, 2) NULL ,'
+'[rsb] [numeric](6, 2) NULL ,'
+'[db] [numeric](6, 2) NULL ,'
+'[mqb] [numeric](6, 2) NULL'
+') ON [PRIMARY]' ;
ExecSQL;
End;
With ADQ_Biaodi do
Begin
Close;
SQL.Clear;
SQL.Text:='ALTER TABLE [dbo].['+SyTableName+'] WITH NOCHECK ADD '
+'CONSTRAINT [PK_'+SyTableName+'] PRIMARY KEY CLUSTERED'
+'([ID]) ON [PRIMARY] ' ;
ExecSQL;
End;
End;
end;
///////////////////////////////////////////////////////////////////
procedure GetTableName(nYear,nMonth :integer );
begin
if nMonth<10 then
begin
StrTableName:='zf_Biaodi'+IntToStr(nYear)+'0'+intToStr(nMonth);
end
else
begin
StrTableName:='zf_Biaodi'+IntToStr(nYear)+intToStr(nMonth);
end;
end;
//////////////////////////////////////////////////////////////////////////
procedure GetsyTableName(nYear,nMonth :integer );
begin
if nMonth<10 then
begin
SyTableName:='zf_Biaodi'+IntToStr(nYear)+'0'+intToStr(nMonth-1);
end
else
begin
SyTableName:='zf_Biaodi'+IntToStr(nYear)+intToStr(nMonth-1);
end;
end;
//////////////////////////////////////////////////////////////
function CurrentUserName1:string;
var ADOQry:TADOQuery;
begin
try
ADOQry:=TADOQuery.Create(nil);
ADOQry.Connection:=DB_module.ADOCon;
ADOQry.SQL.Add('select * from login_user where user_loginname=:username and user_password=:password');
ADOQry.Parameters.ParamByName('username').Value:=paramstr(1);
ADOQry.Parameters.ParamByName('password').Value:=Trim(paramstr(2));
ADOQry.open;
if not ADOQry.IsEmpty then
begin
CurrentID := Trim(ADOQry.FieldByName('user_ID').AsString ) ;
CurrentUserName := Trim(ADOQry.FieldByName('user_loginname').AsString);
Currentturename := Trim(ADOQry.FieldByName('user_name').AsString );
CurrentPassword := Trim(ADOQry.FieldByName('user_password').asstring);
Currentaward_1 := Trim(ADOQry.FieldByName('award_1').AsString);
Currentaward_2 := Trim(ADOQry.FieldByName('award_2').AsString);
Currentaward_3 := Trim(ADOQry.FieldByName('award_3').AsString);
Currentaward_4 := Trim(ADOQry.FieldByName('award_4').AsString);
end;
result:=CurrentUserName;
finally
ADOqry.Free;
end;
end;
////////////////////////////////////////////////////警告提示信息
procedure Warning(WarnMsg:String); //警告通用函数
begin
Application.MessageBox(PChar(WarnMsg),'警告',MB_OK or MB_ICONWARNING);
end;
////////////////////////////////////////////////////////////////////////////////
function get_goods_zjm(TempStr: string): string;
var
i:Integer;
Str,Str1:String;
begin
//得到助记码
if TempStr <>'' then
begin
i := 1;
Str := '';
while i<=Length(TempStr) do
begin
//中文
if ord(Char(TempStr[i]))>127 then
begin
Str1 := '';
Str1 := TempStr[i];
Str1 := Str1 + TempStr[i+1];
i:= i+2;
Str := Str + Transform(Str1);
end
else
//英文
begin
Str := Str+UpCase(TempStr[i]);
i:= i+1;
end;
end;
Result:=Str;
end;
end;
function Transform(Chinises: String): String;
var
tt:integer;
begin
tt:=WORD(Chinises[1]) shl 8 + WORD(Chinises[2]);
case tt of
$B0A1..$B0C4 : result := 'A';
$B0C5..$B2C0 : result := 'B';
$B2C1..$B4ED : result := 'C';
$B4EE..$B6E9 : result := 'D';
$B6EA..$B7A1 : result := 'E';
$B7A2..$B8C0 : result := 'F';
$B8C1..$B9FD : result := 'G';
$B9FE..$BBF6 : result := 'H';
$BBF7..$BFA5 : result := 'J';
$BFA6..$C0AB : result := 'K';
$C0AC..$C2E7 : result := 'L';
$C2E8..$C4C2 : result := 'M';
$C4C3..$C5B5 : result := 'N';
$C5B6..$C5BD : result := 'O';
$C5BE..$C6D9 : result := 'P';
$C6DA..$C8BA : result := 'Q';
$C8BB..$C8F5 : result := 'R';
$C8F6..$CBF9 : result := 'S';
$CBFA..$CDD9 : result := 'T';
$CDDA..$CEF3 : result := 'W';
$CEF4..$D1B8 : result := 'X';
$D1B9..$D4D0 : result := 'Y';
$D4D1..$D7F9 : result := 'Z';
else
Result := '?'
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -