📄 pubproc.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 + -