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

📄 datamoudle.pas

📁 学籍管理
💻 PAS
字号:
{                    ===================                               }
{                       客户端数据模块                                 }
{                   ===================                                }
{                                    《学籍管理系统》--作者:贺广兵    }
{                                                                      }
{   可以通过 TLIENTDATASET 和 TDATASETPROVIDER 传递数据表主键键值来    }
{   实现无状态对象和按数据包定量下载数据,但却违反了本系统 的可移植    }
{   性。代码如下,但本系统只列出了代码并没有实现。                     }
{                                                                      }
{**********************************************************************}

unit DataMoudle;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBClient, MConnect, ObjBrkr, SConnect;

type
  TDataModule1 = class(TDataModule)
    ClientDataSet1: TClientDataSet;
    ClientDataSouce: TDataSource;
    SimpleObjectBroker1: TSimpleObjectBroker;
    SocketConnection1: TSocketConnection;
    procedure DataModuleCreate(Sender: TObject);
    procedure DataModuleDestroy(Sender: TObject);
    procedure ClientDataSet1ReconcileError(DataSet: TClientDataSet;
      E: EReconcileError; UpdateKind: TUpdateKind;
      var Action: TReconcileAction);
    procedure ClientDataSet1BeforeGetRecords(Sender: TObject;
      var OwnerData: OleVariant);
  private
    { Private declarations }
  public
    function GetKeyFieldValue(Sender:TObject):OleVariant;
    { Public declarations }
  end;

var
  DataModule1: TDataModule1;

implementation
uses
MainForm, ErrorDlg;

{$R *.DFM}

procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
  With ClientMainForm do
  begin
    DBGrid1.DataSource:=ClientDataSouce;
  end;
end;

procedure TDataModule1.DataModuleDestroy(Sender: TObject);
begin
   ClientDataset1.Active:=False;
   //DCOMConnection1.Connected:=False;
   SocketConnection1.Connected:=False;
end;

procedure TDataModule1.ClientDataSet1ReconcileError(
  DataSet: TClientDataSet; E: EReconcileError; UpdateKind: TUpdateKind;
  var Action: TReconcileAction);
begin
  HandleReconcileError(DataSet,UpdateKind,E); //调用更新错误处理模块
end;

procedure TDataModule1.ClientDataSet1BeforeGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
{  if ((VarIsEmpty(VOwnerData)) or (VarIsNull(VOwnerData)))then
  VOwnerData:=GetKeyFieldValue(Sender);
  OwnerData:=VOwnerdata;  }
end;

function TDataModule1.GetKeyFieldValue(Sender: TObject): OleVariant;
//var
  //CurRecord:TBookMark;
begin
 { if ServerLinked then
  begin
  try
    with Sender as TClientDataSet do
    begin
      CurRecord:=GetBookMark;
      try
        Last;
        Result:=FieldByName('系号').Value;
        GotoBookMark(CurRecord);
      finally
        FreeBookMark(CurRecord);
      end;
    end;
  except on E:Exception do;
  end;
  end; }
end;

end.

⌨️ 快捷键说明

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