求助:VB数据库查询
连接Acess数据库xx,表名tt,数据库中部分数据如下图所示。有五个Combox1(0~4)控件数组,三个ListBox控件:List1,List2,List3,三个C...
连接Acess数据库xx,表名tt,数据库中部分数据如下图所示。
有五个Combox1(0 ~ 4)控件数组,三个ListBox控件:List1,List2,List3,三个Command控件,依次为显示按钮,排列按钮,查询按钮,一个Text控件。
Combox1(0 ~ 4)控件全部加载“品种”那列:rs.Fields(0)
Text1用来输入间隔数(i=Text1.Text)
当按下查询按钮时,List1中显示五个Combox1(0~4)所选的品种。
当按下排列按钮时,对List1中的数字进行由小到大顺序排列,并将排列后的显示在List2中。
当按下查询按钮时,链接数据库,依次查询
List2.List(0)这个品种所在行与rs.Fields(1)交叉点处的值,
List2.List(1)品种所在行与rs.Fields(1+i)交叉点处的值,
List2.List(2)品种所在行与rs.Fields(1+2i)交叉点处的值,
List2.List(3)品种所在行与rs.Fields(1+3i)交叉点处的值,
List2.List(4)品种所在行与rs.Fields(1+4i)交叉点处的值。
如果rs. Fields(1+Xi),(1+Xi)> 9 即超出边界,则查询
List2.List(1+Xi)品种所在行与rs.Fields(9)交叉点处的值。
并将五个查询结果显示在List3中。
例如:i=1
List1 List2 List3
40t 20t 34 (查询与rs.Fields(1)交叉点处的值)
90t 40t 25 (查询与rs.Fields(2)交叉点处的值)
70t 50t 45 (查询与rs.Fields(3)交叉点处的值)
50t 70t 56 (查询与rs.Fields(4)交叉点处的值)
20t 90t 88 (查询与rs.Fields(5)交叉点处的值)
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Integer
…………………………………………
请大家帮帮忙,本人是初学者,应该怎么用VB编程啊?
因为本人很急,如果答案很好的话我会追加分,谢谢大家的帮助。
噢!SORRY~那里写错了,丢了个参数,List2里只有五个,List2.List(a):a= 0 to 4
还有Combox1(0 ~ 4),不选择时List1里并不添加此项。 展开
有五个Combox1(0 ~ 4)控件数组,三个ListBox控件:List1,List2,List3,三个Command控件,依次为显示按钮,排列按钮,查询按钮,一个Text控件。
Combox1(0 ~ 4)控件全部加载“品种”那列:rs.Fields(0)
Text1用来输入间隔数(i=Text1.Text)
当按下查询按钮时,List1中显示五个Combox1(0~4)所选的品种。
当按下排列按钮时,对List1中的数字进行由小到大顺序排列,并将排列后的显示在List2中。
当按下查询按钮时,链接数据库,依次查询
List2.List(0)这个品种所在行与rs.Fields(1)交叉点处的值,
List2.List(1)品种所在行与rs.Fields(1+i)交叉点处的值,
List2.List(2)品种所在行与rs.Fields(1+2i)交叉点处的值,
List2.List(3)品种所在行与rs.Fields(1+3i)交叉点处的值,
List2.List(4)品种所在行与rs.Fields(1+4i)交叉点处的值。
如果rs. Fields(1+Xi),(1+Xi)> 9 即超出边界,则查询
List2.List(1+Xi)品种所在行与rs.Fields(9)交叉点处的值。
并将五个查询结果显示在List3中。
例如:i=1
List1 List2 List3
40t 20t 34 (查询与rs.Fields(1)交叉点处的值)
90t 40t 25 (查询与rs.Fields(2)交叉点处的值)
70t 50t 45 (查询与rs.Fields(3)交叉点处的值)
50t 70t 56 (查询与rs.Fields(4)交叉点处的值)
20t 90t 88 (查询与rs.Fields(5)交叉点处的值)
Dim con As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Integer
…………………………………………
请大家帮帮忙,本人是初学者,应该怎么用VB编程啊?
因为本人很急,如果答案很好的话我会追加分,谢谢大家的帮助。
噢!SORRY~那里写错了,丢了个参数,List2里只有五个,List2.List(a):a= 0 to 4
还有Combox1(0 ~ 4),不选择时List1里并不添加此项。 展开
2个回答
展开全部
周末没上线,今早才看到你的消息
Option Explicit
Dim CNN As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Private Sub Form_Load()
Dim Cnstr As String, I As Integer
'设置数据库连接
Cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;"
Cnstr = Cnstr + "Data Source=" + App.Path & "\XX.MDB;"
CNN.ConnectionString = Cnstr
'读取combo(0 - 4)下拉列表
CNN.Open
Rs.Open "select 品种 from TT", CNN
Do While Not Rs.EOF
For I = 0 To 4
Combo1(I).AddItem Rs.Fields(0).Value
Next I
Rs.MoveNext
Loop
Rs.Close
CNN.Close
'请选择
For I = 0 To 4
Combo1(I).Text = "请选择品种"
Next I
End Sub
Private Sub Command1_Click() '显示
Dim I As Integer
List1.Clear
For I = 0 To 4
If Combo1(I).Text <> "请选择品种" Then
List1.AddItem Combo1(I).Text
End If
Next I
End Sub
Private Sub Command2_Click() '排序
Dim I As Integer, J As Integer
List2.Clear
For I = 0 To List1.ListCount - 1
For J = 0 To List2.ListCount - 1
If Val(Left(List2.List(J), 2)) >= Val(Left(List1.List(I), 2)) Then Exit For
Next J
List2.AddItem List1.List(I), J
Next I
End Sub
'其实排序这里有个不费脑筋的办法,只要在窗体设计时把list2的sorted属性设为TRUE,它就会把添加进来的数据自动排序
Private Sub Command3_Click() '查询
Dim I As Integer, N As Integer
If Text1.Text = "" Then
MsgBox "请填写间隔数。", vbOKOnly, "提示"
Exit Sub
End If
N = Val(Text1.Text)
List3.Clear
CNN.Open
For I = 0 To List2.ListCount - 1
Rs.Open "select * from TT where 品种 ='" + List2.List(I) + "'", CNN
If 1 + I * N <= 9 Then
List3.AddItem Rs.Fields(1 + I * N).Value
Else
List3.AddItem Rs.Fields(9).Value
End If
Rs.Close
Next I
CNN.Close
End Sub
Option Explicit
Dim CNN As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Private Sub Form_Load()
Dim Cnstr As String, I As Integer
'设置数据库连接
Cnstr = "Provider=Microsoft.Jet.OLEDB.4.0;"
Cnstr = Cnstr + "Data Source=" + App.Path & "\XX.MDB;"
CNN.ConnectionString = Cnstr
'读取combo(0 - 4)下拉列表
CNN.Open
Rs.Open "select 品种 from TT", CNN
Do While Not Rs.EOF
For I = 0 To 4
Combo1(I).AddItem Rs.Fields(0).Value
Next I
Rs.MoveNext
Loop
Rs.Close
CNN.Close
'请选择
For I = 0 To 4
Combo1(I).Text = "请选择品种"
Next I
End Sub
Private Sub Command1_Click() '显示
Dim I As Integer
List1.Clear
For I = 0 To 4
If Combo1(I).Text <> "请选择品种" Then
List1.AddItem Combo1(I).Text
End If
Next I
End Sub
Private Sub Command2_Click() '排序
Dim I As Integer, J As Integer
List2.Clear
For I = 0 To List1.ListCount - 1
For J = 0 To List2.ListCount - 1
If Val(Left(List2.List(J), 2)) >= Val(Left(List1.List(I), 2)) Then Exit For
Next J
List2.AddItem List1.List(I), J
Next I
End Sub
'其实排序这里有个不费脑筋的办法,只要在窗体设计时把list2的sorted属性设为TRUE,它就会把添加进来的数据自动排序
Private Sub Command3_Click() '查询
Dim I As Integer, N As Integer
If Text1.Text = "" Then
MsgBox "请填写间隔数。", vbOKOnly, "提示"
Exit Sub
End If
N = Val(Text1.Text)
List3.Clear
CNN.Open
For I = 0 To List2.ListCount - 1
Rs.Open "select * from TT where 品种 ='" + List2.List(I) + "'", CNN
If 1 + I * N <= 9 Then
List3.AddItem Rs.Fields(1 + I * N).Value
Else
List3.AddItem Rs.Fields(9).Value
End If
Rs.Close
Next I
CNN.Close
End Sub
展开全部
Private Sub Command1_Click()
Dim abc
abc = Combo2.Text
Adodc1.RecordSource = "select * from test where " & Combo2.Text & " ='" & Combo1.Text & " ' "
Adodc1.Refresh
Label1.Caption = Adodc1.Recordset.Fields(Combo3.Text)
End Sub
我这是通过Combo2.Text 和Combo1.Text 的条件查找出对应的Combo3.Text列对应的值 并显示于Label1.Caption 几句话就可以解决
Dim abc
abc = Combo2.Text
Adodc1.RecordSource = "select * from test where " & Combo2.Text & " ='" & Combo1.Text & " ' "
Adodc1.Refresh
Label1.Caption = Adodc1.Recordset.Fields(Combo3.Text)
End Sub
我这是通过Combo2.Text 和Combo1.Text 的条件查找出对应的Combo3.Text列对应的值 并显示于Label1.Caption 几句话就可以解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询