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

📄 pubproc.pas

📁 服务信息管理系统
💻 PAS
字号:
unit PubProc;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, WinTypes, WinProcs, StdCtrls, Grids, DbGrids, ComCtrls, DbCtrls,
  Buttons, DB, DBTables, ExtCtrls, IniFiles, quickrpt, Qrctrls;

type
  TPublicProc = class(TDataModule)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TMyGrid = class(TDbGrid)
  published
    property FixedCols;
  end;

procedure SetGridIndex(Sender: TObject);

function hztozjm(data_hzmc: string): string; //将输入的汉字语句转换成为助记码
function GetPyIndexChar(hzchar: string): char; //获取指定汉字的拼音索引字母
function Getryfunction(rycxdata: string): Integer; //人员查询函数
function Getbmfunction(bmcxdata: string): Integer; //部门查询函数

var
  PublicProc: TPublicProc;

implementation
uses mainform;
{$R *.dfm}

procedure SetGridIndex(Sender: TObject);
var
  i, ThisIndex, NextIndex: Integer;
begin
  NextIndex := -1;
  with Sender as TDbGrid do
    begin
      ThisIndex := SelectedIndex;
      for i := ThisIndex + 1 to Columns.Count - 1 do
        begin
          if (not Columns[i].ReadOnly) and
            (DataSource.DataSet.FieldByName(Columns[i].FieldName).FieldKind =
            fkData) then
            begin
              NextIndex := i;
              Break;
            end;
        end;
      if NextIndex = -1 then
        begin
          for i := 0 to ThisIndex do
            begin
              if (not Columns[i].ReadOnly) and
                (DataSource.DataSet.FieldByName(Columns[i].FieldName).FieldKind
                =
                fkData) then
                begin
                  NextIndex := i;
                  Break;
                end;
            end;
        end;
      SelectedIndex := NextIndex;
    end;
end;

function hztozjm(data_hzmc: string): string;
var
  lsbl_len, lsbl_x: Integer;
  lsbl_value, lsbl_zjm, lsbl_pyzm: string;
begin
  lsbl_len := length(data_hzmc);
  lsbl_zjm := '';
  lsbl_x := 1;
  while lsbl_x <= lsbl_len do
    begin
      lsbl_value := Copy(data_hzmc, lsbl_x, 2);
      lsbl_pyzm := GetPYIndexChar(lsbl_value);
      if lsbl_pyzm <> char(0) then
        begin
          lsbl_zjm := lsbl_zjm + lsbl_pyzm;
          lsbl_x := lsbl_x + 2;
        end
      else
        begin
          lsbl_zjm := lsbl_zjm + Copy(lsbl_value, 1, 1);
          lsbl_x := lsbl_x + 1;
        end;
      Result := lsbl_zjm;
    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 Getryfunction(rycxdata: string): Integer; //人员查询函数
var
  lsbl_cxfwry: string;
  PubcxQuery: TQuery;
begin
  PubcxQuery := TQuery.Create(Application);
  lsbl_cxfwry := '%' + rycxdata + '%';
  with PubcxQuery do //下面进行服务人员的查询,如果没有找到则不能进行数据保存
    begin
      DatabaseName := 'fwxxgl';
      SQL.clear;
      SQL.Add('select yg_bh,yg_xm from ygdasjk where yg_bh like :lsbl_cxnr');
      SQL.Add('or yg_xm like :lsbl_cxnr');
      SQL.Add('or yg_zjm like :lsbl_cxnr');
      ParamByName('lsbl_cxnr').AsString := lsbl_cxfwry;
      Prepare;
      open;
      if RecordCount = 0 then //=0,即没有找到此服务人员
        begin
          MessageDlg('没有找到服务人员【' + rycxdata + '】', mtWarning, [mbOk], 0);
          Close;
          Result := 0;
          PubcxQuery.Free;
          Exit;
        end;
      if RecordCount = 1 then //=1,即找到了此服务人员
        begin
          selecttext1 := Trim(FieldByName('yg_bh').AsString);
          selecttext2 := Trim(FieldByName('yg_xm').AsString);
          Close;
          Result := 1;
          PubcxQuery.Free;
          Exit;
        end;
      if RecordCount > 1 then //>1,即找到了服务人员,但不唯一需进行选择
        begin
          Close;
          Result := 2;
          PubcxQuery.Free;
          Exit;
        end;
    end;
end;

function Getbmfunction(bmcxdata: string): Integer; //部门查询函数
var
  lsbl_cxbm: string;
  PubcxQuery: TQuery;
begin
  PubcxQuery := TQuery.Create(Application);
  lsbl_cxbm := '%' + bmcxdata + '%';
  with PubcxQuery do //下面进行部门的查询,如果没有找到则不能进行数据保存
    begin
      DatabaseName := 'fwxxgl';
      SQL.clear;
      SQL.Add('select bm_bh,bm_mc from bmmlk where bm_bh like :lsbl_cxnr');
      SQL.Add('or bm_mc like :lsbl_cxnr');
      SQL.Add('or bm_dh like :lsbl_cxnr');
      ParamByName('lsbl_cxnr').AsString := lsbl_cxbm;
      Prepare;
      open;
      if RecordCount = 0 then //=0,即没有找到此服务人员
        begin
          MessageDlg('没有找到部门【' + bmcxdata + '】', mtWarning, [mbOk], 0);
          Close;
          Result := 0;
          PubcxQuery.Free;
          Exit;
        end;
      if RecordCount = 1 then //=1,即找到了此服务人员
        begin
          selecttext1 := Trim(FieldByName('bm_bh').AsString);
          selecttext2 := Trim(FieldByName('bm_mc').AsString);
          Close;
          Result := 1;
          PubcxQuery.Free;
          Exit;
        end;
      if RecordCount > 1 then //>1,即找到了服务人员,但不唯一需进行选择
        begin
          Close;
          Result := 2;
          PubcxQuery.Free;
          Exit;
        end;
    end;
end;

end.

⌨️ 快捷键说明

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