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

📄 datadmp.pas

📁 二次开发模块 一、条形码的批量生成
💻 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 + -