首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

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

2012-02-09 
datagrid显示多字段问题,高手帮忙!我用datagrid控件绑定ADO控件显示Access数据库一故障表中的数据,在表中

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
.......
这里考虑的一是数据库,其二也有利于检索的方便.

热点排行