📄 datadmp.pas
字号:
unit DataDmP;
interface
uses
SysUtils, Classes, DB, ADODB,IniFiles,Windows,Forms,Messages,Controls,Dialogs;
type
TDataDm = class(TDataModule)
ConUfsystem: TADOConnection;
QryAcc: TADOQuery;
QryAccYear: TADOQuery;
ConDataSys: TADOConnection;
QryUser: TADOQuery;
AdoConUfsoft: TADOConnection;
qryCus: TADOQuery;
ConDestUfsoft: TADOConnection;
procedure DataModuleCreate(Sender: TObject);
Function GetGLAcc:Boolean;
Function ConToDestData:Boolean;
procedure ConToUFData;
Function ConToSysData:Boolean;
Procedure DeleteTabe(SourFile,cType:String);
Procedure DeletePCIDTabe(AdoCon:TADOConnection;SourFile:String);
Function iCountCus(cCusCode:String):Boolean;
procedure CheckLin(cDate:String);
Function GetSysDateTime:TDateTime;
Function GetSysYearMonth:String;
procedure CreateTable(cCheckType: String);
procedure CreateTableBundle(cTable,cCheckType: String);
Function GetBarTable(cCheckType:String):Integer;
procedure CreateSysDataView(cTableName:String);
private
{ Private declarations }
public
DataServer,DataName,DestDataName,DataUser,DataPassword,UserID,MISData,RdCode,Maker:string;
bAdmin,bLin,bVouch01,bVouch08,bVouch09,bVouch10,bVouch11,bVouch12,bVouch18,bVouch32:Boolean;
{ Public declarations }
end;
var
DataDm: TDataDm;
implementation
uses SUFunctionP, FrmMainP;
{$R *.dfm}
procedure TDataDm.CheckLin(cDate: String);
begin
{ if not DataDm.bLin then
begin
Try
if StrToDate(cDate)>StrToDate('2004-11-30') then
begin
Application.MessageBox(Pchar('超出演示版本的最大使用日期!'),'信息',MB_OK+ MB_ICONINFORMATION);
Abort;
end;
Except
Abort;
end;
end;
}
end;
function TDataDm.ConToDestData: Boolean;
Var LsStr:WideString;
DelphiIni:TIniFile;
MIS_DataServer,MIS_DataUser,MIS_DataPassword,MIS_DestDataName:String;
begin
Try
DelphiIni:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'Set.ini');
MIS_DataServer := DelphiIni.ReadString('UFSOFT', 'MISServer',MIS_DataServer);
MIS_DataUser := DelphiIni.ReadString('UFSOFT', 'MISUser',MIS_DataUser);
MIS_DataPassword := DelphiIni.ReadString('UFSOFT', 'MISPass',MIS_DataPassword);
MIS_DestDataName := DelphiIni.ReadString('UFSOFT', 'MISData',MIS_DestDataName);
// VenCode := DelphiIni.ReadString('UFSOFT', 'VenCode',VenCode);
// RdCode := DelphiIni.ReadString('UFSOFT', 'RdCode',RdCode);
// PTCode := DelphiIni.ReadString('UFSOFT', 'PTCode',PTCode);
// CusCode := DelphiIni.ReadString('UFSOFT', 'CusCode',CusCode);
// CusName := DelphiIni.ReadString('UFSOFT', 'CusName',CusName);
// DeptCode := DelphiIni.ReadString('UFSOFT', 'DeptCode',DeptCode);
// Maker := DelphiIni.ReadString('UFSOFT', 'Maker',Maker);
// WHCode := DelphiIni.ReadString('UFSOFT', 'WHCode',WHCode);
DelphiIni.Free;
if MIS_DataPassword<>'' then
MIS_DataPassword:=SUFunction.EncryptionEngine(MIS_DataPassword,'1234',false);
LsStr:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+MIS_DataUser+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
LsStr:=LsStr+'Initial Catalog='+MIS_DestDataName+';Data Source='+MIS_DataServer+';Password='+MIS_DataPassword+';';
ConDestUfsoft.Connected:=False;
ConDestUfsoft.ConnectionString:=LsStr;
ConDestUfsoft.KeepConnection:=True;
ConDestUfsoft.Connected:=True;
Result:=True;
except
Application.MessageBox(Pchar('无法取得['+DestDataName+']的数据.'),'信息',MB_OK+ MB_ICONINFORMATION);
Result:=False;
end;
end;
function TDataDm.ConToSysData: Boolean;
Var LsStr:WideString;
DelphiIni:TIniFile;
begin
Try
DelphiIni:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'Set.ini');
DataServer := DelphiIni.ReadString('UFSOFT', 'Server',DataServer);
DataUser := DelphiIni.ReadString('UFSOFT', 'User',DataUser);
DataPassword := DelphiIni.ReadString('UFSOFT', 'Pass',DataPassword);
DelphiIni.Free;
if DataPassword<>'' then
DataPassword:=SUFunction.EncryptionEngine(DataPassword,'1234',false);
LsStr:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+DataUser+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
LsStr:=LsStr+'Initial Catalog=SysData;Data Source='+DataServer+';Password='+DataPassword+';';
ConDataSys.Connected:=False;
ConDataSys.ConnectionString:=LsStr;
ConDataSys.KeepConnection:=True;
ConDataSys.Connected:=True;
SUFunction.CreateTableView(ConDataSys,'Users');
SUFunction.CreateTableView(ConDataSys,'Register');
SUFunction.CreateTableView(ConDataSys,'AccInformation');
SUFunction.CreateTableView(ConDataSys,'LsBarData');
SUFunction.CreateTableView(ConDataSys,'LsBundleData');
SUFunction.CreateTableView(ConDataSys,'LsBoxMain');
SUFunction.CreateTableView(ConDataSys,'LsBoxList');
Result:=True;
except
Result:=False;
end;
end;
procedure TDataDm.ConToUFData;
Var LsStr:WideString;
Ls1,Ls2:String;
begin
Try
LsStr:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+DataUser+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
LsStr:=LsStr+'Initial Catalog='+DataName+';Data Source='+DataServer+';Password='+DataPassword+';';
AdoConUfsoft.Connected:=False;
AdoConUfsoft.ConnectionString:=LsStr;
AdoConUfsoft.KeepConnection:=True;
AdoConUfsoft.Connected:=True;
SUFunction.CreateTableView(AdoConUfsoft,'Szb_Ini');
SUFunction.CreateTableView(AdoConUfsoft,'Szb_PurIn');
SUFunction.CreateTableView(AdoConUfsoft,'Szb_PurInList');
CreateSysDataView('Bundle');
CreateSysDataView('Box');
CreateSysDataView('LsBarData');
Except
Application.MessageBox(Pchar('无法取得['+DataName+']的数据.'),'信息',MB_OK+ MB_ICONINFORMATION);
Abort;
end;
Ls1:=COPY(DataName,15,1);
Ls2:=IntToStr(StrToInt(Ls1)+1);
if GetBarTable('barCode_'+Ls1)=0 then
CreateTable(Ls1);
if (GetBarTable('barCode_'+Ls2)=0) AND (Ls2<='9') then
CreateTable(Ls2);
Ls1:=COPY(DataName,12,4);
Ls2:=IntToStr(StrToInt(Ls1)+1);
if GetBarTable('Bundle_'+Ls1)=0 then
CreateTableBundle('Bundle',Ls1);
if (GetBarTable('Bundle_'+Ls2)=0) AND (Ls2<='9') then
CreateTableBundle('Bundle',Ls2);
if GetBarTable('Box_'+Ls1)=0 then
CreateTableBundle('Box',Ls1);
if (GetBarTable('Box_'+Ls2)=0) AND (Ls2<='9') then
CreateTableBundle('Box',Ls2);
end;
procedure TDataDm.CreateTable(cCheckType: String);
Var LsQry,LsExec:TADOQuery;
ii:Integer;
LsStr:String;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=ConDataSys;
LsExec:=TADOQuery.Create(Self);
LsExec.Connection:=ConDataSys;
for ii:=1 to 4 do
begin
LsStr:=cCheckType+IntToStr(ii);
LsQry.SQL.Clear;
LsQry.SQL.LoadFromFile(ExtractFilePath(Application.ExeName)+'BarCode.TXT');
LsQry.SQL.Text:=StringReplace(LsQry.SQL.Text, '^YearSeason',LsStr,[rfReplaceAll]);
// LsQry.SQL.SaveToFile('c:\1.txt');
LsQry.ExecSQL;
end;
//更新视图 BarCode
LsExec.SQL.Clear;
LsExec.SQL.Add('Drop view BarCode');
Try
LsExec.ExecSQL;
Except
end;
LsQry.SQL.Clear;
LsQry.SQL.Add('Select top 128 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES');
LsQry.SQL.Add('WHERE (TABLE_TYPE =''BASE TABLE'')');
LsQry.SQL.Add(' and (Table_Name like ''BarCode_%'')');
LsQry.SQL.Add('Order by TABLE_NAME');
LsQry.Open;
LsExec.SQL.Clear;
LsExec.SQL.Add(' CREATE VIEW [dbo].[BarCode] AS');
ii:=0;
while not LsQry.Eof do
begin
if ii>0 then
LsExec.SQL.Add('UNION ALL');
LsExec.SQL.Add('SELECT * FROM '+LsQry.FieldByName('TABLE_NAME').AsString);
LsQry.Next;
ii:=ii+1;
end;
LsExec.ExecSQL;
LsExec.Destroy;
LsQry.Destroy;
end;
procedure TDataDm.CreateTableBundle(cTable,cCheckType: String);
Function TranNum(iMonth:Integer):String;
begin
Result:=IntToStr(iMonth);
if Length(Result)=1 then
Result:='0'+Result;
end;
Var LsQry,LsExec:TADOQuery;
ii:Integer;
LsStr:String;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=ConDataSys;
LsExec:=TADOQuery.Create(Self);
LsExec.Connection:=ConDataSys;
for ii:=1 to 12 do
begin
LsStr:=cCheckType+TranNum(ii);
LsQry.SQL.Clear;
LsQry.SQL.LoadFromFile(ExtractFilePath(Application.ExeName)+cTable+'.TXT');
LsQry.SQL.Text:=StringReplace(LsQry.SQL.Text, '^cYearMonth',LsStr,[rfReplaceAll]);
// LsQry.SQL.SaveToFile('c:\1.txt');
LsQry.ExecSQL;
end;
//更新视图 BarCode
LsExec.SQL.Clear;
LsExec.SQL.Add('Drop view '+cTable);
Try
LsExec.ExecSQL;
Except
end;
LsQry.SQL.Clear;
LsQry.SQL.Add('Select top 128 TABLE_NAME FROM INFORMATION_SCHEMA.TABLES');
LsQry.SQL.Add('WHERE (TABLE_TYPE =''BASE TABLE'')');
LsQry.SQL.Add(' and (Table_Name like '''+cTable+'_%'')');
LsQry.SQL.Add('Order by TABLE_NAME');
// LsQry.SQL.SaveToFile('c:\1.txt');
LsQry.Open;
LsExec.SQL.Clear;
LsExec.SQL.Add('CREATE VIEW [dbo].['+cTable+'] AS');
ii:=0;
while not LsQry.Eof do
begin
if ii>0 then
LsExec.SQL.Add('UNION ALL');
LsExec.SQL.Add('SELECT * FROM '+LsQry.FieldByName('TABLE_NAME').AsString);
LsQry.Next;
ii:=ii+1;
end;
// LsExec.SQL.SaveToFile('c:\1.txt');
LsExec.ExecSQL;
LsExec.Destroy;
LsQry.Destroy;
end;
procedure TDataDm.CreateSysDataView(cTableName: String);
Var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=AdoConUfsoft;
LsQry.SQL.Add('select count(*) as iCreateTable from sysobjects where name = '''+cTableName+'''');
LsQry.Open;
if (LsQry.FieldByName('iCreateTable').AsInteger=0) then
begin
LsQry.Close;
LsQry.SQL.Clear;
LsQry.SQL.Add('Create view '+cTableName+' as');
LsQry.SQL.Add('select * from sysdata..'+cTableName);
try
LsQry.ExecSQL;
except
Application.MessageBox(Pchar('创建视图['+cTableName+']出错.'),'信息',MB_OK+ MB_ICONINFORMATION);
end;
end;
end;
procedure TDataDm.DataModuleCreate(Sender: TObject);
begin
ShortDateFormat:='YYYY-MM-DD';
// GetGLAcc;
end;
procedure TDataDm.DeletePCIDTabe(AdoCon:TADOConnection;SourFile: String);
Var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=AdoCon;
LsQry.SQL.Add('DELETE From '+SourFile);
LsQry.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
LsQry.ExecSQL;
LsQry.Destroy;
end;
procedure TDataDm.DeleteTabe(SourFile,cType: String);
Var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.AdoConUfsoft;
LsQry.SQL.Add('DELETE From '+SourFile);
LsQry.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
LsQry.SQL.Add(' And (cVouchType='''+cType+''')');
LsQry.ExecSQL;
LsQry.Destroy;
end;
function TDataDm.GetBarTable(cCheckType: String): Integer;
var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=ConDataSys;
LsQry.SQL.Clear;
LsQry.SQL.Add('Select count(*) as iNum FROM INFORMATION_SCHEMA.TABLES');
LsQry.SQL.Add('WHERE (TABLE_TYPE =''BASE TABLE'')');
LsQry.SQL.Add(' and (Table_Name like '''+cCheckType+'%'')');
LsQry.Open;
Result:=LsQry.FieldByName('iNum').AsInteger;
LsQry.Destroy;
end;
function TDataDm.GetGLAcc: Boolean;
Var LsStr:WideString;
DelphiIni:TIniFile;
begin
ShortDateFormat:='yyyy-mm-dd';
Try
DelphiIni:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'Set.ini');
DataServer:= DelphiIni.ReadString('UFSOFT', 'Server',DataServer);
DataUser:= DelphiIni.ReadString('UFSOFT', 'User',DataUser);
DataPassword:= DelphiIni.ReadString('UFSOFT', 'Pass',DataPassword);
DataName:= DelphiIni.ReadString('UFSOFT', 'DataName',DataName);
MISData:= DelphiIni.ReadString('UFSOFT', 'MISData',MISData);
UserID:= DelphiIni.ReadString('UFSOFT', 'UserID',UserID);
DelphiIni.Free;
if DataPassword<>'' then
DataPassword:=SUFunction.EncryptionEngine(DataPassword,'1234',false);
LsStr:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+DataUser+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;';
LsStr:=LsStr+'Initial Catalog=UFSYSTEM;Data Source='+DataServer+';Password='+DataPassword+';';
ConUfsystem.Connected:=False;
ConUfsystem.ConnectionString:=LsStr;
ConUfsystem.KeepConnection:=True;
ConUfsystem.Connected:=True;
Result:=True;
except
Application.MessageBox(Pchar('无法取得['+DataServer+']的数据.'),'信息',MB_OK+ MB_ICONINFORMATION);
Result:=False;
end;
end;
function TDataDm.GetSysDateTime: TDateTime;
Var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.ConDataSys;
LsQry.SQL.Add('select getdate() as dSysdate ');
LsQry.Open;
Result:=LsQry.FieldByName('dSysdate').AsDateTime;
LsQry.Destroy;
end;
function TDataDm.GetSysYearMonth: String;
Function TranNum(iMonth:Integer):String;
begin
Result:=IntToStr(iMonth);
if Length(Result)=1 then
Result:='0'+Result;
end;
Var LsDate:TDate;
Year, Month, Day: Word;
begin
LsDate:=DataDm.GetSysDateTime;
DecodeDate(LsDate, Year, Month, Day);
Result:=IntToStr(Year)+TranNum(Month);
end;
function TDataDm.iCountCus(cCusCode: String): Boolean;
Var LsQry:TADOQuery;
begin
LsQry:=TADOQuery.Create(Self);
LsQry.Connection:=DataDm.AdoConUfsoft;
LsQry.SQL.Clear;
LsQry.SQL.Add('SELECT COUNT(*) AS iCOUNT FROM dbo.Customer WHERE (cCusCode = '''+cCusCode+''')');
LsQry.Open;
Result:=False;
if LsQry.FieldByName('iCOUNT').AsInteger>0 then
Result:=True;
LsQry.Destroy;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -