应收单或应付单列表“发票号码”字段无法排序,如何解决

1、问题描述
应收单或应付单列表中,对“发票号码”字段进行“排序”操作,但未生效
————
类似问题:应收单或应付单列表“发票代码”字段无法排序

2、原因分析
因应收开票业务中,涉及一张应收单对应多张发票的情况,当对应的发票数量大时,发票代码/发票号码字段需要支持存储较大长度的数据。为存储需要,该字段由最初的varchar修改为clob类型,造成排序失效,clob大文本字段不支持排序。在确认客户开票业务不涉及一张应收单对应大量发票的情况下,可以在客户环境修改“发票代码”/“发票号码”的字段类型。
3、解决方案
本方案以应收单为例,如需要修改应付单发票代码/号码字段,步骤相同,表名需替换为应付单表。
3.1 确认历史数据不超过varchar类型最大长度限制(Oracle:4000,Sqlserver:8000)
————执行以下语句查询
select max(length(FINVOICECODE )) from T_AR_OTHERBILL
select max(length(FInvoiceNo)) from T_AR_OTHERBILL
查看返回值,如果大于(Oracle:4000,Sqlserver:8000),则说明客户环境历史数据中,已存在数据大于限制,不可进行字段类型变更操作,该解决方案不适用。如果小于,可继续按本文档步骤继续操作。
3.2 数据备份
为避免执行过程存在异常,导致数据丢失,请在执行操作前,一定做好数据的备份。
————执行以下语句备份
select * into T_AR_OTHERBILL_bak from T_AR_OTHERBILL
3.3 执行字段类型修改语句
————执行以下语句修改“发票代码”字段类型,以Oracle为例
IF EXISTS(SELECT 1 FROM KSQL_USERCOLUMNS WHERE KSQL_COL_TABNAME = 'T_AR_OTHERBILL' AND KSQL_COL_NAME = 'FInvoiceCode')
alter table T_AR_OTHERBILL add FInvoiceCode_bak VARCHAR(4000);
if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')
update T_AR_OTHERBILL set FInvoiceCode_bak = FInvoiceCode;
if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')
alter table T_AR_OTHERBILL drop default for FInvoiceCode;
if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')
update T_AR_OTHERBILL set FInvoiceCode=null;
if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')
alter table T_AR_OTHERBILL drop column FInvoiceCode ;
IF EXISTS(SELECT 1 FROM KSQL_USERCOLUMNS WHERE KSQL_COL_TABNAME = 'T_AR_OTHERBILL' AND KSQL_COL_NAME = 'FInvoiceCode_bak')
alter table T_AR_OTHERBILL add FInvoiceCode VARCHAR(4000);
if exists (select 1 from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')
update T_AR_OTHERBILL set FInvoiceCode = FInvoiceCode_bak;
if exists (select * from KSQL_USERCOLUMNS where KSQL_COL_TABNAME = 'T_AR_OTHERBILL' and KSQL_COL_Name = 'FInvoiceCode_bak')
alter table T_AR_OTHERBILL drop column FInvoiceCode_bak;
————执行以下语句修改“发票号码”字段类型
IF EXISTS(SELECT 1 FROM KSQL_USERCOLUMNS WHERE KSQL_COL_TABNAME = 'T_AR_OTHERBILL' AND KSQL_COL_NAME = 'FInvoiceNo')
alter table T_AR_OTHERBILL add FInvo
应收单或应付单列表“发票号码”字段无法排序,如何解决
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



