rs.Open "execute 存储1", con, 1, 3
Set MSHFlexGrid1.DataSource =rs
为什么显示的数据显示不完整的,还有一些没有显示出来?
我用msgbox rs.RecordCount是显示的是-1,但是我在查询分析器中有900多的记录显示,而显示在控件上的只有800,这个是怎么回事啊,我查询出来的数据的列是每次都变的,不是固定,下载到EXECL中只能依靠MSHFlexGrid了,但是MSHFlexGrid又显示不全,这怎么办啊?我的内存是512的,求各位老大给一个解决的办法啊,或是怎么解决MSHFlexGrid的显示问题。万分感谢啊!!很着急 啊!!!!!!!!!!!1
Set MSHFlexGrid1.DataSource =rs
为什么显示的数据显示不完整的,还有一些没有显示出来?
我用msgbox rs.RecordCount是显示的是-1,但是我在查询分析器中有900多的记录显示,而显示在控件上的只有800,这个是怎么回事啊,我查询出来的数据的列是每次都变的,不是固定,下载到EXECL中只能依靠MSHFlexGrid了,但是MSHFlexGrid又显示不全,这怎么办啊?我的内存是512的,求各位老大给一个解决的办法啊,或是怎么解决MSHFlexGrid的显示问题。万分感谢啊!!很着急 啊!!!!!!!!!!!1
Adodc1.ConnectionString = con
Adodc1.RecordSource = sql
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
我已经自己装载完了。上面的代码可以
我刚刚试了一下,这样是可以完全装载的,不知道是什么原因大家分析一下啊!
这个方法rs.Open "execute 存储1",con,1,3 我认为是不适当的,试试:
set rs=cn.execute("存储1")
默认情况下是服务器端游标,性能更好点,但不返回rs.RecordCount
绑定不好用的话可一行行的添加进去,效果还算可以。
VSFlexGrid也是不错的表格控件,功能远大于MSHFlexGrid
rs.CursorLocation=adUseClient
因为MSHFlexGrid1不须要绑定rs,也就是所谓离线式表格控件,对其中数据的编辑,不会影响rs,同样给其赋值后关闭rs
也不会影响其数据的正常显示。所以如果你不要编辑数据,可以用服务器端游标,高效的返回数据,用MSHFlexGrid1显示。
这就是其与DataGrid控件的不同之处,这是个在线式的表格控件,对其的修改直接影响到rs,同样它也离不开rs,显示过程不能关闭rs.正因为它是完全的客户端行为,所以必须设置rs.CursorLocation=adUseClient
str = "Provider = SQLOLEDB.1;Persist Security Info = False;" & _
"User ID = sa;Password = 123;Data Source = 212.118.1.179;" & _
"Initial Catalog = YSLH"
Set cn = New ADODB.Connection
'cn.CursorLocation = adUseClient
cn.Open str
Set cmd = New ADODB.Command
Set rs = New ADODB.Recordset
cmd.ActiveConnection = cn
cmd.CommandText = "select_trans_info"
cmd.CommandType = adCmdStoredProc Set param = cmd.CreateParameter("@lh_name", adChar, adParamInput, 20, Trim("353"))
cmd.Parameters.Append param
Set rs = cmd.Execute
Set fg.DataSource = rs
Debug.Print rs.RecordCount
Debug.Print fg.Rows - 1
Set cmd = Nothing
Set rs = Nothing
Set cn = Nothing'其中fg是MSHFlexGrid控件
'注释掉cn.CursorLocation = adUseClient 结果:
-1
1701
'不注释掉cn.CursorLocation = adUseClient 结果:
1701
1701
sql = "execute 存储1"
Adodc1.ConnectionString = con
Adodc1.RecordSource = sql
Set MSHFlexGrid1.DataSource = Adodc1
Adodc1.Refresh
这样是OK的
不过看上去这个代码应该是合理的,是用Adodc1的连接对象返回数据的
和你的rs.open方式不同的
我测试了一下,用set rs=cn.execute("存储名称 参数"),这样完全没问题