Foxtable(狐表)用户栏目专家坐堂 → 全局代码与事件间--值传递的精简,-已用数组解决


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

主题:全局代码与事件间--值传递的精简,-已用数组解决

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


加好友 发短信
等级:四尾狐 帖子:941 积分:7786 威望:0 精华:0 注册:2013/7/7 13:37:00
全局代码与事件间--值传递的精简,-已用数组解决  发帖心情 Post By:2013/12/30 14:17:00 [只看该作者]

原思路:
全局代码:

Public  ComboxItemStr As String = ""        '定义字符串,等待事件中传递参数
‘其实我这里是想把一组数据库行 赋值给combox,现在用的字符串传递,方法很笨

Public  Class FormData
Inherits System.Windows.Forms.Form

Private Sub FormData_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.ComboBoxData = New System.Windows.Forms.ComboBox

Me.ComboBoxData.FormattingEnabled = True
Me.ComboBoxData.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Dim Values() As String
Values = ComboxItemStr.split(",")  ‘这里解析字符串,并用items.add赋值,能不能这里直接指定数据源,指定显示值 ???????
For Index As Integer = 0 To Values.Length - 1
Me.ComboBoxData.Items.Add(Values(Index))
Next
Me.ComboBoxData.Location = New System.Drawing.Point(85, 27)
Me.ComboBoxData.Name = "ComboBoxData"
Me.ComboBoxData.Size = New System.Drawing.Size(156, 20)
Me.ComboBoxData.TabIndex = 0

BeforeOpenProject事件代码
Dim con As New System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\之数据源切换\DBconfig.mdb;Persist Security Info=False")
Dim cmd As New System.Data.OleDb.OleDbCommand("Select *  FROM 设置", con)
Dim DataReader As System.Data.OleDb.OleDbDataReader '定义DataReader对象
con.Open()
DataReader = cmd.ExecuteReader '执行SQL语句,返回给DataReader对象
While DataReader.Read
    ComboxItemStr = ComboxItemStr & "," & DataReader("用户可选数据源")
End While
con.Close()
ComboxItemStr = ComboxItemStr.trim(",")   ' 这是是用来赋值的
'先读取外部数据库配置文件

Dim frm As New FormData
frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
frm.TopMost = True  '或  e.HideSplashForm = True
frm.ShowDialog() '模式打开
'请问在以上代码或全局代码中能不能给frm里的comobox用数据源赋值,当然,用数组也行?

If  ButtonNo Then
    e.Cancel = True
End If

If ButtonYes Then
    '这里返回的是用户选择的项目,这里是字符串,能不能返回数据行.?
    msgbox(DataStr)
End If





现在的想法

能不能在 事件 里直接 将 数据行 指定给ComboBoxData,并指定显示列
,当用户选择不同项目时,以方便直接调用 选定记录行的列数据



[此贴子已经被作者于2013-12-31 9:22:10编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/30 14:20:00 [只看该作者]

呵呵,只能利用SQL查询出来结果,然后拼接字符串.

返回数据行也是不可行的.

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


加好友 发短信
等级:四尾狐 帖子:941 积分:7786 威望:0 精华:0 注册:2013/7/7 13:37:00
  发帖心情 Post By:2013/12/30 14:29:00 [只看该作者]

图片点击可在新窗口打开查看,不会吧

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/30 14:31:00 [只看该作者]

因为这时还没加载表呢图片点击可在新窗口打开查看

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


加好友 发短信
等级:四尾狐 帖子:941 积分:7786 威望:0 精华:0 注册:2013/7/7 13:37:00
  发帖心情 Post By:2013/12/30 14:36:00 [只看该作者]

DataReader = cmd.ExecuteReader '执行SQL语句,返回给DataReader对象
这里不是加载了吗,
后面应该是用.net语法 赋值可以的

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/12/30 14:49:00 [只看该作者]

这样做效率还没有直接拼接字符串的高,你可以查出来一个DataTable变量然后


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


加好友 发短信
等级:四尾狐 帖子:941 积分:7786 威望:0 精华:0 注册:2013/7/7 13:37:00
  发帖心情 Post By:2013/12/30 15:02:00 [只看该作者]

图片点击可在新窗口打开查看

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


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2013/12/30 17:00:00 [只看该作者]

楼主精神可嘉,俺凑个热闹,提个建议:

 

从狐表的多项目去考虑一下,如

 

1、建一个纯粹的本地项目,没有任何外部数据源。

2、建一个默认的用户,空密码,谁来都能登录。

3、在这个项目中去做你想做的,项ping一下连接通不通、数据库是否存在、建一个登录窗口、连接哪个数据库等等

4、最后传参打开你的正式项目

 

否则,数据源、加载表都用动态的话,狐表的强项和便利性都没有了,得不偿失。


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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2013/12/30 17:22:00 [只看该作者]

楼上好想法

 回到顶部