二开-如何快速引出物料等基础资料

栏目:k3wise知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

二开-如何快速引出物料等基础资料

目前K3自带的excel引出比较慢,数据量大的时候还容易崩溃;现在提供一种方法,来快速引出EXCEL;

  1. 首先确定引出基础资料显示哪些列;

  2. select * from t_ItemPropDesc where FItemClassID = 4 order by FPageName,FOrder

  3. image.webp

  4. 然后构建查询脚本


declare @fname varchar(50)

declare @FSQLColumnName varchar(50)

declare @FDataType int

declare @FSearch int

declare @FSrcTable  varchar(50)

declare @FSrcField varchar(50)

declare @FDisplayField varchar(50)

declare @select varchar(max)

declare @from varchar(max)

declare @order varchar(100)

declare @index int

set @index = 1

set @select = 'select t0.FNumber as [代码],t0.FName as [名称]'

set @from = 'From t_icitem t0 ' + CHAR(10)

set @order = 'order by t0.FNumber'


declare c cursor fast_forward for select FName,FSQLColumnName,FDataType,FSearch,isnull(FSrcTable,'') as FSrcTable,FSrcField,FDisplayField from t_ItemPropDesc where FItemClassID = 4 order by FPageName,FOrder

open c

fetch next from c into @fname,@FSQLColumnName,@FDataType,@FSearch,@FSrcTable,@FSrcField,@FDisplayField

while @@FETCH_STATUS  =0 

begin

if @FDataType= 3 and @FSrcTable <> ''

begin

set @select = @select +',isnull(t' + convert(varchar(10),@index) +'.' + @FDisplayField + ','''') as ['+ @fname +']'

set @from = @from + 'left join ' + @FSrcTable + ' as t'+ convert(varchar(10),@index) + ' on t0.' + @FSQLColumnName + '= t' + convert(varchar(10),@index) + '.' + @FSrcField 

if @FSrcTable = 't_submessage' 

begin

set @from = @from + ' And t0.'+@FSQLColumnName+'>0 And t'+ convert(varchar(10),@index) +'.FTypeID = ' + convert(varchar(10),@FSearch)

end

if @FSrcTable = 't_Item' 

begin

set @from = @from + ' And t0.'+@FSQLColumnName+'>0 And t'+ convert(varchar(10),@index) +'.FItemClassID = ' + convert(varchar(10),@FSearch)

end

set @from = @from + CHAR(10)

set @index = @index + 1

end

else if @FDataType = 200

begin

set @select = @select + ',isnull(t0.' + @FSQLColumnName + ','''') as ['+ @fname +']'

end

else

begin

set @select = @select + ',t0.' + @FSQLColumnName + ' as ['+ @fname +']'

end

fetch next from c into @fname,@FSQLColumnName,@FDataType,@FSearch,@FSrcTable,@FSrcField,@FDisplayField

end

close c

deallocate c


print @select

print @from

print @order

Go


再对应账套执行上述脚本,分析出物料全部字段列

image.webp

将输出的脚本复制出来,执行查询;得到全部物料

image.webp

直接全选复制粘贴到excel里即可;

这种操作需要数据库管理员配合;业务部门执行起来比较费劲;


使用excel自带的功能,配置数据源的方式来获取全部物料数据:由于物料的数据较大,请用office2007以上版本来做;

操作步骤:

1新建一个excel,然后切换到数据页签来;

image.webp

2.点击【自其他来源】按钮

image.webp

3.点击来至sqlserver

image.webp

输入数据库IP地址(图中我输入的localhost是因为数据库安装在我自己这台电脑上,业务部门请输入数据库安装的电脑的IP地址,问数据库管理员要)

用户名密码,找数据库管理员找,数据库管理员可以建立sql只读的用户给业务部门使用;sa是管理员账户,尽量不要给业务部门;

如果用户名密码输入正确,点下一步,首先选择账套:

image.webp

选择指定账套之后,这里会列举出当前数据库全部的物理表和视图:

image.webp

因此先要把之前查询的结果转化成视图

再指定数据库中执行脚本

Create View vw_allitem_robby

as

xxxxxxx

xxxxx就是我们最开始print出来的脚本;(注意:需要把最后面的order by去掉)


视图创建完成

image.webp

然后查询这个视图,检查数据是正确的

select * from vw_allitem_robby

image.webp

然后回到excel数据源创建:

image.webp

找到刚才创建的视图,点击下一步:

image.webp

友好名称可以更换成一个比较容易理解的名称

image.webp

点击完成;

image.webp

现有工作表的(E):单元格更换成

image.webp

更换到第一个单元格;

image.webp

点击确定

image.webp这样数据就全部出来了;


如果我下次有新建了一个excel也要获取一下全部物料:

新建一个excel

image.webp点击现有连接

image.webp

选择正式账套全部物料,(这就是之前创建的会保留再本机)

image.webp

点击确定

image.webp

输入服务器IP,用户名、密码:点击确认;数据就出来了;


如果过了一个月,新增物料或者删除了物料,需要重新获取输入,如何处理?

打开原来的excel,再文件页签里面,点击刷新按钮就可以了;

image.webp



以上出现的数据均未wise演示账套数据;


学习学习


我现在就碰到从bos数据交换平台引物料太费时,要5个小时,而且进度条显示100%,但是任务窗口就是不跳出完成,一点窗口就卡死。有一次等了一个晚上,还是卡死,只能强制退出,所幸查看引出的EXCLE表格有数据,对比之前的数据有增加,说明引出了。有空来试试楼主的方法


二开-如何快速引出物料等基础资料

目前K3自带的excel引出比较慢,数据量大的时候还容易崩溃;现在提供一种方法,来快速引出EXCEL;首先确定引出基础资料显示哪些列;select ...
点击下载文档
分享:
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息