SOS,窗体中显示数据表数据有点问题

please_call_me_J 2010-03-19 01:40:01
窗体上有3个文本框,一个treeview.treeview中有4个节点,节点名字分别是2006,2007,2008,2009.
数据表里有个sno字段,里面有2006,2007,2008,2009.四条纪录.
我要实现的是点了该节点,自动查找编号与节点名称一样的纪录,并显示到文本框,我的代码反正只能显示第一条纪录.随便选哪个节点都只显示2006那条数据到文本框.


求解.


顺便问下有高手知道有什么更好的方法吗?我要写个treeview控件,用来显示数据表里的某字段(比如编号).我选任意一个节点,自动查找该纪录的相关信息并输出到文本框.

提示:我要的不是绑定控件与数据表!

以下是代码,我不知道是否是不该选click.还是应该用其他方法做,求解!!!!


Private Sub TreeView1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles TreeView1.Click
If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim str As String = "provider=microsoft.jet.oledb.4.0;data source="
OleDbConnection1.ConnectionString = str & OpenFileDialog1.FileName

OleDbCommand1.Connection = OleDbConnection1
OleDbConnection1.Open()

OleDbCommand1.Parameters.Add("@sno", OleDbType.VarChar, 20).Value = a2
'MsgBox(TreeView1.SelectedNode.Text)
OleDbCommand1.CommandText = "select sno from table1 where sno=@sno"
TextBox1.Text = OleDbCommand1.ExecuteScalar.ToString

OleDbCommand1.CommandText = "select sname from table1 where sno=@sno"
TextBox2.Text = OleDbCommand1.ExecuteScalar.ToString

OleDbCommand1.CommandText = "select sex from table1 where sno=@sno"
TextBox3.Text = OleDbCommand1.ExecuteScalar.ToString

OleDbConnection1.Close()
End If
end sub
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
please_call_me_J 2010-03-20
  • 打赏
  • 举报
回复
感谢感谢感谢
tjficcbw 2010-03-20
  • 打赏
  • 举报
回复
拖进来一个listbox和三个textbox
就行了,


Imports System.Data.OleDb
Public Class Form1
Dim dtStr() As String
Dim allNo As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cstring As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db.mdb"
Dim con As New OleDb.OleDbConnection(cstring)

Dim sql As String = "select count(sno) from con"
con.Open()

Dim cmd As New OleDb.OleDbCommand(sql, con)
Dim myreader As OleDbDataReader = cmd.ExecuteReader
myreader.read()
allNo = myreader(0)
myreader.Close()
con.Close()
sql = "select id,sno ,sname,sex from con"
con.Open()

Dim cmd1 As New OleDb.OleDbCommand(sql, con)
Dim myreader1 As OleDbDataReader = cmd1.ExecuteReader
ReDim dtStr(allNo - 1)

Dim i As Integer
While myreader1.Read
dtStr(i) = myreader1(0) & "," & myreader1(1) & "," & myreader1(2) & "," & myreader1(3)
ListBox1.Items.Add(myreader1(0))
i += 1
End While
con.Close()



End Sub



Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click

TextBox1.Text = dtStr(ListBox1.SelectedIndex).Split(",")(1)
TextBox2.Text = dtStr(ListBox1.SelectedIndex).Split(",")(2)
TextBox3.Text = dtStr(ListBox1.SelectedIndex).Split(",")(3)



End Sub


End Class

古今多少事 2010-03-19
  • 打赏
  • 举报
回复
类似下面试试:
Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
……
sno1 = e.Node.Text
MyCommand = New OleDbCommand("Select * from 表 where sno='" & sno1 & "'", MyConnection)
MyDataAdapter = New OleDbDataAdapter(MyCommand)
MyDataAdapter.Fill(MyDataSet, "XX")
……
End Sub
please_call_me_J 2010-03-19
  • 打赏
  • 举报
回复
不是我不听你的。是我确实不知道怎么操作这个问题啊。。。。。所以才又开了个帖子
tjficcbw 2010-03-19
  • 打赏
  • 举报
回复
你这个是点击treeview连接数据库
这样非常浪费资源,
要是只这样少数据库记录则你可用数组存储打开一次读取
相应的记录,
比如有4维
A[0]给treeview
A[1]-A[3]给3个文本框
tjficcbw 2010-03-19
  • 打赏
  • 举报
回复
一样啊用我上面的方法多好,
please_call_me_J 2010-03-19
  • 打赏
  • 举报
回复
那如果我想设计一个类似通讯录的东西。treeview要显示联系人的列表。我可以用其他哪些控件来代替这样的功能呢

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧