以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 老师,帮忙看看 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=70794) |
-- 作者:douglas738888 -- 发布时间:2015/6/29 12:20:00 -- 老师,帮忙看看 以下代码是button(发送键)里面的,已经实现一对一内部通讯,一对多发送信息存在问题,不能收到。 主要设计思路是结合自定义登录系统来完成的,在外部数据源“User"中增加了一个数据表”内部通讯“,以下发送代码发送多人时,Access的”内部通讯“表呈现 想实现: 发送者 接收者 发送内容 杨阳 柯迎 ttt 杨阳 老张 ttt 杨阳 老刘 ttt 在大红袍老师的帮助下,已实现非自定义登录系统的以上功能,但利用Access外部数据源进行自定义登录系统与内部通讯结合起来的设计, 想请教老师,在建立了Dim cmd As New SQLCommand cmd.C后, cmd.CommandText = ????的拆解条件应该如何写, Dim yhm As String = e.Form.Controls("用户名").Text \'获得接收用户名 Dim nr As String = e.Form.Controls("TextBox2").Text \'获得发送内容 If yhm = "" AndAlso nr = "" Then Return End If For Each s As String In yhm.Split(",") Dim cmd As New SQLCommand cmd.C cmd.CommandText = "Insert Into {内部通讯} ([发送者],[接收者],[发送时间],[发送内容]) Values (\'" cmd.CommandText = cmd.CommandText & _UserName & "\',\'" & yhm & "\',#" & Date.Now & "#,\'" & nr & "\')" If cmd.ExecuteNonQuery = 1 Then \'返回1表示增加成功 e.Form.Controls("TextBox2").Value = "" If e.Form.Controls("TextBox1").Value = Nothing Then e.Form.Controls("TextBox1").Value = _UserName & " " & Date.Now & vbcrlf & " " & nr Else e.Form.Controls("TextBox1").Value = e.Form.Controls("TextBox1").Value & vbcrlf & vbcrlf & _UserName & " " & Date.Now & vbcrlf & " " & nr End If End If Next
|
-- 作者:don -- 发布时间:2015/6/29 13:28:00 -- Dim yhms As String = e.Form.Controls("用户名").Text \'获得接收用户名 Dim nr As String = e.Form.Controls("TextBox2").Text \'获得发送内容 If yhm = "" Orelse nr = "" Then Return End If dim i as integer Dim SQL,s2 As String Dim cmd As New SQLCommand cmd.Connection Name = "XXX" For Each js As String In yhms.Split(",") if i > 0 Then s2 = vbcrlf & vbcrlf s2+ = _UserName & " " & Date.Now & vbcrlf & " " & nr SQL = "Insert Into {内部通讯} ([发送者],[接收者],[发送时间],[发送内容]) Values (\'" SQL = SQL & _UserName & "\',\'" & js & "\',#" & Date.Now & "#,\'" & nr & "\')" cmd.CommandText = SQL cmd.ExecuteNonQuery \'返回1表示增加成功 i = i+1 Next if cmd.ExecuteNonQuery = 1 then e.Form.Controls("TextBox2").Value = "" e.Form.Controls("TextBox1").Value = s2 End If
[此贴子已经被作者于2015/6/29 14:00:04编辑过]
|
-- 作者:大红袍 -- 发布时间:2015/6/29 14:10:00 -- 1、没有必要用insert into语法吧?直接把表引用到foxtable用addnew,然后保存就行;
2、看2楼代码。 |
-- 作者:douglas738888 -- 发布时间:2015/6/29 14:45:00 -- 2楼代码,在执行时出现,勾选一个接收者后会自动发两次,勾选多个接收者后,最后一个接收者会自动发两次, 是否是我在Afterload事件里设置的代码有误? Dim cmd,cmd1 As New SQLC ommand Dim dt As DataTable Dim lst As WinForm.CheckedComboBox = e.F orm.Controls("CheckedComboBox1") cmd.C cmd.C ommandText = "SELECT DISTINCT Name F rom {Users}" dt = cmd.ExecuteReader() For Each dr As DataRow In dt.Datarows cmd1.C cmd1.CommandText = "Select * F rom {内部通讯} Where [发送者] = \'" & dr("Name") & "\' And [接收者] = \'" & _UserName & "\' And [接收时间] Is NULL" Dim dt1 As DataTable dt1 = cmd1.ExecuteReader If dr("Name") <> _UserName Then \' 不加载登录用户列表 lst.Items.Add(dr("Name") & "(" & dt1.DataRows.Count & ")") End If Next If Lst.Items.Count > 0 Then lst.SelectedIndex = 0 End If e.F orm.Text = "内部通讯 - " & _UserName e.F orm.Controls("DateTimePicker1").Value = Date.Today.AddDays(-7) e.F orm.Controls("DateTimePicker2").Value =Date.Today.AddDays(1) For Each fnt As System.Drawing.FontFamily In System.Drawing.FontFamily.Families output.show(fnt.Name) Next |
-- 作者:大红袍 -- 发布时间:2015/6/29 14:49:00 -- Dim yhms As String = e.Form.Controls("用户名").Text \'获得接收用户名
|
-- 作者:douglas738888 -- 发布时间:2015/6/29 14:58:00 -- 谢谢两位老师的指导,很有价值的收获,谢谢!谢谢!Foxtabl的功能和技巧真是强大,关键在于自己的学习和方法应用。 |