




已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二次开发简介曹且根 金蝶软件 中国 有限公司 研发中心 2020 4 7 1 提纲 工业老单二次开发工业老单二次开发所需环境及要点工业老单序时薄二次开发工业老单单据二次开工业老单实战演练组件编译及布署问题交流 二次开发所需环境及要点 单据二次开发是针对现目前单据的一些功能无法满足一些客户的特殊要求 同时分公司又有能力进行二次开发而提出的 这样既可以在现有的系统不做变动的情况下面满足用户的需求 同时也增强了系统的稳定性 本篇所介绍所用到的动态连接库名为 K3BillTransfer dll通过该说明文档 你可以了解到1 如何通过K3BillTransfer组件在录单过程中对单据上各项目加以控制 2 如何通过K3BillTransfer组件实现自定义功能菜单 3 如何通过K3BillTransfer组件控制数据的保存 4 如何在序时薄上增加菜单及应用 5 应用示例 实战演练 适用对象需要在K 3供应链系统单据上进行二次开发的开发者开发环境1 安装过K 3ERP9 41以后的版本且购买过供应链系统 2 VB6 0企业版 SP13 SQLSERVER2000及后续版本 SQLSERVER2005 SQLSERVER2008 序时薄二次开发 老单序时薄开发相对简单 它只能在序时薄上增加菜单 通过菜单去实现一些二次开发功能 使用方法 1 在t BandToolMapping中的FcomName填入需要调用组件的名称 注意 不要覆盖原有内容 要在原有内容上用 分割后加入自己的组件 可以加多个组件 第一个插件前一定要加 因为之前的部分是记录了其他信息 2 二次开发组件必须实现MainFunction ByValsKeyAsstring oListAsObject ByrefbCancelasBoolean 方法 要终止事件 请将bCancel设置为true 3 oList为一个即是ICList 可以使用其中的任何Public方法 比方说GetSelData为取得选取的对象 序时薄二次开发流程图 序时薄二次开发 范例增加元数据按钮菜单名 FMenuPC 新增加一个不存在的FToolIDDeleteFromt MenuToolBarWhereFToolID 10002insertintot MenuToolBar FToolID FName FCaption FCaption CHT FCaption EN FImageName FToolTip FToolTip CHT FToolTip EN FControlType FVisible FEnable FChecked FShortCut FCBList FCBList CHT FCBList EN FCBStyle FCBWidth FIndex FToolCaption FToolCaption CHT FToolCaption EN values 10002 FMenuPC 外购入库拆分 外购入库拆分 外购入库拆分 39 外购入库拆分 外购入库拆分 外购入库拆分 0 0 1 0 0 0 0 0 外购入库拆分 外购入库拆分 外购入库拆分 序时薄二次开发 范例续将上面的按钮插入到菜单栏和工具栏在t BandToolMapping中的FcomName填入需要调用组件的名称 注意 不要覆盖原有内容 要在原有内容上用 分割后加入自己的组件 可以加多个组件 第一个插件前一定要加 因为之前的部分是记录了其他信息 FID对应iclisttemplate里的FMenuID FBandID表示放在哪个菜单下 对应t BandToolMapping FSubBandID 可以通过以下语句关联得到是哪个菜单selecta b fname b FCaptionFromt BandToolMappinga t MenuToolBarbwherea FID 82anda ftoolid b ftoolid将按钮插入到菜单栏DeleteFromt BandToolMappingwhereFBandID 3andFToolID 10002andFID 82insertintot BandToolMapping FID FBandID FToolID FSubBandID FIndex FComName FBeginGroup values 82 3 10002 0 65 K3ListPlug List 0 范例续将按钮插入到工具栏DeleteFromt BandToolMappingwhereFBandID 52andFToolID 10002andFID 82insertintot BandToolMapping FID FBandID FToolID FSubBandID FIndex FComName FBeginGroup values 82 52 10002 0 65 K3ListPlug List 0 在外购入库序时薄显示按钮 如果里面有 V 则只能在后面加菜单项 UpdateIclistTemplatesetFLogicStr FLogicStr CaseWhenRight FLogicStr 1 then V FMenuPC else V FMenuPC endwhereFID 1andnotFLogicStrlike FMenuPC 序时薄二次开发 数据元建好之后 再新建一个工程文件 如 新建一个vb工程 命名为 ProListBill 在工程中新建一个类命名为 ListBill 序时薄二次开发 在类ListBill中添加以下代码 以上只是序时薄二次开发实现的一个简单的例子 具体的二次开发 要根据不同的需求 进行相应的开发 接口都是统一调用MainFunction函数 再根据具体情况进行扩展 序时薄二次开发 单据二次开发 单据二次开发主要通过K3BillTransfer组件控制单据上一些操作 其常用属性1 PropertyCnnstringAsString当前数据库的MMTS PropsString连接串 2 PropertySystemNameAsString当前系统名称 3 PropertyLastInfoAsString最后一次系统返回的各种信息4 PropertyBillFormAsObject整个单据窗体对象 可通过该对象访问单据上的任何一个对象 包括控件 菜单 共有的方法有 InsertRow 在Grid的当前行追加一行 它没有参数 5 PropertyBillFuncasObject代表单据对象 目前没什么用途 其常用属性 续6 PropertyHeadAsObject单据表头控件 是一个KDText控件数组7 PropertyGridAsObject单据分录控件 为FpSpread控件8 PropertySumGridAsObject单据分录合计控件 为FpSpread控件9 PropertyHeadCtlAsVariant对应表头控件数组 记录每个表头项目各属性的数组如果要改变HeadCtl中的某个属性值 需先对HeadCtl做一个备份 然后修改此备份的相应属性值 再将此备份赋值给HeadCtl 单据二次开发 其常用属性 续10 PropertyEntryCtlAsVariant对应分录各列 记录每个分录列各属性的数组如果要改变EntryCtl中的某个属性值 需先对EntryCtl做一个备份 然后修改此备份的相应属性值 再将此备份赋值给EntryCtl11 PropertySaveVectAsKFO Vector二次开发外部数据存取接口 在录单过程中 用户可将某些数据保存在此Vector中 在单据保存时 再通过二次开发中间层组件 将此Vector中的数据保存到指定位置 SaveVect Item 1 为一个KFO Dictionary对象该对象包含以下四个系统数据SaveVect Item 1 Value FInterID 单据内码SaveVect Item 1 Value FTransType 单据事务类型SaveVect Item 1 Value ISRedBill 是否红字单据SaveVect Item 1 Value BillChecked 是否审核 单据二次开发 常用的方法FunctionAddUserMenuItem ByValCaptionAsString ByValRootMenuCaptionAsString 说明 添加一个用户自定义菜单项 系统一共预设了五个菜单项供二次开发使用参数 Caption 菜单名称RootMenuCaption 根菜单名称 缺省为 自定义菜单 2 FunctionGetGridText ByValRowAsLong ByValColAsLong AsString说明 获取分录某单元格的值参数 Row 分录行 Col 分录列3 FunctionGetHeadNumber ByValCtlIndexAsLong AsString说明 获取表头某项的代码参数 CtlIndex 表头控件索引4 FunctionGetHeadText ByValCtlIndexAsLong AsString说明 获取表头某项的文本参数 CtlIndex 表头控件索引 单据二次开发 单据二次开发 常用的方法 续5 FunctionGetSumGridText ByValRowAsLong ByValColAsLong AsString说明 获取合计行某列的值参数 Row 行 一般为1 Col 分录列6 FunctionSetGridText ByValRowAsLong ByValColAsLong ByValValue ByValInterIDAsLong 0 ByValsNameAsString AsBoolean说明 设置分录某单元格的值 当分录为查找类型时 会把相应的信息一起携带到相应的位置 如当为物料代码时 它会携带物料的一些基本信息物料名称等 参数 Row 分录行 Col 分录列 Value 设置的值 如果该单元格是查找类型的 Value应设置为代码 InterID 暂未使用 sName 暂未使用 常用的方法 续7 FunctionSetHead ByValIndexAsLong ByValValue ByValInterIDAsLong 0 ByValsNameAsString AsBoolean说明 设置表头某项的值参数 Index 表头控件索引 Value 设置的值 如果该表头项是查找类型的 Value应设置为代码 InterID 暂未使用 sName 暂未使用8 FunctionSetSumGridText ByValRowAsLong ByValColAsLong ByValValue AsBoolean说明 设置分录合计某列的值参数 Row 分录行 一般为1Col 分录列Value 设置的值 单据二次开发 常用的事件1 PublicEventBillInitialize 单据初始化完成时激发该事件2 PublicEventBillTerminate 单据卸载完成时激发该事件3 PublicEventUserMenuClick ByValIndexAsLong ByValCaptionAsString 说明 当点击用户自定义的菜单时激发这个事件 参数 Index 表示第几个菜单 由添加菜单的先后顺序决定 Caption 菜单项的标题 如何添加自定义菜单请参见方法AddUserMenuItem4 PublicEventHeadChange ByValCtlIndexAsLong ByValValueAsVariant ByValbNewBillAsBoolean CancelAsBoolean 说明 当表头的一个项目改变时激发这个事件参数 ctlIndex表头字段索引Value当前值bNewBill是否是新增单据Cancel是否取消 单据二次开发 常用的事件 续5 PublicEventLeveCell ByValColAsLong ByValRowAsLong ByValNewColAsLong ByValNewRowAsLong CancelAsBoolean 说明 当离开分录的一个单元格的时候激发这个事件参数 Col分录的要离开列Row分录的要离开行NewCol新的列NewRow新的行Cancel是否取消6 PublicEventGridChange ByValColAsLong ByValRowAsLong ByValValueAsVariant ByValbNewBillAsBoolean CancelAsBoolean 说明 当表体的一个项目改变时激发这个事件参数 Col分录的当前列Row分录的当前行Value当前值bNewBill是否是新增单据Cancel是否取消 单据二次开发 常用的事件 续PublicEventBeforGridLookUp ByValRowAsLong ByValColAsLong ByValnLookUpClsIDAsLong CancelAsBoolean 说明 在分录执行查找功能之前激发这个事件参数 Col分录的当前列 Row分录的当前行 nLookUpClsID当前查询的资料类型 Cancel是否取消8 PublicEventEndGridLookUp ByValRowAsLong ByValColAsLong ByValnLookUpClsIDAsLong 说明 在分录完成查找功能之后激发这个事件参数 Col分录的当前列 Row分录的当前行 nLookUpClsID当前查询的资料类型9 PublicEventBeforHeadLookUp ByValCtlIndexAsLong ByValnLookUpClsIDAsLong CancelAsBoolean 说明 在表头的一个项目执行查找功能之前激发这个事件参数 ctlIndex表头字段索引nLookUpClsID当前查询的资料类型Cancel是否取消 单据二次开发 常用的事件 续PublicEventEndHeadLookUp ByValCtlIndexAsLong ByValnLookUpClsIDAsLong 说明 在表头的一个项目完成查找功能之后激发这个事件 参数 ctlIndex表头字段索引nLookUpClsID当前查询的资料类型11 PublicEventBeforeSave ByValbNewAsBoolean ByRefReturnCodeAsLong 说明 在单据执行保存功能的时候激发这个事件参数 bNew表示是否是新增单据 ReturnCode返回参数 1 失败 结束单据保存 0 成功 继续单据保存 1 成功返回 结束单据保存12 PublicEventEndSave ByValBillNoAsString 说明 在单据执行完成保存功能的时候激发这个事件参数 BillNo表示单据的编号 单据二次开发 常用的事件 续13 PublicEventLoadBillEnd ByValShowTypeAsLong 说明 在单据装载完成的时候激发这个事件参数 ShowType单据显示状态0 新增1 修改2 查看3 审核14 PublicEventNewBillEnd 说明 在单据新增完成的时候激发这个事件15 PublicEventSetMenuBarCtlPropEnd ByValShowTypeAsLong ByValBillCheckedAsBoolean 说明 在单据设置菜单 工具条各属性完成的时候激发这个事件参数 ShowType单据显示状态0 新增1 修改2 查看3 审核BillChecked单据是否已被审核16 PublicEventBeforeFillBillData ByValBillTransTypeAsLong ByValBillInterIDAsLong 说明 在装载某张单据之前激发这个事件参数 BillTransType单据事务类型BillInterID单据内码 单据二次开发 常用的事件 续17 PublicEventEndBillFormActive 说明 在显示单据之后激发这个事件18 PublicEventGridFormat ByValColAsLong ByValRowAsLong 说明 在设置单据体格式后激发这个事件参数 Col要设置格式的目标列Row要设置格式的目标行19 PublicEventRefreshControl 说明 在设置单据的单元格和单据头的锁定状态后激发这个事件20 PublicEventBeforeEntrySplit ByValpCurRowAsLong ByValpSplitCountAsLong ByValpSplitMethodAsLong ByRefpCancelAsBoolean 说明 在单据的拆分操作之前激发此事件参数 pCurRow要拆分的当前分录行pSplitCount拆分的数目pSplitMethod拆分分录位置0插入式 1追加式pCancel是否取消拆分true 取消拆分false 拆分 单据二次开发 21 PublicEventAfterEntrySplit ByValpCurRowAsLong ByValpSplitCountAsLong ByValpSplitMethodAsLong 说明 在单据的拆分操作之后激发此事件参数 pCurRow被拆分的分录行pSplitCount被拆分成的数目pSplitMethod拆分分录位置0 插入式 1 追加式22 PublicEventOnBeforeDelRow ByVallRowAsLong ByRefbCancelAsBoolean 说明 在单据删除指定行之前激发此事件参数 lRow指定要删除的行 bCancel是否取消删除 true 取消删除false 删除23 PublicEventOnAfterDelRow ByVallRowAsLong ByRefbCancelAsBoolean 说明 在单据删除指定行后激发此事件参数 lRow被删除的行bCancel备用参数 目前没用到 单据二次开发 中间层事件如果需要在单据保存的事务处理过程中插入一些用户处理过程 可以编写一个用户中间层 必须包含以下两个函数 1 PublicFunctionBeginSave ByValSdsnAsString ByRefSaveVectAsKFO Vector ByRefReturnMsgAsString AsBoolean说明 在单据保存的事务处理中 在单据数据保存到数据库之前 调用该函数 返回值 FALSE保存事务终止 返回错误 TRUE单据继续保存事务处理 参数 Sdsn MMTS PropsString SaveVect 二次开发外部数据存取接口 ReturnMsg 失败时返回的错误信息 单据二次开发 中间层事件 续2 PublicFunctionEndSave ByValSdsnAsString ByRefSaveVectAsKFO Vector ByRefReturnMsgAsString AsBoolean说明 在单据保存的事务处理中 在单据数据保存到数据库之后 调用该函数 返回值 FALSE保存事务终止 返回错误 TRUE单据继续保存事务处理 参数 Sdsn MMTS PropsStringSaveVect 二次开发外部数据存取接口 ReturnMsg 失败时返回的错误信息 单据二次开发 关于HeadCtl EntryCtl数组属性和Head控件数组 Grid的简要说明HeadCtlIDAsInteger数组的Index与KDCtl的Index相对应 FCtlIndex CaptionAsStringKDCtl的CaptionFontNameAsString字体FontSizeAsInteger字体大小FCtlIndexAsInteger控件序号TabIndexAsIntegerTAB索引LeftAsSingle左TopAsSingle上WidthAsSingle宽HeightAsSingle高EnableAsBoolean控件是否Locked与KDCtl的Locked属性相对应EnableValueAsInteger件在各种状态下的可用性 新增 修改 察看 审核 下达 单据二次开发 HeadCtl数组续用一个五位的二进制数表示 可见则对应位为1 否则为0 常用值 0 31 bPrintAsBoolean是否打印VisibleAsBoolean是否可见VisibleValueAsInteger控件在各种状态下的可见性 新增 修改 察看 审核 下达 用一个五位的二进制数表示 可见则对应位为1 否则为0 常用值 0 31 NeedSaveAsBoolean该控件的值是否保存RelateOutTblAsBoolean该控件的值是否来自其他表MustInputAsBoolean该控件是否必须输入LookUpClsAsInteger如果控件的类型是查找类型的 LookUpCls ctlLookUp 则该属性标示查找的类型 控件的数据来源属性 单据二次开发 HeadCtl数组续InterIDAsLongFInterIDAsString nterID对应的字段名NumberAsStringFNumberAsStringNumber对应的字段名NameAsStringFNameAsStringName对应的字段名 控件的数据保存属性FieldNameAsString该值保存时对应的字段名ValeAsString保存的值 要用ValType来格式化 FilterAsString查找的过滤条件LOCKAAsBoolean选单锁定 单据二次开发 EntryCtl数组IDAsInteger 数组的Index与KDCtl的Index相对应 FCtlIndex CtlTypeAsE CtlType 控件的类型 KCtlType EnableAsBoolean 控件是否Locked与KDCtl的Locked属性相对应EnableValueAsInteger控件在各种状态下的可用性 新增 修改 察看 审核 下达 用一个五位的二进制数表示 可见则对应位为1 否则为0 常用值 0 31 bPrintAsBoolean 是否打印VisibleAsBoolean 是否可见VisibleValueAsInteger控件在各种状态下的可见性 新增 修改 察看 审核 下达 用一个五位的二进制数表示 可见则对应位为1 否则为0 常用值 0 31 NeedSaveAsBoolean 该控件的值是否保存RelateOutTblAsBoolean 该控件的值是否来自其他表MustInputAsBoolean 该控件是否必须输入LookUpClsAsInteger 如果控件的类型是查找类型的 LookUpCls ctlLookUp 单据二次开发 EntryCtl数组续则该属性标示查找的类型NeedCountAsBoolean 是否需要合计StatCountAsBoolean 是否汇总类字段FCtlIndexAsInteger控件序号FCtlOrderAsInteger控件顺序号RelationIDAsString该列相关联的父级列 控件的数据来源属性FInterIDAsStringInterID对应的字段名FNumberAsStringNumber对应的字段名FNameAsStringName对应的字段名FilterStringAsStringDInterID AsString如果该控件是查找类型的 则在该数组内记录InterID的值 其他的值直接从界面中取得 单据二次开发 EntryCtl数组续 控件的数据保存属性SaveRuleAsStringFieldNameAsString该值保存时对应的字段名ValTypeAsE ValType保存值的数据类型SaveValueAsE SaveValue保存何种类型的值 FName InterID Number DName AsStringDNumber AsStringFilter AsStringHeadItemID当前数据的内码ItemName当前数据的名称ItemNumber当前数据的IDText控件显示的Text 单据二次开发 Grig控件GridSetText colasLong RowasLong var 方法给数据控件的第Col列 第Row行赋值varGetText colasLong RowasLong var 方法取数据控件的第Col列 第Row行的值varCol指定起始列Col2指定结束列Row指定起始行Row2指定结束行Lock是否锁定Value指定行列的单元格的值 单据二次开发 二次开发实现的步骤 第一步 新建组件工程 假设工程名为ReDevPro 包含一个类名为clsReDev的类模块 引用k3BillTransfer组件和其他你要使用的组件例如ADO MicrosoftActiveXDataObjects2 1Library等 第二步 在clsReDev类代码中声明PrivateWithEventsm BillTransferAsk3BillTransfer Bill 第三步 必须添加以下代码否则系统不能够传递事件到你的组件中PublicSubShow ByValoAsObject Setm BillTransfer oEndSub第四步 在m BillTransfer的各事件中编写相应处理代码 例如PrivateSubm BillTransfer BillInitialize Setcn NewADODB Connectioncn CursorLocation adUseClientcn Openm BillTransfer CnnstringEndSub 单据二次开发 二次开发实现的步骤 续 第五步 编写完成以后编译你的工程第六步 注册二次开发组件使单据调用时能触发在表t ThirdpartyComponent中增加二次开发组件记录 各字段含义为FTypeID 二次开发插件类型 0为客户端插件 2为中间层插件FTypeDetailID 单据类型ID 客户端表示对应表ICTransactionType的FID 中间层表示事件类型FIndex 组件调用顺序 按FTypeDetailID排取一个值FComponentName 客户端二次开发组件 如PrjDemo clsDemoFComponentSrv 中间层保存二次开发组件名称FDescription 描述 单据二次开发 举几个二次开发的例子范例一在菜单中添加一个菜单 并实现该功能PrivateSubm BillTransfer BillInitialize m BillTransfer AddUserMenuItem ddd dddddd EndSubPrivateSubm billtranty UserMenuClick ByValIndexAsLong ByValCaptionAsString IfCaption ddd Then MsgBox OK 此处可以实现该菜单的功能代码EndIfEndSub 单据二次开发 范例二改变单据头的Filter属性值 在插件中看到已经改变 为什么没有传到k3bills中去 用以下代码即可实现PrivateSubm BillTransfer BeforHeadLookUp ByValCtlIndexAsLong ByValnLookUpClsIDAsLong CancelAsBoolean DimTHeadCtlAsVariantDimiAsLongIfCtlIndex 4ThenTHeadCtl m BillTransfer HeadCtlTHeadCtl CtlIndex Filter Replace THeadCtl CtlIndex Filter 986 986 986986 m BillTransfer HeadCtl THeadCtl 一定需要先定义一个THeadCtl的变量 最后把该变量赋给m BillTransfer HeadCtl 才能使其真正生效EndIfEndSub 单据二次开发 范例三在插件中改变辅助属性的值为什么不起作用 插件中对表体的赋值有的不能按照m BillTransfer SetGridText的形式修改 一定要调用m BillTransfer BillForm SetBillDataInput方式才可以真正修改SettmpItemInfo NewKFO DictionarytmpItemInfo Name 黄色 辅助属性名称tmpItemInfo Number YELLOW 辅助属性代码tmpItemInfo Value 2 辅助属性内码m BillTransfer BillForm SetBillDataInputtmpItemInfo FAuxPropID 1 1SettmpItemInfo Nothing SetBillDataInput辅助属性包 字段名 单据体 0 单据头 1 单据体 行号 单据二次开发 范例四在插件中填界面字段的三值PrivateConstOperNo 22 FOperID的FCtlOrderPrivateSubSetOperID ByValRowAsLong ByRefdctResultAsKFO Dictionary OnErrorGoToHErrDimEntryCtlAsVariantEntryCtl m BillTransfer EntryCtlEntryCtl OperNo DInterID Row dctResult GetValue FOperID EntryCtl OperNo DNumber Row dctResult GetValue FID EntryCtl OperNo DName Row dctResult GetValue FName m BillTransfer EntryCtl EntryCtlm BillTransfer SetGridTextRow OperNo dctResult GetValue FName HErr EndSub 单据二次开发 二次开发中间层接口PublicFunctionHookInvoke ByValEventIDAsLong dctParamsAsKFO Dictionary AsLongdctParams参数包里有可能要使用的单据信息操作信息和连接串sDsn连接串OperateCode1 审核2 反审核4 保存8 删除16 反作废32 作废64 单据复制TranType单据类型InterID单据内码ROB1 蓝字 1红字返回值1为正常 返回值0为失败 可以向上抛出异常和提示信息 单据二次开发 单据二次开发 客户端二次开发 先在二次开发模板中插入记录 t ThirdPartyComponent deletefromt ThirdPartyComponentwhereFComponentName ProBillPlugIns clsStockIn PlugIns declare FIndexintset FIndex selectMAX FIndex fromt ThirdPartyComponentWHEREFTypeDetailID 2 INSERTINTOt ThirdPartyComponent FTypeID FTypeDetailID FIndex FComponentName FComponentSrv FDescription SELECT0 2 FIndex 1 ProBillPlugIns clsStockIn PlugIns 生产领料单插件 GO 二次开发实战演练 二次开发实战演练 判断生产任务单是否生成领料单先创建工程ProBillPlugIns 创建好类 clsStockIn PlugIns 二次开发实战演练 业务实现主函数 二次开发实战演练 中间层二次开发 先在二次开发模板中插入记录 t ThirdPartyComponent DELETEFROMt ThirdPartyComponentWHEREFComponentSrv MProSaleBillOut clsMSaleBillOut PlugIns declare FIndexintset FIndex selectisnull MAX FIndex 0 fromt ThirdPartyComponentWHEREFTypeDetailID 300009 INSERTINTOt ThirdPartyComponent FComponentSrv FTypeID FTypeDetailID FIndex FComponentName FDescription SELECT MProSaleBillOut clsMSaleBillOut PlugIns 2 300009 FIndex 1 销售出库单审核反写接口 FROMt ThirdPartyComponentGO 二次开发实战演练 注意MTSTransactionMode属性的选择 二次开发实战演练 MTSTransactionMode属性可能的值有 0 NotAnMTSObject 对象无法识别MTS或者事务处理 而且不参与其中 1 NoTransactions 对象无法在事务处理模式里执行 即使它是由参与事务处理的某个对象调用的 2 RequiresTransaction 对象必须在事务处理里运行 如果对象的创建者有事务处理 那么对象就要在其创建者的事务处理里运行 如果情况不是如此 那么就会为对象创建一个事务处理 3 UsesTransaction 对象需要或者不需要事务处理都可以运行 如果对象的创建者在事务处理里运行 那么对象就会被放在事务处理里 如果其创建者不是在事务处理里运行 那么它也不会创建一个 4 RequiresNewTransaction 对象需要在新的事务处理里运行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版特色农家乐经营权转让合同下载
- 2025版特种设备检测委托合同范本
- 2025版社区邻里共建健身活动协议书
- 2025年船舶份额买卖及船舶进出口代理服务合同
- 2025版工厂用工劳动合同加班费计算规范
- 2025年版危险货物运输企业安全生产责任及环境保护合同范本
- 2025年度男女朋友恋爱期间财产共有管理及分手补偿协议书
- 2025年度城市绿化工程单项劳务分包合同模板
- 2025版环保设备融资租赁执行合同
- 2025版房地产开发项目融资借款合同范本
- 培训学校租房合同协议书
- 网络安全风险评估与应对策略手册
- 《从“浪浪山”启程做更好的“小妖怪”!》开学第一课班会教案
- 防地震教学课件
- DB15∕T 3644-2024 国有企业阳光采购规范
- 2025年小升初音标测试题及答案
- 2025年高校辅导员招考笔试真题及答案
- 慎交友-不交损友课件
- 宾馆前台培训课件
- 消防安全专项施工方案及应急预案
- 2025年高考生物甘肃卷试题答案解读及备考指导(精校打印)
评论
0/150
提交评论