Foxtable(狐表)用户栏目专家坐堂 → MYSQL关联出错


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

主题:MYSQL关联出错

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


加好友 发短信
等级:五尾狐 帖子:1159 积分:7666 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/4/19 11:28:00 [只看该作者]

问题一:我前面操作都是按模拟关联做,下面是帮助模拟关联,这个没有做,您说不用这步骤,也可实现,但前面都做就这个步骤没做,再选择主表数据,明细没有显示相应数据,再用ACCESS源时,也发现没做这个步骤时,选择主表数据,明细没有显示相应数据,补上就可以,但MYSQL无法做下面


1、在产品表和订单表之间建立关联,关联名为"po",注意关联表生成模式要选择为“无”:


问题二,主表能新增,明细表不新增,不为什么?
主表能新增,运行正常新增,   Tables("MYSQL-01_Table1").AddNew()

明细表不能新增,   Tables("MYSQL-01_Table2").AddNew()



 回到顶部
帅哥,在线噢!
有点蓝
  52楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

1、模拟关联完全不需要做上面图片的关联,明细没有数据说明没有在主表事件做处理


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


加好友 发短信
等级:五尾狐 帖子:1159 积分:7666 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/4/19 12:51:00 [只看该作者]

Select Case e.Table.Name
    Case "MYSQL-01_Table1"
        If Forms("MYSQL-01").Opened() Then'一定要判断用于模拟关联表的窗口是否已经打开
            If e.Table.cols.contains("sellID") AndAlso Tables("MYSQL-01_Table2").cols.contains("sellID") Then
                Dim t As Table = Tables("MYSQL-01_Table2") 
                With Tables("MYSQL-01_Table1")
                    If .Current Is Nothing Then
                        t.Filter = "False"
                        MsgBox(t.Filter)
                    Else 
                        t.Filter = "sellID = '" & .Current("sellID") & "'"
                        MsgBox(t.Filter)
                    End If
                End With
                
            End If 
        End If
        '        MsgBox(t.Filter)
'    Case "MYSQL-01_Table2"
'        '        '针对MYSQL-01_Table2的代码
'        Tables("MYSQL-01_Table2").AddNew()
        
        '    Case "表C"
        '        '针对表C的代码
End Select

上面的代码,执行有以下问题

问题一:没报错,但不能实现选主表的数据,明细也显示关联的数据,只显示主表和明细的第一条关联,其他不能关联显示
问题二:主表可新增,不明细不能新增,启编辑Tables("MYSQL-01_Table2").AllowAddNew = True  ,明细还是不能新增,只去掉上面代码,不用启编辑Tables("MYSQL-01_Table2").AllowAddNew = True  ,主表和明细均都可以新增。

 回到顶部
帅哥,在线噢!
有点蓝
  54楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:108025 积分:549530 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/19 13:42:00 [只看该作者]

1、调试看看id是否一致,MsgBox(t.Filter) 一致也不能显示肯定数据有问题
2、t.Filter = "False"改为t.Filter = "sellID is null"

新增使用datatable.addnew,不要使用table.addnew,新增后必需给主键列赋值

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


加好友 发短信
等级:五尾狐 帖子:1159 积分:7666 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/4/19 15:52:00 [只看该作者]

2、t.Filter = "False"改为t.Filter = "sellID is null"   效果一样,没有报错,就是只有主表和明细第一行关联数据

2  新增使用datatable.addnew,不要使用table.addnew,新增后必需给主键列赋值
DataTables("MYSQL-01_Table2").AddNew()    执行此代码,一样无法对明细进行新增

 回到顶部
帅哥,在线噢!
有点蓝
  56楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:108025 积分:549530 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/19 16:38:00 [只看该作者]

1、绑定窗口表数据的时候改为使用copy
Dim dt As system.data.DataTable = db.ExecuteDataSet(Sql).Tables(0)
dt.TableName = "表A"
Dim t As Table = e.Form.Controls("Table1").Table
t.datasource = dt.Copy

2、新增的时候必须给筛选的列赋值
Dim dr As DataRow = DataTables("MYSQL-01_Table2").AddNew
dr("sellID") = Tables("MYSQL-01_Table1").Current("sellID")

另外,可以不用全局表事件,把窗口表设置为sqltable,然后在窗口表事件写代码即可

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


加好友 发短信
等级:五尾狐 帖子:1159 积分:7666 威望:0 精华:0 注册:2020/11/4 22:15:00
  发帖心情 Post By:2023/4/19 18:30:00 [只看该作者]

问题一:把窗口表设置为sqltable,属性设为可编辑,还是不能编辑,使用Tables("MYSQL001_Table1").AllowAddNew = True  也不能编辑?好象sqltable是不能编辑,编辑的数据不保存
问题二:下面代码放在哪里?我把它放在按键事件,执行后报错,找不到表
2、新增的时候必须给筛选的列赋值
Dim dr As DataRow = DataTables("MYSQL-01_Table2").AddNew
dr("sellID") = Tables("MYSQL-01_Table1").Current("sellID")

 回到顶部
帅哥,在线噢!
有点蓝
  58楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:108025 积分:549530 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/4/20 8:43:00 [只看该作者]

1、启用编辑功能:http://www.foxtable.com/webhelp/topics/1667.htm,请认真仔细看看,可编辑和可新增不是一码事

2、添加一个新增按钮

 回到顶部
总数 58 上一页 1 2 3 4 5 6