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

📄 dm.pas

📁 不完备信息的数据发现
💻 PAS
字号:
unit dm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,ComCtrls,
  ExtCtrls,Db, DBTables, DBClient, MConnect,inifiles, SConnect,Mask,Grids,
  Excel97,COMobj,StdCtrls, DBGrids,Variants,Shellapi,winsock, DBCtrls,
  Menus, types,
  Zlib, ADODB;

type
    TDMf = class(TDataModule)
    SaveDialog1: TSaveDialog;
    OpenDialog1: TOpenDialog;
    Q_load: TADOQuery;

  private
    procedure PageControlDrawTab(Control: TCustomTabControl;
      TabIndex: Integer; const Rect: TRect; Active: Boolean);
    procedure ToKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    { Private declarations }
  public
    { Public declarations }
   procedure SelectDate(sCDS:TClientDataSet; sFieldName:string);
   procedure MDupdata(var MCDS,DCDS:Tclientdataset;MTbName,DTbName:string;out ErrorMessage:string);
   function  getipaddress:string;
   function  ShowHostName:string;
   function PosEx(const SubStr, S: string): integer;
   procedure FillComboBox(Sender: TObject; TableName: string; FieldName: string);
  end;


Const
  MainRegistryPath='\Software\Jari Erp Soft\JXC SubSystem\'; //保存设置的注册表主路径

var
  DMf: TDMf;
  canmodified:Boolean;//是否有修改权限
  userno,username,userrole,workmen_bm,ipaddress,userbmbh,userbmmc:string;//用户编号、用户名称、用户角色、用户部门、用户IP、用户部门编号
  xzztbh,ztxx:string;//选择帐套编号、帐套信息
  dwmc:string;//单位名称
  DatabaseName:string;//数据库名称
  ErrorMessage:string;//错误信息
  form_name:Tform;//通用查询中的form名
  dbgrid_name:Tdbgrid;//通用查询中的datagrid名
  datasource_name:Tdatasource;//通用查询中的datasource名
  table_name:string;//通用查询中的表名
  chda_array:array[0..20] of string;//存货档案数组
  fz_array:array[0..20] of string;//复制
  ckcondition:string;  //入库单中选货位时设定仓库条件,只显示本仓库中的货位
  color_panel:integer= $00DCDCDC;
  color_dbgrid:integer=$00DCDCDC;
  color_StatusBar:integer=$00DCDCDC;
  color_Form:integer=$00DCDCDC;
  color_Top:integer=$00DCDCDC;
  qcnian,qcyue:integer;//期初年份和月份 (即系统启用年份和月份)
  usernian,useryue:integer;//操作年度和月份
  userrq:string; //系统的操作日期
  sfjzbz:string; //是否结帐标志
  rkd1:array[0..20] of string;
  ckd1:array[0..20] of string;
  ISinsert:boolean;   //判断按纽是增加还是修改
  SelAffirm:integer;//查询\选择确认标志
  affirmb:integer;//查询确认标志
  sql_condition:string;//sql条件
  cxtj:string;//查询条件
  tjtj:string;//统计条件
  crkd_condition:string;//查看入库单详细信息时的select语句条件
  cckd_condition:string;//查看出库单详细信息时的select语句条件
  ime_name:string;//设置输入法;

  procedure MyAssert(Assert:boolean;Msg:string;FocusCtrl:TWinControl=nil);
implementation

uses main_page;

{$R *.DFM}
procedure MyAssert(Assert:boolean;Msg:String;FocusCtrl:TWinControl=nil);   //断言,当断言Assert为假时Abort
begin
  if not Assert then
  begin
    MessageBox(0,PChar(Msg),'提示信息', MB_ICONSTOP or MB_OK or MB_SYSTEMMODAL);
    if FocusCtrl<>nil then FocusCtrl.SetFocus;
    Abort;
  end;
end;

procedure TDMf.FillComboBox(Sender: TObject; TableName: string; FieldName: string);
begin
  try
    Q_load.Close;
    Q_load.sql.text := 'select distinct ' + FieldName + ' from ' + TableName + ' order by ' + FieldName;
    Q_load.Open;
  except
    exit;
  end;
  //清空ComboBox或DBComboBox
  TCombobox(Sender).clear;
  Q_load.first;
  //将CDS_load中指定Fieldname的值赋于ComboBox或DBComboBox,循环赋值。
  while not (Q_load.Eof) do
  begin
    TCombobox(Sender).Items.add(Q_load.FieldByName(FieldName).AsString);
    Q_load.next;
  end;
  Q_load.first;
  //将CDS_load中指定Fieldname的第一个值赋于ComboBox或DBComboBox。
  TCombobox(Sender).Text := Q_load.FieldByName(FieldName).AsString;
  Q_load.Close;
end;

procedure Tdmf.SelectDate(sCDS:TClientDataSet; sFieldName:string);
begin
  //选择日期
{ UCalendarf:=TUCalendarf.Create(nil);
  with UCalendarf do
  try
    ShowModal;
  Finally
    //如果选日期标志为1,则赋值,否则不赋值。
    if uaffirmb=1 then
    begin
      sCDS.edit;
      sCDS.FieldByName(sFieldName).asstring:=datetostr(UCalendarf.Calendar1.CalendarDate);
    end;
    //将UCalendar1释放
    Free;
  end;  }
  end;

procedure  TDMf.MDupdata(var MCDS,DCDS:Tclientdataset;MTbName,DTbName:string;out ErrorMessage:string);
begin
end;



//得到用户机器的IP地址
function TDMf.getipaddress:string;
var
ip:string;
ch:array[1..32] of char;
i:integer;
wsdata:Twsadata;
myhost:phostent;
begin
  if wsastartup(2,wsdata)<>0 then
   begin
    MessageDlg('没有成功返回!',mtInformation,[mbOK],0);
    Halt(2);
   end;
  try
   if gethostname(@ch[1],32)<>0 then
    begin
     MessageDlg('没有成功返回!',mtInformation,[mbOK],0);
     Halt(3);
    end;
  except
   MessageDlg('没有成功返回!',mtInformation,[mbOK],0);
   Halt(3);
  end;
  myhost:=gethostbyname(@ch[1]);
  if myhost=nil then
   begin
    MessageDlg('IP地址为空!',mtInformation,[mbOK],0);
    Halt(4);
   end
  else
   begin
    for i:=1 to 4 do
     begin
      ip:=IntToStr(ord(myhost.h_addr^[i-1]));
      Result:=Result+ip;
      if i<4 then
       Result:=Result+'.';
     end;
   end;
end;

//得到机器名
function TDMf.ShowHostName:string;
var
  wVersionRequested : WORD;
  wsaData : TWSAData;
  p : PHostEnt;
  s : array[0..128] of char;
begin
{启动 WinSock}
  wVersionRequested := MAKEWORD(1, 1);
  WSAStartup(wVersionRequested, wsaData);

{计算机名}
  GetHostName(@s, 128);
  p := GetHostByName(@s);
  result:=(Format('%s', [p^.h_Name]));
  WSACleanup;
end;
procedure Tdmf.ToKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key=13 then //按的是回车键
   if Sender is TDBEdit then
     if (Sender as TDBEdit).Owner is TForm then
     PostMessage(((Sender as TDBEdit).Owner as TForm).Handle,WM_KEYDOWN,VK_TAB,0);
end;

procedure Tdmf.PageControlDrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
   Control.Canvas.Brush.Color:=color_Panel;
   Control.Canvas.FillRect(Rect);
   Control.Canvas.TextOut(Control.TabRect(TabIndex).Left+5,Control.TabRect(TabIndex).Top+3,(Control as TPageControl).Pages[TabIndex].Caption);
end;

function Tdmf.PosEx(const SubStr, S: string): integer; //取出第一个已知字符的位置
var
  i, X: integer;
begin
  i := 1;
  while i <= Length(S) do
  begin
    if S[i] <> SubStr then Inc(i);
    if S[i] = SubStr then
    begin
      Result := i;
      exit;
    end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -