📄 uadoset.~pas
字号:
unit uAdoSet;
interface
uses
Windows,
Messages,
dialogs,
StdCtrls,
SysUtils,
Grids,
comCtrls,
ExtCtrls,
Variants,
AdoDB,
DB,
DBGrids,
Controls,
winTypes,
WinProcs,
IniFiles,
EasyGrid,
strUtils,
uString,
Classes;
Type
TuAdoSet=class
TValue:Array of TStringlist;
private
_FQuery:TAdoQuery;
_FDataSource:TDataSource;
_FStoreP:TAdoStoredProc;
_FDBType:integer;
_FdbName:string;
_FServerName:string;
_FLoginID:string;
_FPassWord:string;
_FSqlString:string;
_FParamList:TStringList;
_saveParam:TStringList;
_str:TuString;
procedure setParamList(Value:TStringList);
procedure setSqlString(Value:string);
procedure setDBType(dbType:integer);
procedure setDatabaseName(Value:string);
procedure ReadIni(inifile:string);
public
constructor Create(DbName:string;DbType:integer);overload;
Function getRecordCount(_Sql:string;paramValues:TStringList):integer;overload;
//Function getRecordCount(_Sql:string;paramValues:TStringList):string;overload;
Function getRecordCount(_TableName:string):integer;overload;
Function getRecordCount:integer;overload;
Function isRecordExist(_Sql:string;paramValues:TStringList):boolean;overload;
Function isRecordExist:boolean;overload;
procedure FillControl(_ctrl:TControl;_Sql:string;paramValues:TStringList;FieldName:string);overload;
procedure FillControl(_ctrl:TControl;FieldName:string);overload;
procedure FillControl(_ctrl:TControl;_TableName:string;FieldName:string);overload;
procedure FillControl(_ctrl:TTreeView;Node:TTreeNode;_Sql:string;paramValues:TStringList;FieldName:string);overload;
procedure FillControl(_ctrl:TTreeView;Node:TTreeNode;FieldName:string);overload;
procedure BindToGrid(_ctrl:TControl;_Sql:string;paramValues:TStringList);overload;
procedure BindToGrid(_ctrl:TControl);overload;
procedure BindToGrid(AdoQuery:TAdoQuery;_ctrl:TDBGrid;_sql:string;paramValues:TStringList);overload;
procedure BindToGrid_JK(_ctrl:TControl;_Sql:string;paramValues:TStringList);overload;
procedure BindToGrid_JK(_ctrl:TControl;_Sql:string;paramValues:TStringList;bCol:integer;eCol:integer;bRow:integer);overload;
Function getFieldValue(_Sql:string;paramValues:TStringList;FieldName:string):Variant;overload;
Function getFieldValue(FieldName:string):Variant;overload;
Function getFieldList(_Sql:string;paramValues:TStringList;FieldName:string):TStringList;overload;
Function getFieldList(FieldName:string):TStringList;overload;
procedure getRecordList(_Sql:string;paramValues:TStringList;Value:Array of TStringList);overload;
procedure getRecordList(Value:Array of TStringList);overload;
Function getFieldSum(_Sql:string;paramValues:TStringList;FieldName:string):Variant;overload;
Function getFieldSum(FieldName:string):Variant;overload;
procedure actionRecord(_Sql:string;paramValues:TStringList);overload;
procedure actionRecord;overload;
procedure actionSP(_StoreProduceName:string;paramValues:TStringList);
procedure deleteRecord(_Sql:string;paramValues:TStringList);
Function getFieldType(_Sql:string;paramValues:TStringList;FieldName:string):TDataType;
Function getFieldName(_Sql:string;paramValues:TStringList):TStringList;
Function getFieldString(_Sql:string;paramValues:TStringList;separator:string):string;overload;
Function getFieldString(separator:string):string;overload;
procedure setGridTitle(_ctrl:TControl;col:integer;caption:string;colWidth:integer);
protected
published
property dbType:integer Read _FDBType Write setDBType;
property DatabaseName:string read _FDbName Write setDatabaseName;
property SqlString:string read _FSqlString Write setSqlString;
property ParamList:TStringList read _FParamList Write setParamList;
end;
implementation
{
功能:
参数:
用法:
}
constructor TuAdoSet.Create(DbName:string;DbType:integer);
begin
_FQuery:=TAdoQuery.Create(nil);
_FStoreP:=TAdoStoredProc.Create(nil);
_FDBType:=DbType;
_FdbName:=trim(dbName);
_FSqlString:='';
_FParamList:=TStringList.Create;
_FDataSource:=TDataSource.Create(nil);
ReadIni('MyFile.ini');
_saveParam:=TStringList.Create;
_str:=TuString.Create;
end;
{
功能:
参数:
用法:
}
procedure TuAdoSet.ReadIni(inifile:string);
var
_inifile:TIniFile;
CurrentPath:string;
begin
CurrentPath:=ExtractFilePath(paramStr(0))+'\config\'+trim(inifile);
try
if not FileExists(CurrentPath) then
begin
_FServerName:='NTserver';
_FLoginID:='sa';
_FPassWord:='';
exit;
end;
_inifile:=TIniFile.Create(Currentpath);
if _FDbType=1 then
begin
if _inifile.ValueExists('ServerConfig','serverName') then
begin
_FServername:=_inifile.ReadString('serverConfig','serverName','');
end
else
_FServername:='Ntserver';
if _inifile.ValueExists('ServerConfig','loginName') then
begin
_FLoginID:=_inifile.ReadString('serverConfig','loginName','');
end
else
_FLoginID:='sa';
if _inifile.ValueExists('ServerConfig','loginPwd') then
begin
_FPassWord:=_inifile.ReadString('serverConfig','loginPwd','');
end
else
_FPassWord:='';
end;
Finally
_inifile.Free;
end;
end;
{
功能:
参数:
用法:
}
procedure TuAdoSet.actionSP(_StoreProduceName:string;paramValues:TStringList);
var
i:integer;
begin
try
with _FStoreP do
begin
if _FDbType=1 then
begin
ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+trim(_FLoginID)+';Initial Catalog='+_FdbName+';Data Source='+trim(_FserverName)+'';
end;
if _FDbType=2 then
begin
ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+_FDbName+';Persist Security Info=False';
end;
Close;
if _StoreProduceName='' then
begin
showmessage('请输入存储过程名错误...');
exit;
end;
procedureName:=trim(_StoreProduceName);
parameters.refresh;
if paramValues.Count<>0 then
begin
if paramValues.Count=1 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
end;
if paramValues.Count=2 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
end;
if paramValues.Count=3 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
parameters.ParamByName('@areaName').Value:=trim(paramValues[2]);
end;
if paramValues.Count=4 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
parameters.ParamByName('@areaName').Value:=trim(paramValues[2]);
parameters.ParamByName('@areaName1').Value:=trim(paramValues[3]);
end;
if paramValues.Count=5 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
parameters.ParamByName('@areaName').Value:=trim(paramValues[2]);
parameters.ParamByName('@areaName1').Value:=trim(paramValues[3]);
parameters.ParamByName('@areaName2').Value:=trim(paramValues[4]);
end;
if paramValues.Count=6 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
parameters.ParamByName('@areaName').Value:=trim(paramValues[2]);
parameters.ParamByName('@areaName1').Value:=trim(paramValues[3]);
parameters.ParamByName('@areaName2').Value:=trim(paramValues[4]);
parameters.ParamByName('@areaName3').Value:=trim(paramValues[5]);
end;
if paramValues.Count=7 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
parameters.ParamByName('@areaName').Value:=trim(paramValues[2]);
parameters.ParamByName('@areaName1').Value:=trim(paramValues[3]);
parameters.ParamByName('@areaName2').Value:=trim(paramValues[4]);
parameters.ParamByName('@areaName3').Value:=trim(paramValues[5]);
parameters.ParamByName('@areaName4').Value:=trim(paramValues[6]);
end;
if paramValues.Count=8 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
parameters.ParamByName('@areaName').Value:=trim(paramValues[2]);
parameters.ParamByName('@areaName1').Value:=trim(paramValues[3]);
parameters.ParamByName('@areaName2').Value:=trim(paramValues[4]);
parameters.ParamByName('@areaName3').Value:=trim(paramValues[5]);
parameters.ParamByName('@areaName4').Value:=trim(paramValues[6]);
parameters.ParamByName('@areaName5').Value:=trim(paramValues[7]);
end;
if paramValues.Count=9 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
parameters.ParamByName('@areaName').Value:=trim(paramValues[2]);
parameters.ParamByName('@areaName1').Value:=trim(paramValues[3]);
parameters.ParamByName('@areaName2').Value:=trim(paramValues[4]);
parameters.ParamByName('@areaName3').Value:=trim(paramValues[5]);
parameters.ParamByName('@areaName4').Value:=trim(paramValues[6]);
parameters.ParamByName('@areaName5').Value:=trim(paramValues[7]);
parameters.ParamByName('@areaName6').Value:=trim(paramValues[8]);
end;
if paramValues.Count=10 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
parameters.ParamByName('@areaName').Value:=trim(paramValues[2]);
parameters.ParamByName('@areaName1').Value:=trim(paramValues[3]);
parameters.ParamByName('@areaName2').Value:=trim(paramValues[4]);
parameters.ParamByName('@areaName3').Value:=trim(paramValues[5]);
parameters.ParamByName('@areaName4').Value:=trim(paramValues[6]);
parameters.ParamByName('@areaName5').Value:=trim(paramValues[7]);
parameters.ParamByName('@areaName6').Value:=trim(paramValues[8]);
parameters.ParamByName('@areaName7').Value:=trim(paramValues[9]);
end;
if paramValues.Count=11 then
begin
parameters.ParamByName('@beginDate').Value:=trim(paramValues[0]);
parameters.ParamByName('@endDate').Value:=trim(paramValues[1]);
parameters.ParamByName('@areaName').Value:=trim(paramValues[2]);
parameters.ParamByName('@areaName1').Value:=trim(paramValues[3]);
parameters.ParamByName('@areaName2').Value:=trim(paramValues[4]);
parameters.ParamByName('@areaName3').Value:=trim(paramValues[5]);
parameters.ParamByName('@areaName4').Value:=trim(paramValues[6]);
parameters.ParamByName('@areaName5').Value:=trim(paramValues[7]);
parameters.ParamByName('@areaName6').Value:=trim(paramValues[8]);
parameters.ParamByName('@areaName7').Value:=trim(paramValues[9]);
parameters.ParamByName('@areaName8').Value:=trim(paramValues[10]);
end;
end
else
begin
end;
ExecProC;
end;//with
Finally
_FQuery.Close;
end;
end;
{
功能:
参数:
用法:
}
Function TuAdoSet.getRecordCount:integer;
Function getSqlString:string;
var
_selectPos:integer;
_fromPos:integer;
_newSql:string;
begin
if _FSqlString<>'' then
begin
_selectPos:=pos('select',trim(_FSqlString));
_fromPos:=pos('from',trim(_FSqlString));
_newSql:=copy(trim(_FSqlString),_selectPos,6)+' Count(*) '+copy(trim(_FSqlString),_fromPos,length(trim(_FSqlString))-9);
result:=_newSql;
end
else
begin
result:='';
end;
end;
var
i,j:integer;
begin
try
with _FQuery do
begin
if _FDbType=1 then
begin
ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+trim(_FLoginID)+';Initial Catalog='+_FdbName+';Data Source='+trim(_FserverName)+'';
end;
if _FDbType=2 then
begin
ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+_FDbName+';Persist Security Info=False';
end;
Close;
Sql.Clear;
//Sql.Text:=trim(_Sql);
///showmessage(getsqlstring);
if getSqlString='' then
begin
Showmessage('Sql string error ');
exit;
end;
Sql.Text:=getSqlString;
if _str.getSubStringCount(':',getSqlString)<>_FParamList.Count then
begin
showmessage('参数的个数不匹配...');
exit;
end;
if _FParamList=nil then
begin
showmessage('参数错误...');
exit;
end;
if _FParamList.Count<>0 then
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -