Foxtable(狐表)用户栏目专家坐堂 → [求助]大数据量的导入和保存


  共有5030人关注过本帖树形打印复制链接

主题:[求助]大数据量的导入和保存

帅哥哟,离线,有人找我吗?
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/11 21:00:00 [只看该作者]

测试了一下,确实是关联单表的问题。只能去掉关联使用


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2017/7/11 21:59:00 [只看该作者]

那这个大数据量的保存几乎就没有意义了。
因为随便哪个系统,都不可能是单一个表的。绝大多数的表之间都存在关联关系,去掉关联,那就无法成为一个系统了。
只能回到软件本身提供的
datatables.save了
唉,白搞好几天。
[此贴子已经被作者于2017/7/11 21:59:29编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/11 22:12:00 [只看该作者]

不删除关联也可以

函数就要换一种方法了,不能使用GetChanges,只能通过遍历所有行,判断行的状态。具体方法看懂原来的用法自己改改

另外表之间都存在关联关系是一回事,设置为关联表又是一回事。不是还是模拟关联表的用法吗。像金蝶,他们的表关联关系基本仅存在于数据库级别,在程序里是不设置关联表用法的。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/12 9:45:00 [只看该作者]

 为办法,代码要大改,参考

 

http://www.foxtable.com/webhelp/scr/0428.htm

 

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2017/7/12 14:41:00 [只看该作者]

@有点蓝 如果都用模拟,那开发工作量几乎是几何级数的,表少可以,表多了会累死的。而且维护极不方便。
@有点甜  代码大改可以接受,但还是要做成统一的方法才行。而且,一个表的数据行数多(比如1W行),列数也不少(随便都有五六列了),遍历的话,效率可能甚至还不如datatables.save呢。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/7/12 14:49:00 [只看该作者]

叫你这样写,通过这种方式获取新增的行或者是修改的行。

 

for each dr as datarow in datatables("表A").DataRows
    If dr.RowState = DataRowState.Added Then
       
    ElseIf dr.RowState = DataRowState.Modified Then
       
    End If
Next

[此贴子已经被作者于2017/7/12 14:48:53编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2017/7/12 17:24:00 [只看该作者]

@有点甜  获取新增的行和修改的行是可以,有个问题:删除的行怎么办?因为RowState 没有deleted状态。


[此贴子已经被作者于2017/7/12 17:30:54编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106067 积分:539428 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/12 17:57:00 [只看该作者]

有得

For Each dr As system.data.DataRow In DataTables("表A").basetable.Rows
    If dr.RowState = DataRowState.Added Then
        
    ElseIf dr.RowState = DataRowState.Modified Then
        
    ElseIf dr.RowState = DataRowState.Deleted Then
        Output.Show(dr("_Identify",System.Data.DataRowVersion.Original))
    End If
Next

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2017/7/12 18:00:00 [只看该作者]

啊,帮助里为什么没写?
帮助里总共只有4种:Added、Modified、Unchanged、Detached

 回到顶部
帅哥哟,离线,有人找我吗?
chnfo
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2191 积分:18001 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/5/28 15:36:00 [只看该作者]

使用过程中,发现一个小问题。
在获取新增和修改行时,用的是
for each dr as datarow in datatables("表A").DataRows

next

但在获取删除行的时候,用的是
For Each dr As system.data.DataRow In DataTables("表A").basetable.Rows

很显然是不一样的。是不是表示要用不同的方法?

另外,界面表中不会有_identify字段,外部数据表的access会有这个字段。以下这段代码会提示已经有该字段的提示。如果是这样,这段代码是不是要注释掉?
If tbid = "_Identify" Then
    s1 = "_Identify"
Else
    With tb.DataTable.DataCols(tbid)
        s1 = "未知"
        If .IsString Then s1 = "文本"
        If .IsNumeric Then s1 = "数值"
        If .IsDate Then s1 = "日期"
    End With
End If
_表格_字段类型表.Add(tbid, s1)
[此贴子已经被作者于2018/5/28 15:56:06编辑过]

 回到顶部
总数 29 上一页 1 2 3 下一页