读书人

datagrid显示多字段有关问题,高手帮忙

发布时间: 2012-02-09 18:22:27 作者: rapoo

datagrid显示多字段问题,高手帮忙!
我用datagrid控件绑定ADO控件显示Access数据库一故障表中的数据,在表中有若干个字段(比如故障1,故障2,...故障n,日期,星期,时间),对于某一个字段(比如故障1)来说,只要满足我的检索条件(例如故障1=1,1表示发生了故障1),我就将故障1,日期,星期,时间这几个字段在datagrid控件中显示出来,将其他字段(故障2,...故障n)隐藏(DataGrid1.Columns(i).Visible = False),现在我想把所有的故障情况都显示出来,即在故障1所有出现情况显示完之后接着显示故障2所有的情况,以此类推直到所有的故障情况都列出来,但是我现在只能显示最后一种故障的情况(故障n),我的关键代码如下:
sqlstring = sqlstring & "AND 故障=1 " 'sqlstring为各故障通用的select语句
DataGrid1.Columns.Add(0).Caption = "故障 " '标签头
Call queryrefresh
For i = 1 To 21
DataGrid1.Columns(i).Visible = False
Next
...
sqlstring = sqlstring & "AND 故障=n " 'sqlstring为各故障通用的select语句
DataGrid1.Columns.Add(0).Caption = "故障 " '标签头
Call queryrefresh
For i = 0 To n-1
DataGrid1.Columns(i).Visible = False
Next

子程序queryrefresh '查找数据库中满足搜索条件的记录
Public Sub queryrefresh()
With Query
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\项目\通信程序\Database\DB_Siv.mdb;Persist Security Info=False "
.RecordSource = sqlstring
.Refresh
End With
End Sub
不知道代码有什么问题,各位大侠帮帮忙!谢谢

[解决办法]
出了什么错?
[解决办法]
你的问题是多次执行SQL查询语句,执行结果只能以最后一次条件为准,以下提供一段代码是多条件选择查询的:

Option Explicit
Dim db As adodb.Connection
Dim rs As adodb.Recordset
Dim a(4) As String
Dim sql1(3) As String
Dim sql2 As String

Private Sub Form_Load()
a(0) = "故障1 "
a(1) = "故障2 "
a(2) = "故障3 "
End Sub

Private Sub Command3_Click()
Dim sql As String
If Check1.Value = 1 And Check2.Value = 1 And Check3.Value = 1 Then
sql2 = a(0) & ", " & a(1) + ", " + a(2)
ElseIf Check1.Value = 1 And Check2.Value = 1 Then
sql2 = a(0) + ", " + a(1)
ElseIf Check1.Value = 1 And Check3.Value = 1 Then
sql2 = a(0) + ", " + a(2)
ElseIf Check2.Value = 1 And Check3.Value = 1 Then
sql2 = a(1) + ", " + a(2)
ElseIf Check1.Value = 1 Then
sql2 = a(0)


ElseIf Check2.Value = 1 Then
sql2 = a(1)
ElseIf Check3.Value = 1 Then
sql2 = a(2)
Else
sql2 = "* "
End If
sql = "select " & sql2 & " from mdlk_sj " '注意mdlk_sj改为你的数据表名,并增加你需显示的其他字段名
Text5 = sql
Set db = New adodb.Connection
Set rs = New adodb.Recordset
db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\项目\通信程序\Database\DB_Siv.mdb;Persist Security Info=False "
db.Open
rs.CursorLocation = adUseClient
rs.Open sql, db, adOpenStatic, adLockReadOnly
Set DataGrid1.DataSource = rs
End Sub

[解决办法]
up
[解决办法]
看完了你的内容,谈谈自己的一点微见
你这个表,设计的不是很合理.
字段设计: 故障 日期 星期 时间
故障1 2007.12.13
故障1 2007.12.14
故障2 2003.1.1
.......
这里考虑的一是数据库,其二也有利于检索的方便.

读书人网 >VB

热点推荐