用友U8+中,客户档案和供应商档案可以设置自动生成助记码,但软件只能自动根据客户全称/供应商全称生成助记码,而无法选择按简称生成助记码,这显然十分不方便,可以通过如下方式解决:

修改步骤

1、往数据库中插入一个自定义函数,实现自动根据汉字取拼音首字母。

2、对customer(客户档案)及Vendor(供应商档案)分别增加一个触发器,保存档案后自动update。

新增函数

来源于https://blog.csdn.net/huryer/article/details/78547331

create function [dbo].[fun_getPY](@str nvarchar(4000))
returns nvarchar(4000)
as
begin
declare @word nvarchar(1),@PY nvarchar(4000)
set @PY=''
set @str = ltrim(rtrim(@str))
while len(@str)>0
begin
set @word=left(@str,1) set @PY=@PY+ltrim((case when unicode(@word) between 19968 and 19968+20901
then (select top 1 PY from (
select 'A' as PY,N'驁' as word
union all select 'B',N'簿'
union all select 'C',N'錯'
union all select 'D',N'鵽'
union all select 'E',N'樲'
union all select 'F',N'鰒'
union all select 'G',N'腂'
union all select 'H',N'夻'
union all select 'J',N'攈'
union all select 'K',N'穒'
union all select 'L',N'鱳'
union all select 'M',N'旀'
union all select 'N',N'桛'
union all select 'O',N'漚'
union all select 'P',N'曝'
union all select 'Q',N'囕'
union all select 'R',N'鶸'
union all select 'S',N'蜶'
union all select 'T',N'籜'
union all select 'W',N'鶩'
union all select 'X',N'鑂'
union all select 'Y',N'韻'
union all select 'Z',N'咗'
) T
where word>=@word collate Chinese_PRC_CS_AS_KS_WS
order by PY ASC)
when unicode(@word) between 8544 and 8552 --希腊字母1-9
then nchar(unicode(@word)-8495)
when unicode(@word) = 8553 --希腊字母10
then ''
when unicode(@word) between 48 and 57 --数字0-9
then @word
when unicode(@word) between 65296 and 65305 --全角数字0-9
then nchar(unicode(@word)-65248)
when unicode(upper(@word)) between 65 and 90 --字母a-z和A-Z
then upper(@word)
when unicode(upper(@word)) between 65313 and 65338 --全角字母a-z和A-Z
then nchar(unicode(upper(@word))-65248)
else '' end)) --如果非汉字字符或非字母、数字、希腊字母、全角字母、全角数字,返回空字符
--set @str=right(@str,len(@str)-1)
set @str = substring(@str,2,len(@str)-1)
end
return @PY
end

函数调用方法

select dbo.fun_getPY(‘张三’) as result --上述语句执行后返回结果ZS

插入触发器

客户档案

CREATE TRIGGER [dbo].[MnemCode]
ON [dbo].[Customer] AFTER INSERT AS update customer
set cCusMnemCode=dbo.fun_getPY(cCusAbbName) where cCusMnemCode is null

供应商档案

CREATE TRIGGER [dbo].[Vendor_MnemCode]
ON [dbo].[Vendor] AFTER INSERT AS update vendor
set cVenMnemCode=dbo.fun_getPY(cVenAbbName) where cVenMnemCode is null

最新文章

  1. ASP.NET ashx实现无刷新页面生成验证码
  2. handlebars+require
  3. 在 mysql 中利用 Duplicate key, 一句话实现存在的更新不存在插入功能
  4. iOS https(SSL/TLS)数据捕获
  5. fiddlercore 抓包获取cookie的方法
  6. PPTPD/L2TP/IPSec VPN一键安装包 For CentOS 6
  7. Maven学习一:用Maven创建Java Project
  8. Hive Metastore ObjectStore PersistenceManager自动关闭bug解析
  9. ecshop首页调用指定分类的所有产品(指定一级调二级)
  10. shuffle一个简单的过程叙述性说明
  11. 快速排序算法javascript实现
  12. JavaScript学习笔记(十四)——对象
  13. 谷歌SEO初学者常见问题解答
  14. Java数据类型(primitive)原始数据类型
  15. HTML5操作麦克风获取音频数据(WAV)的一些基础技能
  16. 函数和常用模块【day05】:装饰器前戏(二)
  17. cors与jsonp
  18. Angular 手动解析表达式
  19. MySQL千万级数据分区存储及查询优化
  20. 【转载】Android dip,px,pt,sp 的区别

热门文章

  1. IIS 503错误解决办法 HTTP Error 503
  2. Devexpress treelist两张表父子节点设置、筛选、分页、排序、页面跳转demo
  3. 算法笔记 第6章 C++标准模版库(STL)介绍 学习笔记
  4. 【IPHONE开发-OBJECTC入门学习】复制对象,深浅复制
  5. js 加密混淆工具
  6. Android Activity之间的数据传递
  7. Google Analytics 学习笔记三 —— GA常用术语
  8. [b0016] python 归纳 (二)_静态方法和类方法
  9. bootstrap搜索栏
  10. 去除数组空格 php