TC官方合作论坛

 找回密码
 立即注册
查看: 1610|回复: 4

[问题] 【新人共享之1】TC导出多字符数据失败,使用懒人插件完...

[复制链接]
发表于 2017-3-31 21:54:07 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 huiten 于 2017-4-4 08:09 编辑

当在数据库中某字段的值有4000多个汉字时,TC写入EXCELL表命令,导出表就会出错,应是TC的BUG吧!
回复

使用道具 举报

 楼主| 发表于 2017-4-4 07:58:27 | 显示全部楼层
功能 抽查导出数据_点击()
   
    //直接把数据库里的数据写入到excel文件中,当然包括ID号也要导出.ID号在数据库中是唯一健,一般创建记录后,就不会更改了.
    //但一定要记的当数据库清空后,重新导入EXCELL中的数据后,ID号会变,这时为了备分还需要再把数据库的数据导出,以保证的ID的不变性.
    //不从表格中导出数据到EXCELL,是因为窗口中的表格增加了五人元素,这些元素是没有意义的.
   
    var c**tr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&sysgetprocesspath()&"/date/ssjdate.mdb"
    var sql= "SELECT * FROM dxx"
    var line = 0
    var ret_array
    var err
    var ret
    ret = database(c**tr,sql,line,ret_array,err)
    //    字符串转数组(ret_array)
    消息框 ("=========================================================\n"&sysgetprocesspath())
    //由于系统工作路径函数得到了类似于:c:\xxx\xx\x\的路径,所以后面的文件夹前就不需要再加\,每个文件夹名称前面加两个\的原因是,转义符.
    //    excel写(sysgetprocesspath()&"export\\jc\\"&时间年(当前时间())&时间月(当前时间())&时间日(当前时间())&时间时(当前时间())&时间分(当前时间())&时间秒(当前时间())&".xls",ret_array,"sheet1")
   
    //特别注意:上表中当字段内容超过4000字符时,TC导出时就生成不了EXCELL文件.因此使用插件看能否实现.以下的是使用插件的代码.
   
   
   
    变量 文件路径
    文件路径=sysgetprocesspath()&"export\\jc\\"&时间年(当前时间())&时间月(当前时间())&时间日(当前时间())&时间时(当前时间())&时间分(当前时间())&时间秒(当前时间())&".xls"
   
    变量 LazyExcel,path,Index,LArr,SIndex,SName,RCount,CCount,Rangeend,Rangestart,Str
   
    //定义一个插件对象,然后就用这个对象去调用插件命令的接口
    LazyExcel = 插件("Lazy.LxjExcel")
    //打开EXCEL文件,并隐藏
    Index = LazyExcel.ExcelOpen(文件路径, 0)
   
    //    //获取第一个标签页的名称,得到导入EXCELL中数据中所需要的第一个参数
    //    SName = LazyExcel.SheetGetName(1,Index)
   
    var size=数组大小(ret_array)   
    var 尾部字段的索引值=数组键查找(ret_array[0],"AddDate")  
    var key,值
    for(var i=0;i< size;i++)
        for (var j=0;j< 尾部字段的索引值+1;j++)  
            数组获取元素(ret_array[i],j,值,key)
            LazyExcel.ExcelWrite(1,i+1,j+1,值,Index)
            //      消息框(值,key)
        end
        
    end
   
    LazyExcel.ExcelClose(Index)
   
   
   
结束
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-4 07:56:16 | 显示全部楼层
无人解答,自已把处理好的结果公布吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-4 08:00:38 | 显示全部楼层
功能 系统_初始化()
   
    控件模态窗口("登录界面")  
   
    //注册懒人插件,断定是否注册,注册成功一次后,就不需要再注册.
   
    var 插件注册
    插件注册=是否注册("Lazy.LxjExcel")
    //注意下面的IF语句中的条件表达式,还有一种是如(!插件注册)表示插件未注册.
    if (插件注册)
        消息框("懒人办公插件已注册")
    else
        消息框("懒人办公插件未注册" )
        变量 sret=注册插件(系统获取进程路径()&"LazyOffice.dll",真)
        如果(sret)
            消息框("懒人办公插件注册成功")
        结束
        
    end
结束
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-4 08:03:01 | 显示全部楼层
本帖最后由 huiten 于 2017-4-4 08:11 编辑

懒人插件存放位置:在项目的“生成”文件夹中

以上的代码分别存放为:子窗口和主窗口,主窗中注册插件,子窗中使用插件完成功能

注:本代码,只适用于TC5.5版本
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-28 16:53 , Processed in 0.043808 second(s), 25 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表