| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1340 人关注过本帖
标题:x
只看楼主 加入收藏
yhwyyan
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-1-27
收藏
 问题点数:0 回复次数:0 
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;
搜索更多相关主题的帖子: WorkList amp highlight string php 
2008-04-03 19:29
快速回复:x
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048585 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved