Foxtable(狐表)用户栏目专家坐堂 → 数据库1中的表A选定行复制或者导入到数据库2的表B


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

主题:数据库1中的表A选定行复制或者导入到数据库2的表B

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
数据库1中的表A选定行复制或者导入到数据库2的表B  发帖心情 Post By:2021/5/17 3:35:00 [显示全部帖子]

数据库1和数据库2都是ACCESS数据库,数据表都是外部表
希望把数据库1表A中选定的行(一行或多行)复制或导入到数据库2中的表B,表B中原来是有数据的。有没有办法解决这样的需求?应该怎么写代码?谢谢!
[此贴子已经被作者于2021/5/17 3:36:32编辑过]

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2021/5/17 14:55:00 [显示全部帖子]

这个例子是针对同一个数据库,我要实现两个不同数据库之间的数据填充

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2021/5/18 18:30:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:screenshot_20210518_123055_cn.wps.moffice_eng.png
图片点击可在新窗口打开查看
发代码提示错误,只能以图片方式发出来

[此贴子已经被作者于2021/5/18 18:32:47编辑过]

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2021/5/18 20:54:00 [显示全部帖子]

Datatable 没有getcheckedrows 属性
要怎么变通才行?

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2021/5/18 21:13:00 [显示全部帖子]

我用的是table ,这句For Each dr As Row In Tables("销售查询_Table1").GetCheckedRows(),提示错误不存在名称为“销售查询_Table1”的Datatable。这句要怎么改?



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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2021/5/18 21:19:00 [显示全部帖子]

Dim cmd1 As New SQLCommand
Dim cmd2 As New SQLCommand
Dim dt1 As DataTable
Dim dt2 As DataTable
cmd1.C
Connections.Add("Invoice","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\数据库2.mdb;Persist Security Info=False")
cmd2.C
cmd1.CommandText = "SELECT * F rom {销售订单}"
dt1 = cmd1.ExecuteReader(True)
dt2 = cmd2.ExecuteReader(True)
For Each dr As Row In Tables("销售查询_Table1").GetCheckedRows()
    If dt1.Find("订单号 = '" & dr("订单号") & "'") Is Nothing Then
        Dim nr As DataRow = dt1.AddNew()
        For Each dc As DataCol In DataTables("销售查询_Table1").DataCols
            nr(dc.name) = dr(dc.name)
        Next
        
        For Each dr3 As DataRow In dr.DataRow.GetChildRows("销售明细表")
            Dim nr2 As DataRow = dt2.AddNew()
           For Each dc2 As DataCol In DataTables("销售明细表").DataCols
                nr2(dc2.name) = dr3(dc2.name)
            Next
        Next
    End If
Next
dt1.Save
dt2.Save

或者有没有更简单快速的代码?麻烦蓝老师帮忙修改一下,谢谢

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2021/5/19 5:25:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:屏幕截图 2021-05-18 232050.png
图片点击可在新窗口打开查看

参照以上代码,执行后报错,列“销售单价”不属于“销售明细表”,但实际上是属于,并且数据库1和数据库2的销售订单和销售明细表结构和列名一模一样,问题出在哪里?
[此贴子已经被作者于2021/5/19 5:32:47编辑过]

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2021/5/20 21:28:00 [显示全部帖子]

数据库显示真是不一样,显示两个,一个是销售明细表(这个表反而列名不完整),一个是销售明细表2(列名完整),但foxtable 中显示的是销售明细表,加载数据库时反而是销售明细表2。
为什么会出现这样?
[此贴子已经被作者于2021/5/20 21:30:02编辑过]

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2021/5/20 22:07:00 [显示全部帖子]

有可能,好的,谢谢

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


加好友 发短信
等级:童狐 帖子:228 积分:2057 威望:0 精华:0 注册:2017/8/18 17:51:00
  发帖心情 Post By:2021/5/23 20:05:00 [显示全部帖子]

以下是引用有点蓝在2021/5/18 21:26:00的发言:
If Connections.Contains("Invoice")=False
    Connections.Add("Invoice","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\数据库2.mdb;Persist Security Info=False")
End If

Dim
 cmd As New SQLCommand

cmd.ConnectionName = 
"
Invoice"
cmd.CommandText = 
"SELECT * Fr om {
销售订单} "
Dim dt1 As DataTable = cmd.ExecuteReader(true)
cmd.CommandText = "SELECT * Fr om {销售明细表} where 1=2" 
Dim dt2 As DataTable = cmd.ExecuteReader(true)

For Each dr As Row In Tables("销售查询_Table1").GetCheckedRows()
    If dt1.Find("订单号 = '" & dr("订单号") & "'") Is Nothing Then
        Dim nr As DataRow = dt1.AddNew()
        For Each dc As Col In Tables("销售查询_Table1").Cols
            nr(dc.name) = dr(dc.name)
        Next
        
        For Each dr3 As DataRow In dr.DataRow.GetChildRows("销售明细表")
            Dim nr2 As DataRow = dt2.AddNew()
           For Each dc2 As DataCol In DataTables("销售明细表").DataCols
                nr2(dc2.name) = dr3(dc2.name)
            Next
        Next
    End If
Next
dt1.Save
dt2.Save

在同一台电脑上分别打开链接数据库1和数据库2的项目,在链接数据库1的项目窗口执行上面的代码后,链接数据库2的项目软件就会死机了(无响应),只能结束任务重新打项目,重新打开后可以看到合并过来的数据。是什么问题引起的?


此主题相关图片如下:屏幕截图 2021-05-23 134937.png
按此在新窗口浏览图片

[此贴子已经被作者于2021/5/23 22:06:37编辑过]

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