| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1348 人关注过本帖, 1 人收藏
标题:请教,datagrid不加载数据库记录问题
只看楼主 加入收藏
enirilt
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-11-29
结帖率:0
收藏(1)
 问题点数:0 回复次数:12 
请教,datagrid不加载数据库记录问题
公用模块代码:
Option Explicit
Public DB As ADODB.Connection
Public RS As ADODB.Recordset
Public RS1, RS2 As ADODB.Recordset
Public sqlStr As String
Public sqlStrX As String
Public strX(5) As String
Public Sub DataBase()
    Set DB = New ADODB.Connection
    DB.Open "provider=microsoft.jet.oledb.4.0;data source=" & App.Path & "\EMS.mdb;Persist Security Info=False"
    Set RS = New ADODB.Recordset
    RS.Open "select * from teachers", DB, adOpenKeyset, adLockPessimistic
    Set RS1 = New ADODB.Recordset
    Set RS2 = New ADODB.Recordset
    RS1.Open "select distinct 姓名 from teachers", DB, adOpenKeyset, adLockPessimistic
    RS2.Open "select distinct 编号 from teachers", DB, adOpenKeyset, adLockPessimistic
   
End Sub
Public Sub Rsize()
frmTeachers.DGteachers.RowHeight = 250
frmTeachers.DGteachers.Columns(0).Width = 1500
frmTeachers.DGteachers.Columns(1).Width = 800
frmTeachers.DGteachers.Columns(2).Width = 600
frmTeachers.DGteachers.Columns(3).Width = 800
frmTeachers.DGteachers.Columns(4).Width = 1200
frmTeachers.DGteachers.Columns(5).Width = 3000
frmTeachers.DGteachers.Columns(6).Width = 600
End Sub
frm窗体代码:
Private Sub Combo1_Change(Index As Integer)
    strX(Index) = Combo1(Index).Text
    If Index < 2 Then
        Call RefreshX2
    Else
        Call RefreshX1
    End If
End Sub

Private Sub Combo1_Click(Index As Integer)
strX(Index) = Combo1(Index).Text
    If Index < 2 Then
        Call RefreshX2
    Else
        Call RefreshX1
    End If
End Sub

Private Sub Form_Load()
    For i = 0 To 4
        Combo1(i).AddItem "所有"
    Next
    Call Init

End Sub
Sub Init()
Call DataBase
Set DGteachers.DataSource = RS
Call Rsize
Do While Not RS1.EOF
    Combo1(0).AddItem RS1("姓名")
    RS1.MoveNext
Loop
    Do While Not RS2.EOF
    Combo1(1).AddItem RS2("编号")
    RS2.MoveNext
Loop
    With Combo1(2)
    .AddItem "男"
    .AddItem "女"
    End With
    With Combo1(3)
    .AddItem "教授"
    .AddItem "副教授"
    .AddItem "讲师"
    .AddItem "助教"
    End With
    With Combo1(4)
    .AddItem "物理系"
    .AddItem "化学系"
    .AddItem "新闻系"
    .AddItem "翻译系"
    .AddItem "行管系"
    End With
End Sub
Sub RefreshX()
    RS.Close
    RS.Open "select * from teachers", DB, adOpenKeyset, adLockPessimistic
    Set DGteachers.DataSource = RS
    Call Rsize
    For i = 0 To 4
        strX(i) = "所有"
    Next
End Sub
Sub RefreshX1()
RS.Close
sqlStrX = "select * from teachers where 姓名 like '%'"
    If strX(2) <> "所有" And strX(2) <> "" Then
        sqlStrX = sqlStrX & "and 性别='" & strX(2) & "'"
    End If
    If strX(3) <> "所有" And strX(3) <> "" Then
        sqlStrX = sqlStrX & "and 职称='" & strX(3) & "'"
    End If
    If strX(4) <> "所有" And strX(4) <> "" Then
        sqlStrX = sqlStrX & "and 所在系='" & strX(4) & "'"
    End If
RS.Open sqlStrX, DB, adOpenKeyset, adLockPessimistic
Set DGteachers.DataSource = RS
Call Rsize
End Sub
Sub RefreshX2()
RS.Close
    If strX(0) <> "所有" And strX(1) <> "" Then
        sqlStrX = "select * from teachers where 姓名 like '%" & strX(0) & "%'"
    Else
    sqlStrX = "select * from teachers where 姓名 like '%'"
    End If
    If strX(1) <> "所有" And strX(1) <> "" Then
        sqlStrX = sqlStrX & "and 编号 like '%" & strX(1) & "%'"
    End If
RS.Open sqlStrX, DB, adOpenKeyset, adLockPessimistic
Set DGteachers.DataSource = RS
Call Rsize
End Sub
问题是运行不报错,可DATAGrid控件不显示数据记录
搜索更多相关主题的帖子: 数据库 
2011-02-19 16:51
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
不报错,上工程吧。

无知
2011-02-19 19:20
enirilt
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-11-29
收藏
得分:0 
应用:microsoft activex data objects 2.8 library
部件:microsoft datagrid control6.0 (sp5)(oledb)
都上了,还需要上什么?
2011-02-19 19:49
enirilt
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-11-29
收藏
得分:0 
演练项目.rar (20.23 KB)
2011-02-19 20:57
enirilt
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-11-29
收藏
得分:0 
登录:ent 密码:123 管理员
2011-02-19 21:27
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
建议使用hfgrid

无知
2011-02-19 23:51
enirilt
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-11-29
收藏
得分:0 
工程文件看了吗?问题在哪?我是跟着书上的例子学呢,所以想知道存在的问题
2011-02-20 08:53
Artless
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:4211
专家分:28888
注 册:2009-4-8
收藏
得分:0 
以下是引用enirilt在2011-2-20 08:53:43的发言:

工程文件看了吗?问题在哪?我是跟着书上的例子学呢,所以想知道存在的问题

工程看过了。
书上的例子?

[ 本帖最后由 Artless 于 2011-2-20 15:18 编辑 ]

无知
2011-02-20 15:12
enirilt
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2006-11-29
收藏
得分:0 
是的,帮我调试一下吗?辛苦了,谢谢!
2011-02-20 15:46
不说也罢
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:39
帖 子:1481
专家分:4989
注 册:2007-10-7
收藏
得分:0 
首先得说下,楼主100多个贴子,结贴率为0哦
但注册时间挺久的,2006年就注册此ID了,回复你下。
其实这个问题挺怪异的,怪异之处在于DATAGRID控件,在不用ADO控件作数据源,而是用代码设定数据源时,一定得设置RECORDSET对象的CursorLocation 属性为 adUseClient,但其它的数据敏感控件就不需要,如MSFLEXGRID,MSHFLEXGRID等。

下面,以RefreshX2这个函数为例子,工程里其它地方你自个儿弄吧。
程序代码:
Sub RefreshX2()
RS.Close
    If strX(0) <> "所有" And strX(1) <> "" Then
        sqlStrX = "select * from teachers where 姓名 like '%" & strX(0) & "%'"
    Else
    sqlStrX = "select * from teachers where 姓名 like '%'"
    End If
    If strX(1) <> "所有" And strX(1) <> "" Then
        sqlStrX = sqlStrX & "and 编号 like '%" & strX(1) & "%'"
    End If

RS.CursorLocation = adUseClient'这句必须有的。其它数据敏感控件不需要,但DATAGRID控件必须得有。
RS.Open sqlStrX, DB, adOpenKeyset, adLockPessimistic

'下面的循环是为DATAGRID表格的每一列赋值表中的字段,也可以在设计时赋值。必须赋值后,表格才会显示数据

For i = 0 To RS.Fields.Count - 1
   DGteachers.Columns(i).DataField = RS.Fields(i).Name
Next

Set DGteachers.DataSource = RS
Call Rsize
End Sub

虽然这样可以解决你的问题,但还是建议你按Artless版主说的,放弃使用DATAGRID控件,而改用MSFLEXGRID,MSHFLEXGRID等控件。


===================================================
讨厌C#的行尾的小尾巴;和一对大括号{ }
===================================================
2011-02-20 18:19
快速回复:请教,datagrid不加载数据库记录问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025246 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved