Foxtable(狐表)用户栏目专家坐堂 → [求助]多人操作---自动增加控件报错


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

主题:[求助]多人操作---自动增加控件报错

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/3/17 17:43:00 [只看该作者]

发送click代码
Dim str As String
Dim id As Integer
id = user.name.IndexOf("@")
str = user.name.SubString(0,id)
Dim lts As List(of DataRow) = DataTables("盖楼").SQLSelect("回复者 like '%" & str & "%'  And 备注 Is Not null And 提交 = 0 ")
For Each lt As DataRow In lts    
    lt("提交") = True
    e.Form.Controls("TextBox" & lt("_Identify")).ReadOnly = BooleanEnum.True
    e.Form.Controls("label2" & lt("_Identify")).text = Date.now
    msgbox("TextBox" & lt("_Identify"))
    msgbox("label2" & lt("_Identify"))    
    lt.save
    lt.Locked = True
Next
DataTables("盖楼").SQLUpdate(lts)

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/17 17:53:00 [只看该作者]

报错这样处理

 

Dim str As String
Dim id As Integer
id = user.name.IndexOf("@")
str = user.name.SubString(0,id)
Dim lts As List(of DataRow) = DataTables("盖楼").SQLSelect("回复者 like '%" & str & "%'  And 备注 Is Not null And 提交 = 0 ")
For Each lt As DataRow In lts
    lt("提交") = True
    If e.form.controls.contains("TextBox" & lt("_Identify")) Then
        e.Form.Controls("TextBox" & lt("_Identify")).ReadOnly = BooleanEnum.True
    End If
    If e.form.controls.contains("label2" & lt("_Identify")) Then
        e.Form.Controls("label2" & lt("_Identify")).text = Date.now
    End If

    lt.Locked = True
    lt.save
Next
DataTables("盖楼").SQLUpdate(lts)

 

另外,你应该单独做一个刷新按钮,也就是删除所有新增的控件,根据表内容重新生成最新的内容。

[此贴子已经被作者于2016/3/17 17:53:25编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/3/17 18:03:00 [只看该作者]

我把刷新写入到了盖楼click。
Dim drs As List(of DataRow) = DataTables("盖楼").SQLSelect("BUG_ID = '" & Vars("BUGID") & "'")
Vars("iii") = 0
Vars("yyy") = 20
For Each dr As DataRow In drs
    If dr.Isnull("BUG_ID") = False And dr.Isnull("备注") = False And dr.Isnull("回复者") = False And dr.Isnull("回复时间") = False Then
        Dim txt1 As WinForm.TextBox
        Dim Label11,label22 As WinForm.Label
        txt1 = e.Form.CreateControl("TextBox" & dr("_Identify"), ControlTypeEnum.TextBox)
        label11 = e.Form.CreateControl("label11" & dr("_Identify"), ControlTypeEnum.label)
        label22 = e.Form.CreateControl("label22" & dr("_Identify"), ControlTypeEnum.label)
        txt1.Left = 150
        txt1.Top = Vars("yyy")
        txt1.height = 50
        txt1.MultiLine = True
        txt1.ScrollBars = Windows.Forms.ScrollBars.Vertical
        txt1.SetBounds(150,Vars("yyy"),500,50)
        e.Form.AddControl(txt1)
        label11.Left = 50
        label11.Top = Vars("yyy")
        e.Form.AddControl(label11)
        Dim str1 As String
        Dim id1  As Integer
        id1 = user.name.IndexOf("@")
        str1 = user.name.SubString(0,id1)
        label11.Text = Vars("iii") & "楼" & str1
        label22.Left = 50
        label22.Top = Vars("yyy") + 20
        label22.Height =30
        e.Form.AddControl(label22)
        label22.Text = Date.now
        txt1.text = dr("备注")
        label11.Text = dr("回复者")
        label22.Text = dr("回复时间")
        If dr("提交") = True Then
            txt1.readonly = BooleanEnum.True
        Else
            txt1.readonly = BooleanEnum.False
        End If
        Vars("iii") += 1
        Vars("yyy") += txt1.height + 10
    End If
Next
Dim r As Row = Tables("盖楼").AddNew()
r("BUG_ID") = Vars("BUGID")
Dim txt As WinForm.TextBox
Dim Label1,label2 As WinForm.Label
txt = e.Form.CreateControl("TextBox" & r("_Identify"), ControlTypeEnum.TextBox)
label1 = e.Form.CreateControl("label1" & r("_Identify"), ControlTypeEnum.label)
label2 = e.Form.CreateControl("label2" & r("_Identify"), ControlTypeEnum.label)
txt.Left = 150
txt.Top = Vars("yyy")
txt.height = 50
txt.MultiLine = True
txt.ScrollBars = Windows.Forms.ScrollBars.Vertical
txt.SetBounds(150,Vars("yyy"),500,50)
e.Form.AddControl(txt)
label1.Left = 50
label1.Top = Vars("yyy")
e.Form.AddControl(label1)
Dim str As String
Dim id  As Integer
id = user.name.IndexOf("@")
str = user.name.SubString(0,id)
label1.Text = Vars("iii") & "楼" & str
r("回复者") = label1.Text
label2.Left = 50
label2.Top = Vars("yyy") + 15
label2.Height = 30
e.Form.AddControl(label2)
label2.Text = Date.now
r("回复时间") = label2.Text
txt.readonly = r("提交")
'Vars("iii") += 1
'Vars("yyy") += txt.height + 10
DataTables("盖楼").save

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/3/17 18:08:00 [只看该作者]

textchanged代码:
If e.Sender.Name Like "TextBox*" Then
    Dim fdr As DataRow = DataTables("盖楼").sqlFind("_Identify = '" & e.Sender.name.Replace("TextBox", "") & "'")
    If fdr IsNot Nothing Then
        fdr("备注") = e.sender.Text
        fdr.Save
    End If
End If

发现label1,label2,textbox内容如果多人操作,会错乱。
脑袋都大了。

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/3/17 18:14:00 [只看该作者]

afterload代码:
e.Form.Text = vars("BUGID") & "---- 要养成看帖要回帖的好习惯"
Dim drs As List(of DataRow) = DataTables("盖楼").SQLSelect("BUG_ID = '" & Vars("BUGID") & "'")
Vars("iii") = 0
Vars("yyy") = 20
For Each dr As DataRow In drs
    If dr.Isnull("BUG_ID") = False And dr.Isnull("备注") = False And dr.Isnull("回复者") = False And dr.Isnull("回复时间") = False Then
        Dim txt As WinForm.TextBox
        Dim Label1,label2 As WinForm.Label
        txt = e.Form.CreateControl("TextBox" & dr("_Identify"), ControlTypeEnum.TextBox)
        label1 = e.Form.CreateControl("label1" & dr("_Identify"), ControlTypeEnum.label)
        label2 = e.Form.CreateControl("label2" & dr("_Identify"), ControlTypeEnum.label)
        txt.Left = 150
        txt.Top = Vars("yyy")
        txt.height = 50
        txt.MultiLine = True
        txt.ScrollBars = Windows.Forms.ScrollBars.Vertical
        txt.SetBounds(150,Vars("yyy"),500,50)
        e.Form.AddControl(txt)
        label1.Left = 50
        label1.Top = Vars("yyy")
        e.Form.AddControl(label1)
        Dim str As String
        Dim id  As Integer
        id = user.name.IndexOf("@")
        str = user.name.SubString(0,id)
        label1.Text = Vars("iii") & "楼" & str
        label2.Left = 50
        label2.Top = Vars("yyy") + 20
        label2.Height =30
        e.Form.AddControl(label2)
        label2.Text = Date.now
        txt.text = dr("备注")
        label1.Text = dr("回复者")
        label2.Text = dr("回复时间")
        If dr("提交") = True Then
            txt.readonly = BooleanEnum.True
        Else
            txt.readonly = BooleanEnum.False
        End If
        Vars("iii") += 1
        Vars("yyy") += txt.height + 10
    End If
Next

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/3/17 18:15:00 [只看该作者]

beforeclose代码
Dim str As String
Dim id As Integer
id = user.name.IndexOf("@")
str = user.name.SubString(0,id)
Dim lts As List(of DataRow) = DataTables("盖楼").SQLSelect("回复者 like '%" & str & "%'  And 提交 = 0 ")
If lts.Count > 0 Then
    If (MessageBox.show("你的帖子尚未发送,点击(是)自动发送帖子(只发送有内容的帖子),点击(否)自动删除未发送(包括无内容的)的帖子","关闭前请确认",MessageBoxButtons.YesNo,MessageBoxIcon.Information) = DialogResult.Yes) Then
        For Each lt As DataRow In lts
            If lt.Isnull("备注") = False Then
                lt("提交") = True
                e.Form.Controls("TextBox" & lt("_Identify")).ReadOnly = BooleanEnum.True
                e.Form.Controls("label2" & lt("_Identify")).text = Date.now
                lt.save
                lt.Locked = True
            Else
                e.Form.RemoveControl("TextBox" & lt("_Identify"))
                e.Form.RemoveControl("label1" & lt("_Identify"))
                e.Form.RemoveControl("label2" & lt("_Identify"))
                lt.Delete
            End If
        Next
    Else
        For Each lt As DataRow In lts
            If lt.Isnull("提交") = True Then
                e.Form.RemoveControl("TextBox" & lt("_Identify"))
                e.Form.RemoveControl("label1" & lt("_Identify"))
                e.Form.RemoveControl("label2" & lt("_Identify"))
                lt.Delete
            End If
        Next
    End If
End If

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/3/17 18:16:00 [只看该作者]

就是类似一个普通的论坛,发帖和回帖的业务。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/3/17 18:42:00 [只看该作者]

1、把窗口关闭,在把窗口打开是否正常?如果不能刷新,说明你之前写的代码就是错的。

 

  最简单的,不就是把窗口关闭,然后把重新打开窗口么?就是类似刷新网页的意思;

 

2、只有1正常了,才能拷贝代码到按钮里去,做一些微调即可。


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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/3/18 11:17:00 [只看该作者]

afterload代码:
e.Form.Text = vars("BUGID") & "---- 看帖不回帖下一句是什么?"
DataTables("盖楼").LoadFilter =""
DataTables("盖楼").load
Tables("盖楼").Sort = "回复时间"
Dim drs As List(of DataRow) = DataTables("盖楼").Select("BUG_ID = '" & Vars("BUGID") & "'","回复时间")
Vars("iii") = 0
Vars("yyy") = 20
If drs.Count > 0 Then
    For Each dr As DataRow In drs
        If dr("提交") = True Then
            Dim txt As WinForm.TextBox
            Dim Label1,label2 As WinForm.Label
            txt = e.Form.CreateControl("TextBox" & dr("_Identify"), ControlTypeEnum.TextBox)
            label1 = e.Form.CreateControl("label1" & dr("_Identify"), ControlTypeEnum.label)
            label2 = e.Form.CreateControl("label2" & dr("_Identify"), ControlTypeEnum.label)
            txt.Left = 150
            txt.Top = Vars("yyy")
            txt.height = 50
            txt.MultiLine = True
            txt.ScrollBars = Windows.Forms.ScrollBars.Vertical
            txt.SetBounds(150,Vars("yyy"),500,50)
            e.Form.AddControl(txt)
            label1.Left = 50
            label1.Top = Vars("yyy")
            e.Form.AddControl(label1)
            label2.Left = 50
            label2.Top = Vars("yyy") + 20
            label2.Height =30
            e.Form.AddControl(label2)
            txt.text = dr("备注")
            label1.Text = dr("回复者")
            label2.Text = dr("回复时间")
            If dr("提交") = True Then
                txt.readonly = BooleanEnum.True
            Else
                txt.readonly = BooleanEnum.False
            End If
            Vars("iii") += 1
            Vars("yyy") += txt.height + 10
        Else
            dr.Delete
        End If
    Next
End If
DataTables("盖楼").Save()

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


加好友 发短信
等级:五尾狐 帖子:1165 积分:8129 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/3/18 11:17:00 [只看该作者]

盖楼click代码:
Dim r As Row = Tables("盖楼").AddNew()
Tables("盖楼").Sort = "回复时间"
r("BUG_ID") = Vars("BUGID")
Dim txt As WinForm.TextBox
Dim Label1,label2 As WinForm.Label
txt = e.Form.CreateControl("TextBox" & r("_Identify"), ControlTypeEnum.TextBox)
label1 = e.Form.CreateControl("label1" & r("_Identify"), ControlTypeEnum.label)
label2 = e.Form.CreateControl("label2" & r("_Identify"), ControlTypeEnum.label)
txt.Left = 150
txt.Top = Vars("yyy")
txt.height = 50
txt.MultiLine = True
txt.ScrollBars = Windows.Forms.ScrollBars.Vertical
txt.SetBounds(150,Vars("yyy"),500,50)
e.Form.AddControl(txt)
label1.Left = 50
label1.Top = Vars("yyy")
e.Form.AddControl(label1)
Dim str As String
Dim id  As Integer
id = user.name.IndexOf("@")
str = user.name.SubString(0,id)
label1.Text = Vars("iii") & "楼" & str
r("回复者") = label1.Text
label2.Left = 50
label2.Top = Vars("yyy") + 15
label2.Height = 30
e.Form.AddControl(label2)
label2.Text = Date.now
r("回复时间") = label2.Text
Vars("iii") += 1
Vars("yyy") += txt.height + 10
DataTables("盖楼").save

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