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


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

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

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18075 威望: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编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18075 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/5/29 8:55:00 [显示全部帖子]

那个帖子里有两处可能有点问题 
第一处:
  For Each dr As System.Data.DataRow In ChangeTable.Rows
        '遍历设置列值
        sql = sql11
        For Each str1 As String In _表格_字段对应表.Keys
            str = "'" & dr(str1) & "',"
            Select Case _表格_字段类型表(str1)
                Case "数值"
                    str = dr(str1) & ","    '此处应为 str = dr(str1).tostring  & ","  

第二处:
'如果没有修改记录,返回空值
'
If ChangeTable IsNot Nothing Then
    For Each dr As System.Data.DataRow In ChangeTable.Rows    '循环获取修改语句
        '获取主键值
        strkey = dr(tbid)
        Select Case _表格_字段类型表(tbid)
            Case "文本"
                strkey = "'" & dr(tbid) & "'"
            Case "日期"
                If lx = 1 Then
                    strkey = "#" & dr(tbid) & "#"
                Else
                    strkey = "'" & dr(tbid) & "'"
                End If
        End Select
        
        '遍历设置列值
        sql = "UPDATE " & kName & " Set  "
        For Each str1 As String In _表格_字段对应表.Keys
            str = "'" & dr(str1) & "'"
            Select Case _表格_字段类型表(str1)
                Case "数值"
                    str =  dr(str1)    '此处应为str =  dr(str1)  & ","

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18075 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/5/29 13:45:00 [显示全部帖子]

暂时算是没有报错了。

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18075 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/5/29 15:36:00 [显示全部帖子]

我自己修改了一下,做了一个自定义函数。
更新,有些细节地方错了。
这个函数使用是有条件的:
1、外部表的系统的表的名称、结构是一致的
2、外部表使用_Identify作为主键


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文本文档.txt


[此贴子已经被作者于2018/5/29 18:02:36编辑过]

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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18075 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/5/29 19:13:00 [显示全部帖子]

在示例的那个凭证、客户、订单里执行就没有问题,在另一个项目中执行就会报错。

---------------------------
版本:2018.3.9.1
---------------------------
代码执行出错,错误信息:



System.InvalidCastException: 从类型“DBNull”到类型“String”的转换无效。

   在 Microsoft.VisualBasic.CompilerServices.Conversions.ToString(Object Value)

   在 UserCode.Test()
---------------------------
确定   
---------------------------



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


加好友 发短信
等级:九尾狐 帖子:2199 积分:18075 威望:0 精华:0 注册:2011/11/26 20:21:00
  发帖心情 Post By:2018/5/30 16:25:00 [显示全部帖子]

好象可以,现在不报错了。
小问题:只是删除的行要这样处理吗?修改的不需要修改?

 回到顶部
总数 17 上一页 1 2