二开-如何快速引出物料等基础资料
目前K3自带的excel引出比较慢,数据量大的时候还容易崩溃;现在提供一种方法,来快速引出EXCEL;
首先确定引出基础资料显示哪些列;
select * from t_ItemPropDesc where FItemClassID = 4 order by FPageName,FOrder
然后构建查询脚本
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
再对应账套执行上述脚本,分析出物料全部字段列
将输出的脚本复制出来,执行查询;得到全部物料
直接全选复制粘贴到excel里即可;
这种操作需要数据库管理员配合;业务部门执行起来比较费劲;
使用excel自带的功能,配置数据源的方式来获取全部物料数据:由于物料的数据较大,请用office2007以上版本来做;
操作步骤:
1新建一个excel,然后切换到数据页签来;
2.点击【自其他来源】按钮
3.点击来至sqlserver
输入数据库IP地址(图中我输入的localhost是因为数据库安装在我自己这台电脑上,业务部门请输入数据库安装的电脑的IP地址,问数据库管理员要)
用户名密码,找数据库管理员找,数据库管理员可以建立sql只读的用户给业务部门使用;sa是管理员账户,尽量不要给业务部门;
如果用户名密码输入正确,点下一步,首先选择账套:
选择指定账套之后,这里会列举出当前数据库全部的物理表和视图:
因此先要把之前查询的结果转化成视图
再指定数据库中执行脚本
Create View vw_allitem_robby
as
xxxxxxx
xxxxx就是我们最开始print出来的脚本;(注意:需要把最后面的order by去掉)
视图创建完成
然后查询这个视图,检查数据是正确的
select * from vw_allitem_robby
然后回到excel数据源创建:
找到刚才创建的视图,点击下一步:
友好名称可以更换成一个比较容易理解的名称
点击完成;
现有工作表的(E):单元格更换成
更换到第一个单元格;
点击确定
这样数据就全部出来了;
如果我下次有新建了一个excel也要获取一下全部物料:
新建一个excel
点击现有连接
选择正式账套全部物料,(这就是之前创建的会保留再本机)
点击确定
输入服务器IP,用户名、密码:点击确认;数据就出来了;
如果过了一个月,新增物料或者删除了物料,需要重新获取输入,如何处理?
打开原来的excel,再文件页签里面,点击刷新按钮就可以了;
完
以上出现的数据均未wise演示账套数据;
学习学习
我现在就碰到从bos数据交换平台引物料太费时,要5个小时,而且进度条显示100%,但是任务窗口就是不跳出完成,一点窗口就卡死。有一次等了一个晚上,还是卡死,只能强制退出,所幸查看引出的EXCLE表格有数据,对比之前的数据有增加,说明引出了。有空来试试楼主的方法
二开-如何快速引出物料等基础资料
本文2024-09-16 16:24:53发表“k3wise知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3wise-9079.html