以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请教程版关于自动更新表结构  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67358)

--  作者:chnfo
--  发布时间:2015/4/22 21:09:00
--  [求助]请教程版关于自动更新表结构
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=42378&replyID=&skin=1
这是程版的自动更新表结构的贴子。

我按照程版的方法试了好多次,总是失败,程版能再费个心做个实例不。那个例子只有一个txt文件,我也查不出来原因在哪里。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:update.zip



在这个例子中,我没有使用自定义函数,做了一个窗口,里面有一个按钮。

这一段

Dim uptext As String = ProjectPath & "\\Attachments\\addtable.txt"
If FileSys.FileExists(uptext) = True \'判断addtable.txt文件是否存在
    Dim s As String = FileSys.ReadAllText(uptext ,Encoding.Default) \'读取该文本文件的内容
    s = s.Replace(chr(10),"").Replace(chr(13),";").Replace(chr(-23636),",") \'支持英文分号和回车分隔多表,支持中英文逗号分割字符列属性和指定长度,以避免手误
    Dim Values(),Value1s(),Value2s() As String \'定义字符型数组用于存储多表分割字符串?表名称?列名称和列属性
    Values = s.split(";") \'分割多行内容,将分割的内容添加到数组
    \'-----------------------------------------------以下代码创建表
    For Index As Integer = 0 To Values.Length - 1 \'循环遍历数组
        Value1s = Values(Index).split("/") \'提取表名称到数组,0是表名,1是列组
        Dim Builder As New ADOXBuilder \'定义一个新的ADOXBuilder  \'这一段如果不加数据源名称,则会增加txt文本中的表到内部数据表,但不会增加到共享数据源的表中;而如果把它改为Dim Builder As New ADOXBuilder("CS001"),则会提示如下的错误

.NET Framework 版本:2.0.50727.5485
Foxtable 版本:2014.11.11.1
错误所在事件:窗口,窗口1,Button1,Click
详细错误信息:
在对应所需名称或序数的集合中,未找到项目。

然后在外部数据源中,可以看到共享数据库中增加了“车辆管理”的表,但没有增加“产品明细”的表,而且“车辆管理”表没有数据列。

这是为什么呢?
[此贴子已经被作者于2015/4/22 21:31:32编辑过]

--  作者:黄训良
--  发布时间:2015/4/23 0:33:00
--  
参考 http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=62917
--  作者:chnfo
--  发布时间:2015/4/23 10:20:00
--  
你那个帖下载的附件看不到源码,没用
[此贴子已经被作者于2015/4/23 10:20:34编辑过]

--  作者:Bin
--  发布时间:2015/4/23 10:32:00
--  
之前和你解释过了.你这样单项目使用当然是不可能会成功的.

首先,你得新建一个项目,没有这两个表的,外部数据源也没有.   设置自动更新版本功能.


然后.你更新项目,新建这两个外部数据源表,并且手动添加进狐表, 此时.你这个项目是完全正常运行, 狐表里和数据源里都已经有这两个表了.

但是,你老版本发布的想,数据源和 项目均没有这两个表.


此时老项目执行自动更新,那么只会更新项目文件,此时项目文件里面有这两个表,但是老数据源里没有,就会报错不正常执行.

此时,这个功能就发挥作用了.可以自动更新,把表添加到数据源里去