以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]为什么表格里的对应行不能被赋值?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=157197)

--  作者:jjjeyes
--  发布时间:2020/10/7 15:10:00
--  [求助]为什么表格里的对应行不能被赋值?
我有个课表,列为“周一34节”,“周二34节”……,每行为教师姓名,
还有个“课程主表3”,列名为“课程学期”,“课程时间”,“课程教师”,“课程名称”,每行为单个课程。
当课表的列的某一行的值发生变化的时候,对应的“课程主表3”的“课程名称”列发生改变,并赋值。
但是用下面的代码在表属性的“DataColChanged”里写代码:
Dim cb1 As WinForm.ComboBox = Forms("课程编排").Controls("ComboBox1")
Dim dr1 As DataRow
dr1 = DataTables("课程主表3").SQLFind("[课程教师] = \'" & e.DataRow("姓名") & "\'And [课程时间] = \'" & e.DataCol.name & "\'And [课程学期] = \'" & cb1.Value & "\'")
Select Case e.DataCol.name
    Case "周一34节"
        If dr1 IsNot Nothing Then
            dr1("课程名称") = e.DataRow("周一34节")
            \'MessageBox.show(dr1("课程教师"))
            \'MessageBox.show(dr1("课程时间"))
            \'MessageBox.show(dr1("课程编号"))
            \'MessageBox.show(e.DataCol.name)
            \'MessageBox.show(e.NewValue)
            \'MessageBox.show(e.DataRow("周一34节"))
            DataTables("课表").Save()
            DataTables("课程主表3").Save()
        End If
End Select

发现对应的 课程主表3对应的行的“课程名称”不能被赋值。MessageBox的值都能显示。
请问是什么原因。
[此贴子已经被作者于2020/10/7 15:15:56编辑过]

--  作者:有点蓝
--  发布时间:2020/10/7 15:48:00
--  
SQLFind查询的结果是一个独立的行,和DataTables("课程主表3")没有什么关系,需要单独保存
Select Case e.DataCol.name
    Case "周一34节"
        If dr1 IsNot Nothing Then
            dr1("课程名称") = e.DataRow("周一34节")
dr1.save

--  作者:jjjeyes
--  发布时间:2020/10/7 16:21:00
--  
关键是:dr1("课程名称") = e.DataRow("周一34节")
这一行没有执行,e.DataRow("周一34节")的值没有赋给dr1("课程名称")

--  作者:有点蓝
--  发布时间:2020/10/7 16:24:00
--  
肯定已经执行了,只是没有保存,所以执行了也没有用
--  作者:jjjeyes
--  发布时间:2020/10/7 16:29:00
--  
但是“课程主表3”对应的行中“课程名称”的值没有变化啊,而且我再次将“课程主表3”的内容回写到“课表”的时候,“课表”的中原来修改的地方也还原到了向前的内容
[此贴子已经被作者于2020/10/7 16:38:30编辑过]

--  作者:有点蓝
--  发布时间:2020/10/7 16:47:00
--  
确定查询到符合条件的数据?http://www.foxtable.com/webhelp/topics/1485.htm
下面提示能不能都弹出?
msgbox(1)
Select Case e.DataCol.name
    Case "周一34节"
        If dr1 IsNot Nothing Then
msgbox(2)
            dr1("课程名称") = e.DataRow("周一34节")
dr1.save
msgbox(3)

--  作者:jjjeyes
--  发布时间:2020/10/7 16:59:00
--  
我知道调试方法,也用了你刚才的步骤做了调试,“课表”中的列发生变化的时候,123步都能跳出对话框,但是就是不能给“课程主表3”赋值
--  作者:有点蓝
--  发布时间:2020/10/7 17:12:00
--  
重新加载表数据,因为是直接改的后台数据,界面数据没有变化的
--  作者:jjjeyes
--  发布时间:2020/10/7 17:30:00
--  
确实是这样,我将sqlfind改成了find,“课程主表3”就有了变化,看来只有重修加载,或者直接sql语句。