Foxtable(狐表)用户栏目专家坐堂 → 如何保存控件中修改的数据


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

主题:如何保存控件中修改的数据

美女呀,离线,留言给我吧!
采菊东篱下
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
如何保存控件中修改的数据  发帖心情 Post By:2022/6/30 10:36:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

    收费标准表我设为不允许直接修改,数据通过收费定价窗口录入,如果我想修改已录入数据,如何在原有数据基础上保存而不是新添一行录入。
[此贴子已经被作者于2022/6/30 10:44:40编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/30 10:58:00 [显示全部帖子]

查询就是定位到查找的行,没有录入,保存按钮才是录入,没有共同,完全分开的,只是在按钮上录入数据,添加、删除还可以,一旦想修改就不行了,只能删除原来的数据,重新录入,能不能直接修改?

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/30 11:15:00 [显示全部帖子]

双条件查找、录入的,日期是必需条件,查找,录入是分开按钮,完全不影响各自的查找、录入,我用数据测试过这两个按钮都没问题,现在的问题是如何避免修改数据,原来的数据仍在,又新添一行。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/30 11:19:00 [显示全部帖子]

控件上的日期是手动选择的,表上的日期是保存控件上的数据。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/30 11:45:00 [显示全部帖子]

不明白。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/30 13:49:00 [显示全部帖子]

保存按钮第一段代码改为这样报错:
Dim rq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim d As String = rq.Value
If d = "" Then
    messagebox.show("请选择实施日期")
    Return
End If 
If d IsNot Nothing And e.Form.Controls("TextBox1").Value IsNot Nothing Then
    Dim dr As DataRow = DataTables("收费标准").Find("[实施日期] = #" & CDate(d) & "#")
    If dr IsNot Nothing And dr("月租收费") = CDbl(e.Form.Controls("TextBox1").Value) Then
        messagebox.show("数据已存在,请勿重复操作。")
        Return
    ElseIf dr IsNot Nothing And dr("月租收费") <> CDbl(e.Form.Controls("TextBox1").Value) Then 
        dr("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        dr.Save()
    ElseIf dr Is Nothing Then
        Dim da As DataRow = DataTables("收费标准").AddNew
        da("实施日期") = CDate(d)
        da("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        da.Save()
    End If
End If


.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2022.5.29.2
错误所在事件:窗口,收费定价,Button1,Click
详细错误信息:
Object reference not set to an instance of an object.

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/30 17:08:00 [显示全部帖子]

还是这样报错
Dim rq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim d As String = rq.Value
If d = "" Then
    messagebox.show("请选择实施日期")
    Return
End If 
If d IsNot Nothing AndAlso e.Form.Controls("TextBox1").Value IsNot Nothing Then
    Dim dr As DataRow = DataTables("收费标准").Find("[实施日期] = #" & CDate(d) & "#")
    If dr IsNot Nothing AndAlso dr("月租收费") = CDbl(e.Form.Controls("TextBox1").Value) Then '如果存在此行,且月租收费等于控件上的月租收费
        messagebox.show("数据已存在,请勿重复操作。")
        Return
    ElseIf dr IsNot Nothing AndAlso dr("月租收费") <> CDbl(e.Form.Controls("TextBox1").Value) Then '如果存在此行,但月租收费不等于控件上的月租收费
        dr("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        dr.Save()
    ElseIf dr Is Nothing AndAlso dr.IsNull("实施日期") Then '如果不存在此行,且表上的日期列存在空行
        dr("实施日期") = CDate(d)
        dr("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        dr.Save()
    ElseIf dr Is Nothing AndAlso dr.IsNull("实施日期") = False Then '如果不存在此行,且表上的日期列不存在空行
        Dim da As DataRow = DataTables("收费标准").AddNew
        da("实施日期") = CDate(d)
        da("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        da.Save()
    End If
End If

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/30 17:22:00 [显示全部帖子]

表上存在不等于控件上的日期数据,但存在空行,保存的数据自动填充到最后一行日期不为空的下一行。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/30 17:36:00 [显示全部帖子]

.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2022.5.29.2
错误所在事件:窗口,收费定价,Button1,Click
详细错误信息:
Object reference not set to an instance of an object.

改为这样同样报错:
Dim rq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim d As String = rq.Value
If d = "" Then
    messagebox.show("请选择实施日期")
    Return
End If 
If d IsNot Nothing AndAlso e.Form.Controls("TextBox1").Value IsNot Nothing Then
    Dim dr As DataRow = DataTables("收费标准").Find("[实施日期] = #" & CDate(d) & "#")
    If dr IsNot Nothing AndAlso dr("月租收费") = CDbl(e.Form.Controls("TextBox1").Value) Then '如果存在此行,且月租收费等于控件上的月租收费
        messagebox.show("数据已存在,请勿重复操作。")
        Return
    ElseIf dr IsNot Nothing AndAlso dr("月租收费") <> CDbl(e.Form.Controls("TextBox1").Value) Then '如果存在此行,但月租收费不等于控件上的月租收费
        dr("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        dr.Save()
    ElseIf dr Is Nothing AndAlso dr.IsNull("实施日期") Then '如果不存在此行,且表上的日期列存在空行
        Dim dt As DataRow = DataTables("收费标准").Find("[实施日期] Is Null", "", 0)
        dt("实施日期") = CDate(d)
        dt("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        dt.Save()
    ElseIf dr Is Nothing AndAlso DataTables("收费标准").Compute("Count([实施日期])", "[实施日期] Is Null") = 0 Then '如果不存在此行,且表上的日期列不存在空行
        Dim da As DataRow = DataTables("收费标准").AddNew
        da("实施日期") = CDate(d)
        da("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        da.Save()
    End If
End If

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10374 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2022/6/30 17:40:00 [显示全部帖子]

改为这样不报错,但新添一行了,没有在空行处录入数据:
Dim rq As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
Dim d As String = rq.Value
If d = "" Then
    messagebox.show("请选择实施日期")
    Return
End If 
If d IsNot Nothing AndAlso e.Form.Controls("TextBox1").Value IsNot Nothing Then
    Dim dr As DataRow = DataTables("收费标准").Find("[实施日期] = #" & CDate(d) & "#")
    If dr IsNot Nothing AndAlso dr("月租收费") = CDbl(e.Form.Controls("TextBox1").Value) Then '如果存在此行,且月租收费等于控件上的月租收费
        messagebox.show("数据已存在,请勿重复操作。")
        Return
    ElseIf dr IsNot Nothing AndAlso dr("月租收费") <> CDbl(e.Form.Controls("TextBox1").Value) Then '如果存在此行,但月租收费不等于控件上的月租收费
        dr("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        dr.Save()
    ElseIf dr Is Nothing AndAlso DataTables("收费标准").Compute("Count([实施日期])", "[实施日期] Is Null") > 0 Then '如果不存在此行,且表上的日期列存在空行
        Dim dt As DataRow = DataTables("收费标准").Find("[实施日期] Is Null", "", 0)
        dt("实施日期") = CDate(d)
        dt("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        dt.Save()
    ElseIf dr Is Nothing AndAlso DataTables("收费标准").Compute("Count([实施日期])", "[实施日期] Is Null") = 0 Then '如果不存在此行,且表上的日期列不存在空行
        Dim da As DataRow = DataTables("收费标准").AddNew
        da("实施日期") = CDate(d)
        da("月租收费") = CDbl(e.Form.Controls("TextBox1").Value)
        da.Save()
    End If
End If

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