📄 tczy.pas
字号:
unit TCzy;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Dialogs,DB,ADODB;
type
TCzyXX = Class(TObject)
private
FCzybh: String;//操作员编号
FCzymc: String;//操作员名称
FCzyqx: integer;//操作员权限
FCzymm: String;//操作员密码
FTableName: String;//记录数据集对象连接的数据表
FFieldName: String;//记录数据表中操作员编号的字段名
FFieldNames: Array of String;//记录表所有的字段
FFieldCount: integer;//字段数
Procedure WriteCzybh(Bh: String);
Procedure WriteCzymc(Mc: String);
Procedure WriteCzyqx(Qx: Integer);
Procedure WriteCzymm(Mm: String);
Procedure WriteTableName(Table: String);
Procedure WriteFieldName(Field: String);
Published
DataSet: TADOQuery;
Property FWriteFieldName: String Read FFieldName write WriteFieldName;
Property FWriteTableName : String Read FTableName Write WritetableName;
Property Czybh: String Read FCzybh Write WriteCzybh;
Property Czymc: String Read FCzymc Write WriteCzymc;
Property Czyqx: Integer Read FCzyqx Write WriteCzyqx;
Property Czymm: String Read FCzymm Write WriteCzymm;
Procedure ConnectDataBase(ConnectInfo: String);//连接数据库
Function AddCzybh: String;Virtual; //添加操作员编号
Procedure SaveCzyXX;Virtual; //保存操作员信息
Procedure SetFieldCount(Count: Integer);Virtual;
Procedure DelCzyXX(FieldName1: String;Value: Variant);virtual;//删除操作员信息,参数为删除条件
Procedure SelCzyXX;Overload;Virtual;//查询所有操作员信息
Procedure UpDateCzyXX(Values: Array of Variant;FieldName: String;Value: Variant);Virtual;//修改操作员信息
//参数Values指定修改的值,参数FieldName,Value指定修改条件
Public
Procedure WriteFieldNames(index: Integer;FieldName: String);
Procedure SelCzyXX(FieldName: String;Value: Variant);Overload;Virtual;//查询符合条件的操作员信息
Constructor Create;virtual;
Destructor Destroy; Override;
end;
implementation
{ TCzyXX }
Function TCzyXX.AddCzybh : String;
var
Bh,m: String; //Bh记录生成的编号
i: integer;
begin
Bh:= 'C'+ FormatDateTime('yyyy',Now());
with DataSet do
begin
SQL.Clear;
SQL.Add('select ' + 'Max(' + FFieldName +')'+' as ss '+ ' from '+ FTableName );
Open;
end;
If DataSet.FieldByName('ss').Value = null then
Bh := bh + '001'
else
begin
m:= Trim(DataSet.FieldByName('ss').Value) ;
i:= StrToInt(Trim(Copy(m,6,8))) ;
if i<9 then
Bh:= Bh + '00'+ InttoStr(i +1)
else if i<99 then
Bh:= Bh + '0'+ InttoStr(i +1)
else
Bh:= Bh +InttoStr(i +1);
end;
Result := Bh;
end;
procedure TCzyXX.ConnectDataBase(ConnectInfo: String);
begin
DataSet.ConnectionString := ConnectInfo;
end;
constructor TCzyXX.Create;
begin
inherited;
FCzybh := '';
FCzymc := '';
FCzyqx := 0;
FCzymm := '';
FTableName := '';
FFieldName:= '';
FFieldCount:=0;
Try
DataSet := TADOQuery.Create(Nil);
Except
FreeAndNil(DataSet);
ShowMessage('对象创建失败.');
End;
end;
procedure TCzyXX.DelCzyXX(FieldName1: String;Value: Variant);
begin
with DataSet do
begin
Close;
SQL.Clear;
SQL.Add('delete '+ FTableName + ' where '+ FieldName1 + ' =:a ');
Parameters.ParamByName('a').Value := Value;
ExecSQL;
end;
end;
destructor TCzyXX.Destroy;
var
spid: Integer;
begin
with DataSet do
begin
Close;
SQL.Clear;
SQL.Add('select @@spid as temp');
open;
end;
if DataSet.RecordCount>0 then
begin
spid := DataSet.Fields[0].Value;
with DataSet do
begin
Close;
SQL.Clear;
SQL.Add('use master kill '+ IntToStr(spid));
ExecSQL;
end;
end;
inherited;
FreeAndNil(DataSet);
end;
procedure TCzyXX.SaveCzyXX;
begin
with DataSet do
begin
Close;
SQL.Clear;
SQL.Add('insert '+ FTableName + ' Values (:a,:b,:c,:d)');
Parameters.ParamByName('a').Value := Trim(FCzybh);
Parameters.ParamByName('b').Value := Trim(FCzymc);
parameters.ParamByName('c').Value := FCzyqx;
Parameters.ParamByName('d').Value := Trim(FCzymm);
ExecSQL;
end;
end;
procedure TCzyXX.SelCzyXX;
begin
with DataSet do
begin
Close;
SQL.Clear;
SQL.Add('select * from '+ FTableName);
Open;
end;
end;
procedure TCzyXX.SelCzyXX(FieldName: String; Value: Variant);
begin
with DataSet do
begin
Close;
SQL.Clear;
SQL.Add('select * from '+ FTableName + ' where ' + FieldName + ' = :a');
Parameters.ParamByName('a').Value := Value;
Open;
end;
end;
procedure TCzyXX.SetFieldCount(Count: Integer);
begin
FFieldCount := Count;
SetLength(FFieldNames,Count);
end;
procedure TCzyXX.UpDateCzyXX(Values: Array of Variant;FieldName: String;Value: Variant);
var
i,m: Integer;
ParamList: Array of String; //记录参数名
n: String;
begin
SetLength(ParamList,FFieldCount);
For i := 0 to FFieldCount-1 do
ParamList[i]:= 'a'+ IntToStr(i);
for m := 0 to FFieldCount-1 do
begin
if m <> FFieldCount-1 then
n:= n+ FFieldNames[m] + ' =:'+ParamList[m]+' ,'
else
n:= n+ FFieldNames[m] + ' =:'+ParamList[m];
end;
with Self.DataSet do
begin
Close;
SQL.Clear;
SQL.Add('Update ' + FTableName +' Set ' + n );
SQL.Add('where '+ FieldName + '= :a');
For i:= 0 to FFieldCount-1 do
Parameters.ParamByName(ParamList[i]).Value := Values[i];
Parameters.ParamByName('a').Value := Value;
ExecSQL;
end;
end;
procedure TCzyXX.WriteCzybh(Bh: String);
begin
FCzybh := Bh;
end;
procedure TCzyXX.WriteCzymc(Mc: String);
begin
FCzymc := Mc;
end;
procedure TCzyXX.WriteCzymm(Mm: String);
begin
FCzymm := Mm;
end;
procedure TCzyXX.WriteCzyqx(Qx: Integer);
begin
FCzyqx := Qx;
end;
procedure TCzyXX.WriteFieldName(Field: String);
begin
FFieldname := Field;
end;
procedure TCzyXX.WriteFieldNames(Index: integer;FieldName: String);
begin
FFieldNames[Index]:= FieldName;
end;
procedure TCzyXX.WriteTableName(Table: String);
begin
FTableName := Table;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -