以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  用SQGL2008用ADO新增保存自动复制二表数据,太怪  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=196156)

--  作者:lin98
--  发布时间:2025/4/3 11:02:00
--  用SQGL2008用ADO新增保存自动复制二表数据,太怪

这个一保存,能生成相同主表和明细表的记录,相当更复制一条记录,狐表太神?让我写代码,可能要费力,可狐表做到?不知道什么原因?


--  作者:lin98
--  发布时间:2025/4/3 11:03:00
--  
\'保存主表
Dim dt As DataTable = e.Form.Controls("Table1").Table.DataTable
Dim dtb As System.Data.DataTable = dt.basetable.Copy \'
dtb.Columns.Remove("_Locked") \'
dtb.Columns.Remove("System_Sort_Temporary")
dtb.Columns.Remove("System_Filter_Temporary")
dtb.Columns.Remove("System_Filter_Unique")
Dim res = db.UpFFdateDataTable(dtb, "GE")\'保存
dt.AcceptChanges()
\'
Dim dt2 As DataTable = e.Form.Controls("Table2").Table.DataTable
Dim dtb2 As System.Data.DataTable = dt2.basetable.Copy \'
dtb2.Columns.Remove("_Locked") \'
dtb2.Columns.Remove("System_Sort_Temporary")
dtb2.Columns.Remove("System_Filter_Temporary")
dtb2.Columns.Remove("System_Filter_Unique")
Dim res2 = db.UpFFFdateDataTable(dtb2, "FF")\'保
dt2.AcceptChanges()


\'保存成功后-提示
MessageBox.Show("保存成功!")
执行这个代码,太神

--  作者:lin98
--  发布时间:2025/4/3 11:06:00
--  
买一送一图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:重复.jpg
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2025/4/3 11:09:00
--  
如果使用的自增主键,不要使用AcceptChanges这种用法,而是每次保存后都需要重新加载一次数据
--  作者:lin98
--  发布时间:2025/4/3 11:41:00
--  
问题一:把下面二行删除后,保存,还是一样复制一条,查看SQGL2008后台,就一条记录,但狐表上显示是2条重复数据,不为什么?
dt2.AcceptChanges()
dt.AcceptChanges()


问题二:从引用窗口导入登记窗口,导入成功,登记窗口无显示,需重新打开窗口才能看见,这个为什么?如图
Dim Cols3() As String = {"编号", "名称"}\'
Dim Cols4() As String = {"编号", "名称"}\'

Dim dh As String = Tables("窗口_Table1").Current("编号") \'
For Each dr3 As DataRow In DataTables("引用窗口_Table1").Select("[选中] = 1 ")\'
    If DataTables("登记窗口_Table2").Find("单号 = \'" & dr3("单号") & "\'And 编号 = \'" & dh & "\'") Is Nothing Then \'禁
        Dim dr4 As Row = Tables("登记窗口_Table2").AddNew() \'

        For r As Integer = 0 To Cols3.Length - 1
            dr4(Cols4(r)) = dr3(Cols3(r)) 
        Next
    Else
        MessageBox.Show("已经存在相同行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
    End If 
Next


图片点击可在新窗口打开查看此主题相关图片如下:引用无显.jpg
图片点击可在新窗口打开查看


--  作者:lin98
--  发布时间:2025/4/3 11:53:00
--  
1.引入窗口导入登记窗口的方法,就有禁止重复,但上面执行失效?
2.编号也用网络编号,通过服务端传入,也是在避免重复,但上面执行失效?

从上面问题来看,编号也用网络编号,通过服务端传入,对狐表也是无效,这个可能以狐表是单机,不是并发,多线程,当然高手可用多线程写,但对普通人来说是很难

--  作者:有点蓝
--  发布时间:2025/4/3 12:07:00
--  
1、保存前看看有几行数据

Dim dt As DataTable = e.Form.Controls("Table1").Table.DataTable
msgbox(dt.datarows.count)

2、"登记窗口_Table2"是不是做了筛选?导入的数据不符合筛选条件当然是看不到的

--  作者:lin98
--  发布时间:2025/4/3 13:30:00
--  
上面问题,很大可能是狐表错乱,

之前用MYSQGL5.7开发没有上面问题,由今天SQGL2008开发出错问题,就再测试MYSQGL5.7开发也发生上面问题。

为什么会怀疑狐表问题,因SQGL2008开发在没修改代码之前有备份一个,没发生上面问题,发生上面问题,用之前备份那一个,测试是正常,尝试修改发生上面问题的代码,结果发生上面问题,再把代码改回来,却回不来,一直是上面发生问题


还有修改审核窗口的上面加载代码,怎么会影响登记窗口上的代码运行,这二个窗口的代码是不一样,

--  作者:有点蓝
--  发布时间:2025/4/3 13:33:00
--  
请上传实例说明
--  作者:lin98
--  发布时间:2025/4/3 14:29:00
--  
还有一个SQLG带参数的问题,没有带数还可以