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

📄 selffunc.pas

📁 固定资产管理系统源码 资产管理 查询管理 报表管理 系统管理
💻 PAS
字号:
unit SelfFunc;

interface
uses DB,ADODB,Windows,Classes,SysUtils,Messages,Dialogs,DBCtrls,Controls,DBGridEh,
DBGridEhImpExp,Variants,ComObj;


// 自定义个查询
function myquery(Asql:string;ADataset:TADODataSet):TADODataSet;
//DBGridEh导出到execl文件去
procedure DBGridEhToXLS(ADBGridEh:TDBGridEh);
function GetPYIndexChar( hzchar:string):char;
function CheckNotisnull( AComponent:TComponent):Boolean;
function BarCodeIsValid(ABarCode:string):boolean;//检查条码是否是数字
//DBGrid标题排序函数
procedure DBGridTitleSort(Column: TColumnEh);
//设置标题的函数 (若排过序,重新查询后调用此方法清除排序标记。)
procedure SetTitle(Column: TColumnEh);

//判决数据在数据库中是否存在
procedure checkexist(aField,aTable:string;aDataSet:TADODataSet);

//ADOdataset排序
procedure ADODataSetSort(aField:string;aDataSet:TADODataSet);

//  压缩 Access数据库
procedure CompressAccess(const FileFrom, FileTo: string);
implementation


function BarCodeIsValid(ABarCode:string):boolean;
var
  i:integer;
begin
  Result:=true;
  for i:=1 to length(ABarCode) do
    if not ((ABarCode[i]>='0') and (ABarCode[i]<='9')) then //因为条码是0-9
       begin
         Result:=false;
         break;
       end;
end;






function myquery(Asql:string;ADataset:TADODataSet):TADODataSet;
begin
  ADataset.Close;
  ADataset.CommandText:='';
  ADataset.CommandText:= Asql;
  ADataset.Open;
  Result:=ADataset;
end;

procedure DBGridEhToXLS(ADBGridEh:TDBGridEh);
var
 myDialog:TSaveDialog;
begin
  //需要引用DBGridEhImpExp单元
 myDialog:=TSaveDialog.Create(nil);
  try
    myDialog.DefaultExt:='XLS';
    myDialog.Filter:='XLS';
    if myDialog.Execute then
    begin
        SaveDBGridEhToExportFile(TDBGridEhExportAsXLS,ADBGridEh,myDialog.FileName,true);
    end;
  finally
    myDialog.Free;
  end;
end;


function GetPYIndexChar( hzchar:string):char;
begin //的到一个汉字的拼音头个字母
case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of
$B0A1..$B0C4 : result := 'A';
$B0C5..$B2C0 : result := 'B';
$B2C1..$B4ED : result := 'C';
$B4EE..$B6E9 : result := 'D';
$B6EA..$B7A1 : result := 'E';
$B7A2..$B8C0 : result := 'F';
$B8C1..$B9FD : result := 'G';
$B9FE..$BBF6 : result := 'H';
$BBF7..$BFA5 : result := 'J';
$BFA6..$C0AB : result := 'K';
$C0AC..$C2E7 : result := 'L';
$C2E8..$C4C2 : result := 'M';
$C4C3..$C5B5 : result := 'N';
$C5B6..$C5BD : result := 'O';
$C5BE..$C6D9 : result := 'P';
$C6DA..$C8BA : result := 'Q';
$C8BB..$C8F5 : result := 'R';
$C8F6..$CBF9 : result := 'S';
$CBFA..$CDD9 : result := 'T';
$CDDA..$CEF3 : result := 'W';
$CEF4..$D188 : result := 'X';
$D1B9..$D4D0 : result := 'Y';
$D4D1..$D7F9 : result := 'Z';
else
result := char(0);
end;
end;

function CheckNotisnull( AComponent:TComponent):Boolean;
begin
  if AComponent is TDBLookupComboBox then
  begin
    if TDBLookupComboBox(AComponent).KeyValue = null then
      Result:=False
    else
      Result:=True;
  end;
end;

//DBGrid标题排序函数
//要在数据集的AfterOpen事件中设定标题为汉字或其他,这样才能正常显示
procedure DBGridTitleSort(Column: TColumnEh);
var
  DataSet: TDataSet;
  sFieldName: string;
  sSort: string;
  i: integer;
begin

  SetTitle(Column);

  DataSet := Column.Field.DataSet;

  if DataSet.IsEmpty then
    Exit;

  sFieldName := Column.FieldName;
  if (Column.Field.FieldKind = fkLookup) or (Column.Field.FieldKind = fkCalculated) then
    sFieldName := Column.Field.KeyFields;

  if DataSet is TCustomADODataSet then
  begin
    sSort := TCustomADODataSet(DataSet).Sort;
    sSort := sFieldName;
    TCustomADODataSet(DataSet).sort := sSort;
  end;

end;


//设置标题的函数
procedure SetTitle(Column: TColumnEh);
var
  iCount: integer;
  sCaption: string;
begin
  for iCount := 0 to TDBGridEh(Column.Grid).Columns.Count - 1 do
  begin
    sCaption := TDBGridEh(Column.Grid).Columns[iCount].Title.Caption;
  end;
end;   

//判决数据在数据库中是否存在
procedure checkexist(aField,aTable:string;aDataSet:TADODataSet);
var
 TempDataSet:TADODataSet;
 sql:string;
begin
  TempDataSet := TADODataSet.Create(nil);
  try
    sql:='SELECT * FROM '+ aTable + ' WHERE '+ aField+ '='+QuotedStr(trim(aDataSet.FieldByName(aField).AsString));
    TempDataSet.Connection:=aDataSet.Connection;
    TempDataSet.Close;
    TempDataSet.CommandText:='';
    TempDataSet.CommandText:=sql;
    TempDataSet.Open;
    if TempDataSet.RecordCount>0 then
       if MessageDlg('此记录已经存在,或现在正在修改是否保存',mtWarning,[mbYes, mbNo],0) <> mrYes then
         abort;
  finally
    TempDataSet.Free;
  end;

end;

procedure ADODataSetSort(aField:string;aDataSet:TADODataSet);
begin
  aDataSet.Sort:=aField;
end;

procedure CompressAccess(const FileFrom, FileTo: string);
var
Dao: Variant;
begin 
  Dao := CreateOleObject('DAO.DBEngine.36');//access2000要用dao3.6,在access97上用35和36都可以
  Dao.CompactDatabase(FileFrom, FileTo);
  Showmessage('本地数据库压缩完成');
end;

end.

⌨️ 快捷键说明

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