Foxtable(狐表)用户栏目专家坐堂 → 老师,帮忙看看


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

主题:老师,帮忙看看

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


加好友 发短信
等级:五尾狐 帖子:1174 积分:8782 威望:0 精华:0 注册:2012/4/18 16:28:00
老师,帮忙看看  发帖心情 Post By:2015/6/29 12:20:00 [只看该作者]

以下代码是button(发送键)里面的,已经实现一对一内部通讯,一对多发送信息存在问题,不能收到。
主要设计思路是结合自定义登录系统来完成的,在外部数据源“User"中增加了一个数据表”内部通讯“,以下发送代码发送多人时,Access的”内部通讯“表呈现

图片点击可在新窗口打开查看此主题相关图片如下:未标题-1.jpg
图片点击可在新窗口打开查看
想实现:
发送者       接收者        发送内容
杨阳          柯迎           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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By: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编辑过]

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


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

 1、没有必要用insert into语法吧?直接把表引用到foxtable用addnew,然后保存就行;

 

 2、看2楼代码。


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


加好友 发短信
等级:五尾狐 帖子:1174 积分:8782 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By: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

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/6/29 14:49: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 i >= 1 Then
   e.Form.Controls("TextBox2").Value = ""
   e.Form.Controls("TextBox1").Value = s2  
End If


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


加好友 发短信
等级:五尾狐 帖子:1174 积分:8782 威望:0 精华:0 注册:2012/4/18 16:28:00
  发帖心情 Post By:2015/6/29 14:58:00 [只看该作者]

谢谢两位老师的指导,很有价值的收获,谢谢!谢谢!Foxtabl的功能和技巧真是强大,关键在于自己的学习和方法应用。

 回到顶部