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

📄 dm.pas

📁 客户档案管理-delphi开发
💻 PAS
字号:
unit dm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, DB,
  ADODB, bsMessages, bsSkinData, Forms, Dialogs, IniFiles;

type
  Tdbs = class(TDataModule)
    ADOConn: TADOConnection;
    bsSkinData1: TbsSkinData;
    bsCompressedStoredSkin1: TbsCompressedStoredSkin;
    dlgMsg: TbsSkinMessage;
  private
    { Private declarations }
  public
    { Public declarations }
    psYWY, psPassword : String; // 人员名,人员密码
    piGB : Integer; // 人员级别
    // 经理 := 2   录入员 := 1 业务员 := 0
    
    procedure CreateForm(FormClass: TFormClass);

    procedure ShowMsgDlgInf(Txt : String);
    function  ShowMsgDlgCfm(Cap, Txt : String) : TModalResult;
    procedure PostWithError(DataSet: TDataSet);

    procedure CopyRecord(DataSet: TDataSet);
  end;

var
  dbs: Tdbs;

implementation

{$R *.dfm}

procedure Tdbs.CreateForm(FormClass: TFormClass);
begin      // 创建窗体
  with FormClass.Create(self) do
  try
    ShowModal;
  finally
    Free;
  end;
end;

procedure Tdbs.ShowMsgDlgInf(Txt : String);
begin
  dlgMsg.MessageDlg(Txt, mtInformation, [mbOK], 0);
end;

function  Tdbs.ShowMsgDlgCfm(Cap, Txt : String) : TModalResult;
begin
  Result := dlgMsg.MessageDlg2(Txt, Cap, mtConfirmation, [mbYes, mbNo], 0);
end;

procedure Tdbs.PostWithError(DataSet: TDataSet);
begin
  with DataSet do
  try
    Post;
  except
    if DBS.ADOConn.Errors.Count > 0 then
    begin
//      ShowMsgDlgInf(IntToStr(DBS.ADOConn.Errors[0].NativeError));
      case DBS.ADOConn.Errors[0].NativeError of
        2627 : ShowMsgDlgInf('数据库错误(关键字重复): 数据库中已经存在相同主关键字的记录!');
        515  : ShowMsgDlgInf('数据库错误(缺少数据项): 字段必须输入数据!')
      else
        ShowMsgDlgInf('数据库更新失败, 错误代码:' + IntToStr(DBS.ADOConn.Errors[0].NativeError));
      end;
      Abort;
    end;
  end;
end;

procedure Tdbs.CopyRecord(DataSet: TDataSet);
var
  aField : Variant;
  I : Integer;
begin        // 复制当前记录
  with DataSet do
  begin
    // 创建一个VARIANT数组
    aField := VarArrayCreate([0, FieldCount -1], VarVariant);
    // 读数据到数组
    for I := 0 to FieldCount - 1 do
      if Fields[I].Tag = 0 then
        aField[I] := Fields[I].Value;

    Append;      // 复制数组数据到数据库
    // 如果数据库表格使用自动编号,则不能按此方法复制
    for I := 0 to FieldCount - 1 do
      if Fields[I].Tag = 0 then
        Fields[I].Value := aField[I];
  end;
end;

end.

⌨️ 快捷键说明

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