关于数据库的综合问题有两个数据表,table1是这样的idname1题组一2题组二3题组三……table2是这样的idname1题
关于数据库的综合问题
有两个数据表,table1是这样的
id name
1 题组一
2 题组二
3 题组三
… …
table2是这样的
id name
1 题组一例一
2 题组一例二
3 题组二例一
4 题组二例二
5 题组三例一
6 题组三例二
… …
现在我想创建2个form form1用label控件显示table1里的name列,点击label显示form2,form2里面也用label显示的对应table1的table2的name列。比如点击的是题组一,form2显示的就是题组一例一和题组一例二。
小弟现在写好form1了,就是不知道如何在form2里面显示对应的tabel2的name列。请高手指点迷津,最好能给点代码参考。谢谢。
VB.NET code Dim conn As OleDbConnection Dim strconn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Math.mdb" Dim cmd As OleDb.OleDbCommand = New OleDb.OleDbCommand cmd.CommandText = "select name from table1" Dim myread As OleDbDataReader conn = New OleDbConnection(strconn) cmd.Connection = (conn) Try conn.Open() myread = cmd.ExecuteReader While myread.Read Dim lab As New Label Dim lines As String lines = myread.GetString(0) lab.Text = lines lab.Name = i lab.Location = New Point(x, y) lab.AutoSize = True lab.Cursor = Cursors.Hand AddHandler lab.Click, AddressOf labClick Me.Controls.Add(lab) i += 1 y += 50 If y = 550 Then x = 450 y = 50 End If End While Catch ex As Exception Finally conn.Close() End Try
[解决办法]先要把name从Form1传到Form2,可以这样处理
Private Sub labClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
Me.Tag = CType(sender, Label).Text
Dim frm As New Form2
frm.Show()
End Sub
Form2中也像Form1中一样执行SQL语句就行了
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MsgBox(Form1.Tag)
'执行 Select * from table2 where name = form1.tag
End Sub
[解决办法]修改两个数据表,table1是这样的
id name
1 题组一
2 题组二
3 题组三
… …
table2是这样的
id pid name
1 1 例一
2 1 例二
3 2 例一
4 2 例二
5 3 例一
6 3 例二
Private Sub labClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click
Me.Tag = CType(sender, Label).id
Dim frm As New Form2
frm.id=me.tag
frm.Show()
End Sub
Form2中也像Form1中一样执行SQL语句就行了
public share id as integer
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
sql="select * from table2 where pid="&id
dim da as new oledb.olednadapter(sql,cntdb)
dim ds as dataset
da.fill (ds,"table2")
do while i <ds.tables(0).rows.count
'add lable control
'set lable.text=ds.table(0).rows(i).item("name")
'set lable.position or format
i=i+1
loop
end sub