生成dbf,文件名长度问题
时间:2011-11-24
来源:互联网
SQL code
EXEC sp_configure 'show advanced options', 1; RECONFIGURE WITH OVERRIDE; go EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; go EXEC sp_configure 'allow updates', 0; --设置为0 GO RECONFIGURE WITH OVERRIDE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO declare @path nvarchar(500), @over int, @obj int, @sql nvarchar(1000) set @path = N'D:\test\test20111122.dbf' set @over = 1 declare @flag int, @cmd1 nvarchar(500), @cmd2 nvarchar(500) declare @directorypath nvarchar(100), @constr nvarchar(1000) set @directorypath = N'D:\test\' if object_id(N'tempdb..#tb') is not null drop table #tb create table #tb(a bit,b bit,c bit) insert into #tb exec master..xp_fileexist @path if exists(select 1 from #tb where a = 1) if @over=1 begin set @path=N'del ' + @path --print @path exec master..xp_cmdshell @path,no_output end else set @over=0 else begin set @cmd1 = N'dir ' + @directorypath set @cmd2 = N'md ' + @directorypath exec @flag = xp_cmdshell @cmd1 , NO_OUTPUT if @flag != 0 exec master.dbo.xp_cmdshell @cmd2 set @over=1 end if right(@directorypath,1)<>'\' set @directorypath = @directorypath + '\' --数据库创建语句 set @constr = N'Provider = Microsoft.Jet.OLEDB.4.0; Extended Properties=''dBASE III;' + 'HDR=yes;IMEX=2;DATABASE=' + @directorypath + '''' declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int --连接数据库 exec @err=sp_OACreate 'adodb.connection', @obj out if @err<>0 begin exec sp_OAGetErrorInfo 0, @src out, @desc out print @src print @desc --print 'connection' end set @constr = replace(@constr, '&', '^&') --打开数据库 exec @err=sp_OAMethod @obj, 'open', null, @constr if @err<>0 begin exec sp_OAGetErrorInfo 0,@src out,@desc out print @src print @desc end declare @filepath varchar(50) set @filepath = 'test20111122.dbf' set @sql = 'Id decimal(5, 0), Name nvarchar(10), fenshu decimal(5, 2)' select @sql= 'create table ' + @filepath + '(' + @sql +')' if @over=1 begin exec @err=sp_OAMethod @obj, 'execute', @out out, @sql if @err<>0 begin -- rollback tran exec sp_OAGetErrorInfo 0,@src out,@desc out print @src print 'execute' print @desc end end exec @err = sp_OADestroy @obj
作者: TimZhuFaith 发布时间: 2011-11-24
作者: qianjin036a 发布时间: 2011-11-24
这是因为 VFP 自由表的表名,必须遵守DOS时代 8.3 结构,即文件名 8 位,扩展名 3 位.
作者: TimZhuFaith 发布时间: 2011-11-24
作者: fredrickhu 发布时间: 2011-11-24
操作系统是什么?
作者: TimZhuFaith 发布时间: 2011-11-24
当然没有去证实过。
作者: fredrickhu 发布时间: 2011-11-24
server版的和XP,win7也许有所区别。
当然没有去证实过。
作者: TimZhuFaith 发布时间: 2011-11-24
作者: tgbd 发布时间: 2011-11-24
并不是所有windows03都有问题
引用 5 楼 fredrickhu 的回复:
server版的和XP,win7也许有所区别。
当然没有去证实过。
如果你的机器上正确地安装有VFP 6 的驱动,那一定会是 8.3 结构的,除非系统并不能正确识别VFP自由表.
作者: qianjin036a 发布时间: 2011-11-24
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28