linkage service服务

本文介绍了PFC的Linkageservice功能,它帮助开发者实现主/从窗口间的数据同步及合作处理。Linkageservice提供了多种链接风格和更新风格,如retrieve、updateextend等,以及如何在主从DataWindow中配置和使用这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linkage service

概要

PFC的linkage service帮助你实现主/从窗口合作处理。
Linkage service包括如下功能:

Linkage style(连接风格):控制 从窗口的DataWindow检索数据(从 数据窗口要指定检索参数,不必写pfc_retrieve)、过滤数据(从窗口要编写pfc_retrieve代码)、滚动到特定行(从窗口要编写pfc_retrieve代码)。
retrieve
filter
scroll

Update style(更新风格):控制Linkage service更新DataWindows的方式(top-down, bottom-up, top-down then bottom-up, bottom-up then top-down, or a developer-specified custom update)
更新方式:
topdown (默认)
     从顶级主窗口开始到末级从窗口的顺序进行更新

bottomup
     从末级开始到顶顺序进行更新

topdown-bottomup   (适应于表有外键关系统的 级联的 增加,修改时先保存主再对从的进行保存,删除时先删除从的再删除主的这样不会出现错误)
       第一次更新 从顶级到末级进行insert update ,第二次更新 从末级到顶级 进行delete
bottomup-topdown 
       第一次更新 从末级到顶级 进行delete,第二次更新 从顶级到末级进行insert update

delete style 删除风格:当你删除主纪录时,该选项可以设成删除从纪录、不理会从纪录。
update extend 更新扩展:允许你将其他的控件也作为默认数据保存过程。
Cascading key changes:当用户改变主纪录时,Linkage service会自动修改从纪录

prompt (提醒功能)只有当连接风格为retrieve时,且数据窗口控件必须为可更新时才可用。

数据发生变化时的提醒窗口:当主数据发生变化,从数据即将丢失时,该选项可以显示一个提醒窗口。
删除数据时的提醒窗口:当用户删除数据时可以显示提醒窗口

使用说明
你可以使用Linkage service处理各种DataWindow中的合作。尽管如此,大部分时候都是用于处理主/从关系的DataWindow 。

开启Linkage service:
调用u_dw的of_SetLinkage函数:
dw_emplist.of_SetLinkage(TRUE)
u_dw自动删除所有Service 。

使用Linkage service实现主/从处理:
在主从DataWindow中同时开启Linkage service:
dw_master.of_SetLinkage(TRUE)
dw_detail.of_SetLinkage(TRUE)

为顶级主DataWindow设置事务对象:从窗口会自动使用主数据窗口的事务对象
dw_master.inv_linkage.of_SetTransObject(SQLCA)


将从DataWindow连接到主DataWindow中:
dw_detail.inv_linkage.of_SetMaster(dw_master)

调用函数of_Register注册关联列:
dw_dwtail.inv_linkage.of_Register(”emp_id”,”emp_id”)


调用函数of_SetStyle建立当主数据改变时从数据的动作。

下面的例子说明了当主数据改变时从数据检索数据:
dw_detail.inv_linkage.of_SetStyle(dw_detail.inv_linkage.RETRIEVE)


调用主DataWindow的of_Retrieve函数:
IF dw_master.of_Retrieve()= -1 特Then
MessageBox(”Error”,”Retrieve error”)
Else
Dw_Master.SetFocus()
End if

你可以将以上的代码全部写在一个事件中。
在主DataWindow的pfc_Retrieve事件中添加检索数据的代码:
Return this.Retrieve()




数据改变时的提醒窗口(尽限于retrieval风格)
在从DataWindow中调用of_SetUpdateOnRowChange函数:
dw_detail.inv_linkage.of_SetUpdateOnRowChange(TRUE)     行改变自动更新   
在从Datawindow中调用of_SetConfirmOnRowChange函数
dw_detail.inv_linkage.of_SetConfirmOnRowChange(TRUE)


数据删除时的提醒窗口(尽限于retrieval风格)
在从DataWindow中调用of_SetUpdateOnRowChange函数:
dw_detail.inv_linkage.of_SetUpdateOnRowChange(TRUE)   行改变自动更新   
在从DataWindow中调用of_SetConfirmOnDelete函数
dw_detail.inv_linkage.of_SetConfirmOnDelete(TRUE)   


开启casacding key

在所有关联的DataWindow中调用of_SetSyncOnKeyChange函数
dw_master.inv_linkage.of_SetSyncOnKeyChange(TRUE) 
dw_detail.inv_linkage.of_SetSyncOnKeyChange(TRUE)


设置删除风格:

在主DataWindow中调用函数of_SetDeleteStyle
                                                            .delete_rows
dw_master.inv_linkage.of_SetDeleteStyle(dw_cust.inv_linkage.DISCARD_ROWS)

启用更新扩展:
为其他需要添加到默认保存过程中的控件调用函数of_SetOtherSaveObjects
PowerObject lpo_objs[ ]
// This example adds the lv_salesinfo ListView
// to the save process.
lpo_objs[1] = lv_salesinfo
dw_master.inv_linkage.of_SetOtherSaveObjects(lpo_objs)



 
{ "name": "vue-typescript-admin-template", "version": "0.1.0", "private": true, "author": "Chong Guo <armourcy@gmail.com>", "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "build:uat": "vue-cli-service build --mode production.uat", "lint": "vue-cli-service lint", "svg": "vsvg -s ./src/icons/svg -t ./src/icons/components --ext ts --es6", "test:e2e": "vue-cli-service test:e2e", "test:unit": "vue-cli-service test:unit" }, "dependencies": { "@types/echarts": "^4.4.6", "@types/webpack": "^4.41.12", "area-data": "^5.0.6", "axios": "^0.19.0", "echarts": "^5.3.2", "element-ui": "^2.12.0", "js-cookie": "^2.2.1", "md5": "^2.3.0", "moment": "^2.24.0", "normalize.css": "^8.0.1", "nprogress": "^0.2.0", "path-to-regexp": "^3.0.0", "register-service-worker": "^1.6.2", "vue": "^2.6.10", "vue-area-linkage": "^5.1.0", "vue-class-component": "^7.1.0", "vue-property-decorator": "^8.2.2", "vue-router": "^3.1.2", "vue-svgicon": "^3.2.6", "vuex": "^3.1.1", "vuex-class": "^0.3.2", "vuex-module-decorators": "^0.10.1", "vuex-persistedstate": "^2.7.0" }, "devDependencies": { "@types/jest": "^24.0.18", "@types/js-cookie": "^2.2.2", "@types/nprogress": "^0.2.0", "@types/webpack-env": "^1.14.0", "@vue/cli-plugin-babel": "^3.11.0", "@vue/cli-plugin-e2e-cypress": "^3.11.0", "@vue/cli-plugin-eslint": "^3.11.0", "@vue/cli-plugin-pwa": "^3.11.0", "@vue/cli-plugin-typescript": "^3.11.0", "@vue/cli-plugin-unit-jest": "^3.11.0", "@vue/cli-service": "^3.11.0", "@vue/eslint-config-standard": "^4.0.0", "@vue/eslint-config-typescript": "^4.0.0", "@vue/test-utils": "^1.0.0-beta.29", "babel-core": "^7.0.0-bridge.0", "babel-eslint": "^10.0.3", "eslint": "^6.2.2", "eslint-plugin-vue": "^5.2.3", "fibers": "^4.0.2", "jest": "^24.9.0", "sass": "^1.22.10", "sass-loader": "^7.3.1", "style-resources-loader": "^1.2.1", "ts-jest": "^24.0.2", "typescript": "3.6.2", "vue-cli-plugin-element": "^1.0.1", "vue-cli-plugin-style-resources-loader": "^0.1.3", "vue-template-compiler": "^2.6.10", "webpack": "^4.39.3" } } PS D:\My JAVA\苍穹外卖\前端源码\苍穹外卖前端源码\project-sky-admin-vue-ts> npm install npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: vue-typescript-admin-template@0.1.0 npm ERR! Found: vue@undefined npm ERR! node_modules/vue npm ERR! vue@"^2.6.10" from the root project npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer vue@">=2.2.0" from vue-area-linkage@5.1.0 npm ERR! node_modules/vue-area-linkage npm ERR! vue-area-linkage@"^5.1.0" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force, or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR! npm ERR! See C:\Users\liuchaokun\AppData\Local\npm-cache\eresolve-report.txt for a full report. npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\liuchaokun\AppData\Local\npm-cache\_logs\2025-07-28T03_08_03_535Z-debug-0.log
最新发布
07-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值