新手学DataGrid,有两个小小的困惑

prominent 2006-02-13 01:30:27
我正在写一个小的程序。。
就是产品查询的。。。
我要实现的结果是,想在DataGrid中显示查询到的值。问题是:
1.怎样在窗体装载时,就在第一栏显示字段的名称和控制每个字段栏目的宽度呢?
2.可不可以不用ado绑定。有没有其它的办法呢?
可能问题太菜了。。
可我真的不知道呀。查了N久了。。还是没有搞定。。。
望高手指点下撒。谢了。。
...全文
279 点赞 收藏 32
写回复
32 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bulletCoderHope 2006-02-15
dim conn as new adodb.connection
dim rs as new adodb.recordset
Private Sub find_Click()
If trim(pro_search.Text)= "" Then
MsgBox "请输入相应的查询条件!", vbCritical, "提示!"
pro_search.SetFocus
Exit Sub
Else
rs.cursorlocation=aduseclient
Call open_db
Select Case Trim(combo.Text)
Case "名称"
rs.Open "select pro_name as 名称,pro_biename as 别名,pro_tiaoxingma as 条形码,pro_fenzishi as 分子式,pro_character as 性质,pro_guige as 规格,pro_baozhuang as 包装,pro_usage as 用途,pro_makemethod as 制造方法,pro_costprice as 进价,pro_saleprice as 售价,pro_quantity as 数量,pro_supplier as 供应商,pro_jingyun as 是否禁运,pro_safe as 安全系数,pro_code as 产品编码,pro_sort_name as 产品类别 from pro_inf where pro_name like '%" & Trim(pro_search.Text) & "%'", conn, 0, 1
If rs.EOF And rs.BOF Then
MsgBox "没有找到相关的产品,请重新输入查询条件!", vbInformation, "提示!"
pro_search.SetFocus
pro_search.SelStart = 0
pro_search.SelLength = Len(Trim(pro_search.Text))
Else
Set DataGrid.DataSource = rs '还是这句报错呀
End If
Call close_rs
End Select
Call close_db
End If
End Sub
要设置cursorlocation
回复
azheng270 2006-02-14

不用ADO的话
用 OleDbConnection + OleDbDataReader + OleDbCommand
也可以有一样的效果
回复
prominent 2006-02-14
好的.真的麻烦大哥了...
Private Sub find_Click()
Call open_db '是查询的.我删了一些代码看着不吃力呀呵呵.
rs.CursorLocation = adUseClient
rs.Open "select pro_name as 名称,pro_biename as 别名 from pro_inf where pro_name='" & Trim(pro_search.Text) & "'", conn, 0, 1
Set DataGrid.DataSource = rs
Call close_rs
Call close_db
End Sub
也许我的表达有问题呀...!
就是看不到效果..
当然数据库中有记录的..不知道是什么问题.
回复
faysky2 2006-02-14
使用DataGrid就是那样,需要设置客户端游标(rs.CursorLocation=adUseClient)才能显示数据

我在运行的时候.却看不到效果...????这句不大明白,你不是说加上rs.CursorLocation=adUseClient就好了吗,怎么又没有效果?

能不能看看你的代码?

回复
prominent 2006-02-14
可以实现了...
加上rs.CursorLocation=adUseClient这一句就没有问题了..
我以前都没有用过呀...
也没有出错呀!
我想知道是什么原因呀...能说说吗?
还有就是:我在运行的时候.却看不到效果...
但可看见.datagrid控件:闪动了一下,就像是在刷新但就是看不到我查询的结果.
我用ADODC绑定时可以实现我所要的结果..
但为了移植方便,我想还是用set datagrid.datasource=rs
但为什么就没有反应了?要线等.!
回复
dell9 2006-02-14
是,我改成这个就好了。 谢谢帮助
Set MSHFlexGrid1.DataSource = rs
回复
faysky2 2006-02-14
to :prominent()
to :dell9(含中文字符)
是的,rs.close和cn.close数据都会消失,用MSHFlexGrid的话则不会
回复
dell9 2006-02-14
单步执行,好像一运行最后一句cn.Close数据就消失了。


回复
dell9 2006-02-14
先前是我把控件名弄错弄了。
但是现在运行完后,没有数据显示出来啊?是不是有什么datagrid控件的属性要设置啊?
回复
dell9 2006-02-14
运行完后,没有数据显示出来啊?
回复
faysky2 2006-02-14
to:prominent() 代码没问题,把窗体上的DataGrid删除掉,重新添加一个新的,命名为DataGrid

to:dell9(含中文字符) 提示说"object required" 是什么原因阿?
缺少对象,看看你的窗体上时候有 名称为DataGrid1的控件,名称一定要写对
回复
dell9 2006-02-14
我也不行啊,老在Set DataGrid1.DataSource = rs 出错。 提示说"object required" 是什么原因阿? 我用的sql server
cn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Password= ;Initial Catalog=pubs;Data Source=HJT"
cn.Open
sSQL = "select * from authors"
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient '设置客户端游标
rs.Open sSQL, cn, 3, 2
Set DataGrid1.DataSource = rs '把记录集的记录显示到DataGrid1

cn.Close
回复
faysky2 2006-02-13
Adodc是控件,Adodb指的就是ADO(工程"/"引用"/Microsoft ActiveX Data Objects 2.X Library)
,代码上面已经有了
回复
prominent 2006-02-13
应该是后者呀。。。但是怎样实现呀。。。给个思路呀。。。谢了。。。
回复
lsftest 2006-02-13
不用ado???难道还用回dao或rao???
楼主的意思是不用adodc吧????不用adodc就用adodb吧。。。。。。。
回复
prominent 2006-02-13
真没有办法了呀...
帮帮忙呀...
回复
prominent 2006-02-13
问题解决了....
谢楼上的几位大哥了.
我不用ADO,那怎样用程序实现查询所得的记录显示在网格中呢?
肯请各路高人指点一下呀,谢了...


回复
faysky2 2006-02-13
把那个DataGrid删除掉,重新添加一个应该可以了
回复
samson_www 2006-02-13
先把需要的字段在datagrid右键中检索进去
回复
prominent 2006-02-13
看来不是这个问题呀...
数据库的基本操作我都会了,就是对一些控件不是太熟悉,,,
苦于公司急于要这个软件.
没办法...
硬撑着呀...!
现学现卖!

回复
加载更多回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2006-02-13 01:30
社区公告
暂无公告