x
http://bbs.http://bbs.
版本2826升级到2918版本的问题**
2008229mamingxiac3shi
WorkList.编制人员 like :lwriter and
WorkList.编制部门 like :lwriterdep and
datediff(dd, WorkList.指派日期1, getdate()) = 0
-----------------函数声明与实现-------------
public
{public declarations}
function Getname(persons_id:string):string;
end;
implementation
function TWORK_LOG_W.Getname(persons_id:string):string;
begin
end;
-----------------过程声明与实现-------------
-------------------------定位------------------------
1.dsb_bsc.DataSet.Locate('pr_job', ls_job, [TLocateOption.loCaseInsensitive])
------------------------显示提示框-------------------
2.jsdialogs.ShowMsg('数据已经删除,请保存!','提示!');
if Forms.Application.MessageBox('您确实要删除该记录吗?','系统提示',3) =6 then
begin
if not DataSetBroker1.DataSet.Eof then
DataSetBroker1.DataSet.Delete;
Forms.Application.MessageBox('删除成功','系统提示',0);
end;
--------------------功能访问信息---------------------
------信息----信息下面的试图-----功能引用名称---试图里的函数--
3.prod_register.Tsearch_inustry(docview_s.Doc).GetSearchValue();
试图里的文本框
prod_register.Tsearch_inustry(docview_s.Doc).cmb_check.Text
---------------------信息访问功能------------------------------------
DataSetBroker1.连接数据集,就用DataSetBroker1来把信息的信息反到功能里
---------------------------------------------------------
if PageControl1.ActivePage=TabSheet1 then
begin
showmessage('sssssssss');
DocView4.RefreshDoc(true); //刷新文档
end;
或者
procedure Tship_file_auditing_w.PageControl1Change(Sender: TObject);
var
jobno:string;
begin
if PageControl1.TabIndex=0 then
begin
showmessage('sssssssss');
end;
end;
---------------------------------------------------------
4.--------------------转换---------------------------
SysUtils.IntToStr(SysUtils.StrtoInt(sMonth));
ls_month:=sysutils.IntToStr(DateUtils.MonthOf(SysService.Time));
5.-----------------UserFilter-----------
procedure Tdsmisship_survey_infor.DataSetdsmisshipBeforeOpen(DataSet: TDataSet);
var
ls_year:string;
begin
ls_year:=sysutils.IntToStr(DateUtils.YearOf(SysService.Time));
TSQLDataSet(DataSetdsmisship).UserFilter:=' dcr_job like '''+ls_year+'%''';
TSQLDataSet(DataSetBroker2.DataSet).UserFilter:=' swrq >= to_date('''+ls_year+'-01-01'', ''yyyy-mm-dd'') ';
TSQLDataSet(DataSetBroker2.DataSet).Active:=true;
end;
过滤有两种,一种是服务端过滤,一种是客户端过滤
服务端过滤分两种:sqlfilter和userfilter
客户端过滤可以用filter
6.------------SQLFiltered--------
SqlDialog:='dsmis_check_register.dcr_tdate >= to_date('''+sYear+'-'+SysUtils.IntToStr(SysUtils.StrtoInt(sMonth))+''',
''yyyy-mm'') and '
+' dsmis_check_register.dcr_tdate <to_date('''+SysUtils.IntToStr(SysUtils.StrtoInt(sYear)+1)+'-'+'1'+''',
''yyyy-mm'') ';
Tsqldataset(dsmis.DataSet).SQLFilter:=SqlDialog;
if not Tsqldataset(dsmis.DataSet).SqlFiltered then
Tsqldataset(dsmis.DataSet).SQLFiltered:= True;
例子
{jnksrq:=datetostr(business.data.syssrv.sysservice.Time);
jnksrq:=jnksrq.Substring(0,4)+'-1-1';
DataSetBroker1.dataset.Filter:='fwrq>='+jnksrq;
DataSetBroker1.dataset.filtered:=true;
DataSetBroker2.dataset.Filter:='swrq>='+jnksrq;
DataSetBroker2.dataset.filtered:=true; }
7.--------------Filtered-------------------------------
ls_sql:=' sr_person= '+sysutils.QuotedStr(ts_persons[i])+' or' +ls_sql;
ls_sql:=strutils.MidStr(ls_sql,1,length(ls_sql)-2);
dsb.DataSet.Filter:=ls_sql;
dsb.DataSet.Filtered:=true;
ts_persons.Free;
8.--------------获得当前部门--------------------------------------
ls_curr_deptid:=Systemcore.Tsystemcore.Operator.DefaultPosition.DeptID ;
引入系统核心库
10-------------------获得当前操作员---------------------------
ls_curr_deptid:=Systemcore.Tsystemcore.Operator.DefaultPosition.Operator ;
引入系统核心库
PersonID := lContextCurrent.Operator.ID; //当前操作者ID (mmx)
PersonName := lContextCurrent.Operator.DisplayName; //当前操作者Name (马明霞)
GWID := lContextCurrent.PositionMember.ID; //当前操作者岗位ID(GLY)
GWName := lContextCurrent.PositionMember.DisplayName; //当前操作者岗位Name(管理员)
DeptID := lContextCurrent.Dept.ID; //当前操作者部门ID(BGS)
Dept_Name := lContextCurrent.Dept.DisplayName; //当前操作者部门Name(办公室)
OrganID := //当前操作者机构ID(NJFS)
Organ_Name := //当前操作者机构Name(南京分社)
---------------------------------
private
procedure GetCurrOperator();//生命方法
public
OPID,GWID,DeptID,OrganID:String;//声明变量
//方法实现
procedure TGWSJPXLCKXS1form.GetCurrOperator();
var
lContextCurrent: Business.Model.TContextCurrent;
begin
lContextCurrent := Business.Model.TContextCurrent.Create(Context);
try
OPID := lContextCurrent.Operator.ID; //当前操作者ID
GWID := lContextCurrent.PositionMember.ID; //当前操作者岗位ID
DeptID := lContextCurrent.Dept.ID; //当前操作者部门ID
OrganID := ///当前操作者机构ID
finally
lContextCurrent.Free;
end;
end;
----------------------------方法二-----------------------
private
{private declarations}
procedure getcur_person_infor();
procedure TPXXQLRform.getcur_person_infor();
var
TSystemCore: Business.Model.TContextCurrent;
begin
TSystemCore := Business.Model.TContextCurrent.Create(Context);
try
personid := TSystemCore.Operator.Positions[0].PersonMember.ID; //当前操作者ID
GWID := TSystemCore.Operator.Positions[0].PositionMember.ID ; //当前操作者岗位ID
DeptID := TSystemCore.Operator.Positions[0].PositionMember.Parent.ID ; //当前操作者部门ID
OrganID := TSystemCore.Operator.Positions[0].PositionMember.Parent.Parent.ID ; //当前操作者机构ID
finally
TSystemCore.Free;
end;
end;
----------------------------------------------
9.-------------获得年月--------------------------------------
ls_year:=sysutils.IntToStr(DateUtils.YearOf(SysService.Time));
sYear:=sysutils.IntToStr(DateUtils.YearOf(time)); //得到当前时间的年
sMonth:=sysutils.IntToStr(DateUtils.MonthOf(time));
11.-------------转换成字符串,输出时自动是‘ssss’这种格式,所以不用加太多的引号来控制----
sysutils.QuotedStr(Getname(persons_id[i]))
12------------------------重大改建里的-------------------
SqlDialog:='dsmis_check_register.dcr_tdate >= to_date('''+sYear+'-'+SysUtils.IntToStr(SysUtils.StrtoInt(sMonth))+''',
''yyyy-mm'') and '
+' dsmis_check_register.dcr_tdate <to_date('''+SysUtils.IntToStr(SysUtils.StrtoInt(sYear)+1)+'-'+'1'+''',
''yyyy-mm'') ';
13------------------------------序号(流水号)------------------------------------------------------
添加“计算字段”
Value:=self.DataSetGNHXCBJZ_ZDGJJYJDBB.RecNo; 引入系统核心库(不用引用系统核心库,做南京的时候验证)
计算记录条数的。
14-----------------------添加数据策略,来过滤数据集--------------------------------------------
如果几个功能窗体引用一个信息,那么就会出现所需要的数据是不同的,应该这样解决,
双击“业务功能”,然后再业务信息下面的“数据集”点击右键,新建-〉数据集策略
在数据范围里写条件。
15----------------------------导出功能----------------------------
procedure TKXJSDAGDMLform.ToolButton1Click(Sender: TObject);
var
ls_file:string;
begin
if SaveDialog.Execute then
begin
ls_file:=SaveDialog.FileName;
end;
if (ls_file='') or (ls_file = nil) then exit;
SHEETDOCLIB.TSHEETDOCLIB.CopySheetToExcel(DocView3,ls_file);
Borland.Delphi.ShellAPI.ShellExecute(0, 'open', ls_file, '', '', Borland.Delphi.Windows.SW_SHOW);
end;
引用表格文档库:业务模型\系统空间\系统功能\公共类库\表格文档库
SaveDialog1:设置Filter属性,Excel .xls,FileName属性:Excel.xls
16-----------------------流水号-------------------------
步骤:在oa参数组里创建“业务参数”在其oagetvalue下面写如下:
Business.System, Business.Model,CommonUtils;
引用:业务模型\业务系统\公共\公共函数\公共函数
Value := TCommonUtils.GetAutoIncreaseID(Self.Context,
TBizParam(Sender).ID, TBizParam(Sender).DisplayName);
// 可根据需要定制Value的格式 //
Value := TCommonUtils.StrToRightLenStr(Variants.VarToStr(Value), '0', 10);
17------------如何实现自动换行-----------------------------
我在数据集的字段编辑器里添加字段然后改变其表现类型,但是不能实现。所以在表里把字段的表现类型设成文本,这样就可以了。
18---------------------------------如何在甲表存储乙表的id------------------------
甲表是乙表的主表,在界面,选择乙表的字段时,将这个字段所在的id存在甲表相应的id里。(例子:南京指导人员设定界面)
self.DataSetTeachers.FieldByName('WorkID').AsString:=self.DataSetWorkList.FieldByName('WorkID').AsString;
19------------------------------选择下拉框时,不能将其显示在页面上--------------------------------
之所以选择任务不能选上,是因为我在记录集的插入之后写上了这句话:
self.DataSetTeachers.FieldByName('WorkID').AsString:=self.DataSetWorkList.FieldByName('WorkID').AsString;
去了就可以了,但是去了后,又不能保存id。
20-----------------------------------------------参数负值-----------------------------------------
DataSetBroker2.dataset.Params.ParamByName('djdw').AsString:=值;
21---------------------------------------打印时让字体适合大小------------------------------------
在表单上右键,单击区域属性-〉打印-〉自动大小:行
22-----------------------------------当新增记录集时系统自动生成这种格式(20080107152246635688)
DSB_GNXZC.DataSet.FieldByName('ID').AsString:=FormatDateTime('yyyymmddhhmmss',Now)+IntToStr(Random(9999));
23------------------------
当新建一个功能窗体的时候引用表单后,会自动有一个DataSetTeachers,是引藏的,看不到
24--------------------------字段转换--------------------------------------
public
{public declarations}
function Getname(persons_id:string):string;
end;
implementation
function TWORK_LOG_W.Getname(persons_id:string):string;
var
sql:string;
begin
sql:='TPERSON.FID='''+persons_id+'''';
TSQLDataSet(xitongperson.DataSet).SqlFilter:=sql;
TSQLDataSet(xitongperson.DataSet).SqlFiltered:=true;
if not (xitongperson.DataSet.Eof) then
begin
result:=xitongperson.DataSet.FieldByName('FDISPLAYNAME').AsString;
end
else
begin
result:='';
end;
end;
25-----------------------截取字符串函数------------------------------
从左截取字符串的函数:Copy(str;Index,Count):string;
从右截取字符串的函数 copy(str,1,length(str)-Count);
26----------------------替换字符串函数----------------
function StringReplace(const S, OldPattern, NewPattern: string; Flags: TReplaceFlags): string;
例子:
edit1.Text:=stringreplace('tohell','l','e',[rfReplaceAll, rfIgnoreCase]);
26---------------------同一个功能下两个窗体的调用-------------------
procedure TZDRYSDJMform.Button5Click(Sender: TObject);
var
lForm: TZDRYSDFUNC;
begin
ToolButton1Click(Sender);
lForm := TZDRYSDFUNC.Create(self.Context);
try
lForm.DataSetBroker1.DataSet.Refresh;
finally
lForm.Free;
end;
end;
27----------------------------隐藏表字段-------------------------------------
点击表格,右键-〉添加所有字段,把对钩去掉。
28---------------------表格自动宽度-----------
点击表格,右面属性:OptionsView->edgoAutoWidth;
29----------------------如何判断点击了哪个按钮-------------------
if TBizDataSetAction(Sender).ID= BizActnConsts.ActionDataSetAppend then
-----------------------------打印、打印浏览、打印设置--------------------
if TBizDocAction(Sender).ID =BizActnConsts.ActionPrintPreview then
BizActnConsts.ActionPrintPrint
BizActnConsts.ActionPrintSetup
end;
30-----------------------------判断工具栏邦定的哪个纪录集-----------------------------
if TBizDataSetAction(Sender).CurrentDataSource.DataSet = dsb_job.DataSet then
31------------------
如果功能窗体里引用两个数据集,那么工具栏对两个数据集都能操作,因为属性“自动侦测”的作用
可以去掉自动侦测,将数据源指定其中一个数据集;
如果只希望工具栏对其中一个数据集不做添加、修改、删除操作,而需要工具栏对其进行查询
那么可以在功能数据集中建策略,修改属性“数据操作权限”
32------------要想在表单上显示信息这样负值--------------------
procedure Tperiodic_Auditing_inform.BizFormShow(Sender: TObject);
var
ps_sendate:tdatetime;
ps_sendatebefore:tdatetime;
year:string; //当前年
moth:string;
daty:string;
begin
ps_sendate:=DataSetBroker1.DataSet.FieldByName('ps_sendate').AsDateTime;
moth:=sysutils.IntToStr(DateUtils.MonthOf(ps_sendate));
daty:=sysutils.IntToStr(DateUtils.DayOf(ps_sendate));
year:=sysutils.IntToStr(DateUtils.YearOf(SysService.Time));
ps_sendatebefore:=strtodate(year+'-'+moth+'-'+daty);
//showmessage(datetostr(ps_sendatebefore));
DataSetBroker1.DataSet.Edit;
DataSetBroker1.DataSet.FieldByName('LSZD1').AsDateTime:=ps_sendatebefore;
end;
33-------------------------进入南京(删除)-------------
显示隐藏文件
C:\WINDOWS\Downloaded Program Files\Business Control
C:\Documents and Settings\mamingxia\Application Data\Justep
SELECT * FROM ( SELECT row_.*, rownum rownum_ FROM DRAWING_NOTION row_ WHERE
dn_jobno= :jobno and rownum <= :ERow) WHERE rownum_ > :SRow
----------------------------------
34-----------------
SYSTEMCORE.TSystemCore.FuncManager.RunFunc(Context,'','Biz:\NJZHGL\FUNC\RYXZ.Func',lWorkID, nil,True);
35------先获得当前操作员的“id”和“当前岗位”,如果当前岗位是“管理员”
那么只能看到本部门所有人员的纪录
SELECT *
FROM WORKLIST
where WORKLIST.writer like :lwriter
and WORKLIST.writerdep like :lwriterdep
and datediff(dd,opendate,getdate())=0
DSB_GZRW.DataSet.Params.ParamByName('lwriter').AsString:='%';
DSB_GZRW.DataSet.Params.ParamByName('lwriterdep').AsString:=lDEP;
如果不是管理员,只能看到自己的纪录
DSB_GZRW.DataSet.Params.ParamByName('lwriter').AsString:=lPID;
DSB_GZRW.DataSet.Params.ParamByName('lwriterdep').AsString:=lDEP;
36----------------工具条------------------------------
if TBizDataSetAction(Sender).ID=BizActnConsts.ActionDataSetSave then
37--------------------------DataGrid横向打印------------------------
procedure TGNCBWG.BizFormShow(Sender: TObject);
begin
DataGrid2.Exporter.PageInfo.Orientation := TPrinterOrientation.poLandscape;
DataGrid2.Exporter.PageInfo.Height := 794;
DataGrid2.Exporter.PageInfo.Width := 1123;
end;
38---------------------菜单配置---------------------------
业务模型-〉协同系统-〉配置-〉业务系统管理(这个是最左面的菜单)
39---------------循环数据库表字段添加到下拉框-----------------------------
while not ds_person.DataSet.Eof do
begin
comperson.Items.Add(ds_person.DataSet.FieldByName('Writer').AsString);
ds_person.DataSet.Next;
end;
40-------------动态换表单(登记查询的来文登记)----------------------
DocView4用于界面显示,LWDJDYLLY当用户点击打印时使用
DocView4.DocClassID:='LWDJDYLLY';
41----------------打印浏览下把取数据方案去掉,并且升序排列(登记查询来文登记)-------------------------------------------
DataSetBroker2.DataSet.DataFetch.PageRecords := -1;
DataSetBroker2.DataSet.order := 'swrq';//不写asc就是升序,默认情况下就是按升序排列,写了adesc就是按降序排列
42----------------------将数据库表字段添加到combox------------------
ds_person.DataSet.First;
while not ds_teachers.DataSet.Eof do
begin
for i := 0 to comperson.Items.Count - 1 do
begin
if Trim(comperson.Items[i])=Trim(ds_teachers.DataSet.FieldByName('WorkID').AsString) then
break;
end;
if I = comperson.Items.Count then
begin
comperson.Items.Add(ds_teachers.DataSet.FieldByName('WorkID').AsString);
end;
ds_teachers.DataSet.Next;
end;
43-----------------------打印浏览自动侦测--------------------
if PageControl1.ActivePage=TabSheet then
begin
DocViewBar.DocView:=DocViewFWDJ_BGSDJBG;
end;
if PageControl1.ActivePage=TabSheet2 then
begin
DocViewBar.DocView:=DocView5;
end;
---------------------------TabSheet颜色复制--------------------
procedure TYFZSPXXSform.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active:
Boolean);
begin
Control.Canvas.Brush.Color:=rgb(236,233,216);
Control.Canvas.FillRect(Rect);
Control.Canvas.Font.Color:=rgb(0,0,0);
Control.Canvas.Font.Name:='宋体';
Control.Canvas.TextOut(Rect.Left+integer((Rect.right - Rect.Left - Control.Canvas.TextWidth(TPageControl(Control).Pages
[TabIndex].Caption))/2),Rect.Top+4,TPageControl(Control).Pages[TabIndex].Caption);
end;
44-----------------------------------------------------------------------
字符串、开始序号、结束序号
截左函数:Copy(str;Index,Count):string;
截右函数 copy(str,1,length(str)-Count);
45----------------------判断自己手下有多少人---------------------------
procedure TWORK_LOG_W.BizFormShow(Sender: TObject);
var
persons_id:tstrings;
ls_sql:string;
i :integer;
begin
ls_sql:='';
//取人员范围和学习次数未0的记录
persons_id:=Tstringlist.Create();
study_zyj.Tstudy_zyj.getsubpersons(Context,persons_id);
for i:=0 to persons_id.Count - 1 do
begin
//or前一个空格,or后俩空格,
ls_sql:=' wl_person= '+sysutils.QuotedStr(Getname(persons_id[i]))+' or'+ls_sql;
end;
// showmessage(ls_sql);
//ls_sql:=strutils.MidStr(ls_sql,1,length(ls_sql)-2);//去掉or
ls_sql:=Copy(ls_sql,1,length(ls_sql)-2);//去掉or
// showmessage(ls_sql);
TSQLDataSet(dsb_work_log.DataSet).SqlFilter:=ls_sql;
TSQLDataSet(dsb_work_log.DataSet).SqlFiltered:=true;
persons_id.Free;
end;