WZGL_RDB.pas
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:6k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit WZGL_RDB;
  2. {$WARN SYMBOL_PLATFORM OFF}
  3. interface
  4. uses
  5.   Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
  6.   DBClient, P_server_TLB, StdVcl, DBTables, DB, Provider, variants, ComCtrls;
  7. type
  8.   TWZGL = class(TRemoteDataModule, IWZGL)
  9.     Q_QXGL_ZHNR: TQuery;
  10.     Q_QXGL_ZHSZ: TQuery;
  11.     S_QXGL_ZHSZ: TDataSource;
  12.     P_QXGL_ZHSZ: TDataSetProvider;
  13.     Q_QXGL_YHSZ: TQuery;
  14.     P_QXGL_YHSZ: TDataSetProvider;
  15.     Q_General: TQuery;
  16.     Q_QXGL_ZHNR_INDEX: TQuery;
  17.     P_QXGL_ZHNR_INDEX: TDataSetProvider;
  18.     Q_ZGDA: TQuery;
  19.     Q_BMDA: TQuery;
  20.     P_ZGDA: TDataSetProvider;
  21.     P_BMDA: TDataSetProvider;
  22.     Q_DQFLB: TQuery;
  23.     P_DQFLB: TDataSetProvider;
  24.     Q_GYSFLB: TQuery;
  25.     P_GYSFLB: TDataSetProvider;
  26.     Q_GYSDA: TQuery;
  27.     P_GYSDA: TDataSetProvider;
  28.     P_CKXX: TDataSetProvider;
  29.     Q_JFDW: TQuery;
  30.     Q_YFDW: TQuery;
  31.     P_JFDW: TDataSetProvider;
  32.     P_YFDW: TDataSetProvider;
  33.     Q_GCXMDYB: TQuery;
  34.     P_GCXMDYB: TDataSetProvider;
  35.     P_CLBM: TDataSetProvider;
  36.     Q_CLBM: TQuery;
  37.     P_General: TDataSetProvider;
  38.     Q_CLSLD_CX: TQuery;
  39.     P_CLSLD_CX: TDataSetProvider;
  40.     Q_CLSLD: TQuery;
  41.     Q_CLSLD_DETAIL: TQuery;
  42.     S_CLSLD: TDataSource;
  43.     P_CLSLD: TDataSetProvider;
  44.     P_CLSLD_DETAIL_INDEX: TDataSetProvider;
  45.     Q_CLSLD_DETAIL_INDEX: TQuery;
  46.     Q_CLBM_TEMP: TQuery;
  47.     P_CLBM_TEMP: TDataSetProvider;
  48.     Q_CKXX: TQuery;
  49.     Q_BMLLD: TQuery;
  50.     Q_BMLLD_DETAIL: TQuery;
  51.     Q_BMLLD_DETAIL_INDEX: TQuery;
  52.     Q_BMLLD_CX: TQuery;
  53.     S_BMLLD: TDataSource;
  54.     P_BMLLD: TDataSetProvider;
  55.     P_BMLLD_DETAIL_INDEX: TDataSetProvider;
  56.     P_BMLLD_CX: TDataSetProvider;
  57.     Q_KCPD: TQuery;
  58.     Q_KCPD_DETAIL: TQuery;
  59.     Q_KCPD_DETAIL_INDEX: TQuery;
  60.     Q_KCPD_CX: TQuery;
  61.     S_KCPD: TDataSource;
  62.     P_KCPD: TDataSetProvider;
  63.     P_KCPD_DETAIL_INDEX: TDataSetProvider;
  64.     P_KCPD_CX: TDataSetProvider;
  65.     Q_KC: TQuery;
  66.     P_KC: TDataSetProvider;
  67.   private
  68.     { Private declarations }
  69.   protected
  70.     class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
  71.     procedure GetFuncs(aZh: OleVariant; var vFuncs: OleVariant); safecall;
  72.     procedure Logined(bAliasName, aPassword: OleVariant; var aYhbh, aZH,
  73.       aLogined: OleVariant); safecall;
  74.     procedure AddUser(Host, IP, UserAlias, ConnTime: OleVariant); safecall;
  75.     procedure DelUser(Host, IP, UserAlias, ConnTime: OleVariant); safecall;
  76.     procedure GetSysTime(var aTime: OleVariant); safecall;
  77.     procedure updatePassword(bAliasName, aPassword: OleVariant;
  78.       var aResult: OleVariant); safecall;
  79.   public
  80.     { Public declarations }
  81.   end;
  82. implementation
  83. uses U_server;
  84. {$R *.DFM}
  85. class procedure TWZGL.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
  86. begin
  87.   if Register then
  88.   begin
  89.     inherited UpdateRegistry(Register, ClassID, ProgID);
  90.     EnableSocketTransport(ClassID);
  91.     EnableWebTransport(ClassID);
  92.   end else
  93.   begin
  94.     DisableSocketTransport(ClassID);
  95.     DisableWebTransport(ClassID);
  96.     inherited UpdateRegistry(Register, ClassID, ProgID);
  97.   end;
  98. end;
  99. {根据传进来的组号(aZh),检索出相对应的功能列表,存入vFuncs数组}
  100. procedure TWZGL.GetFuncs(aZh: OleVariant; var vFuncs: OleVariant);
  101. var
  102.   sqlString: string;
  103.   i: integer;
  104. begin
  105.   //sql赋值
  106.   sqlString := 'select 功能项 from WZ_QXGL_ZHNR where 组号=' + '''' + aZh + '''';
  107.   Q_General.Close;
  108.   Q_General.SQL.Clear;
  109.   Q_General.SQL.Add(sqlString);
  110.   try
  111.     Q_General.Open;
  112.   except
  113.     exit;
  114.   end;
  115.   vFuncs := varArrayCreate([0, Q_General.RecordCount], varVariant);
  116.   i := 0;
  117.   //将查到的功能项存入数组
  118.   while not Q_General.Eof do
  119.   begin
  120.     vFuncs[i] := Q_General.Fields[0].asString;
  121.     Q_General.Next;
  122.     i := i + 1;
  123.   end;
  124. end;
  125. {根据传进来的bAliasName,aPassword,来验证是否是有效的身份}
  126. procedure TWZGL.Logined(bAliasName, aPassword: OleVariant; var aYhbh, aZH,
  127.   aLogined: OleVariant);
  128. var
  129.   sqlString: string;
  130. begin
  131.   aLogined := True;
  132.   //用SQL语句来判断身份是否存在
  133.   sqlString := 'select 用户编号,用户组号 from wz_qxgl_yhsz where 用户别名=' + '''' + bAliasName + ''' and ';
  134.   sqlString := sqlString + ' 用户密码=' + '''' + aPassword + '''';
  135.   Q_General.Close;
  136.   Q_General.SQL.Clear;
  137.   Q_General.SQL.Add(sqlString);
  138.   try
  139.     Q_General.Open;
  140.   except
  141.     aLogined := False;
  142.     exit;
  143.   end;
  144.   if Q_General.RecordCount = 0 then //查到记录为O,代表身份不存在
  145.   begin
  146.     aLogined := False;
  147.     exit;
  148.   end;
  149.   aYHBH := Q_General.FieldByName('用户编号').asString; //输出用户编号
  150.   aZH := Q_General.FieldbyName('用户组号').asString; //输出用户组号
  151. end;
  152. {当有客户端连接时,添加一条显示信息到主窗口的列表框(ListView)}
  153. procedure TWZGL.AddUser(Host, IP, UserAlias, ConnTime: OleVariant);
  154. var
  155.   aListItem: TListItem;
  156. begin
  157.   with frmMain do
  158.   begin
  159.     aListItem := ListView.Items.Add;
  160.     aListItem.Caption := Host;
  161.     aListItem.SubItems.add(IP);
  162.     aListItem.SubItems.Add(UserAlias);
  163.     aListItem.SubItems.Add(ConnTime);
  164.   end;
  165. end;
  166. {当有客户端断开时,删除相应的显示信息}
  167. procedure TWZGL.DelUser(Host, IP, UserAlias, ConnTime: OleVariant);
  168. var
  169.   i: integer;
  170. begin
  171.   with frmMain do
  172.   begin
  173.     for i := 0 to ListView.Items.Count - 1 do
  174.     begin
  175.       if (ListView.Items.Item[i].Caption = Host) and
  176.         (ListView.Items.Item[i].SubItems[0] = IP) and
  177.         (ListView.Items.Item[i].SubItems[1] = UserAlias) and
  178.         (ListView.Items.Item[i].SubItems[2] = ConnTime) then
  179.       begin
  180.         ListView.Items.Delete(i);
  181.         exit;
  182.       end;
  183.     end;
  184.   end;
  185. end;
  186. {获取数据库当前系统时间}
  187. procedure TWZGL.GetSysTime(var aTime: OleVariant);
  188. begin
  189.   Q_General.Close;
  190.   Q_General.SQL.Clear;
  191.   //得到数据库的当前时间
  192.   Q_General.SQL.Add('select aTime = getDate()');
  193.   Q_General.Open;
  194.   aTime := Q_General.Fields[0].AsString;
  195.   Q_General.Close;
  196. end;
  197. procedure TWZGL.updatePassword(bAliasName, aPassword: OleVariant;
  198.   var aResult: OleVariant);
  199. var
  200.   sqlString: string;
  201. begin
  202.   aResult := True;
  203.   sqlString := 'update WZ_QXGL_YHSZ set 用户密码=' + '''' + aPassword + '''';
  204.   sqlString := sqlString + ' where 用户别名=' + '''' + bAliasName + '''';
  205.   Q_General.Close;
  206.   Q_General.SQL.Clear;
  207.   Q_General.SQL.Add(sqlString);
  208.   try
  209.     Q_General.ExecSQL;
  210.   except
  211.     aResult := False;
  212.   end;
  213. end;
  214. initialization
  215.   TComponentFactory.Create(ComServer, TWZGL,
  216.     Class_WZGL, ciMultiInstance, tmApartment);
  217. end.