用友U8根据客户简称/供应商简称的拼音首字母生成助记码

Posted daiyudong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用友U8根据客户简称/供应商简称的拼音首字母生成助记码相关的知识,希望对你有一定的参考价值。

用友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 0
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

 

 

以上是关于用友U8根据客户简称/供应商简称的拼音首字母生成助记码的主要内容,如果未能解决你的问题,请参考以下文章

js中如何根据汉字生成拼音首字母

iOS-如何返回某个字符串的拼音助记码

sql自动生成汉语拼音和首字母函数

java+mysql,关于根据拼音首字母查询

JS获取中文拼音首字母,并通过拼音首字母快速查找页面内的中文内容

java怎么根据汉字获取字的拼音首字母