断点有数据,不加断点,没数据。急!!!!

blasterboy 2004-06-23 10:25:37
'得到MDB的名字
Dim ODB_DBNAME As String = FP_GetIni(DG_IniFiles, DG_IniEntLocalMDB) & ".mdb"
'得到MDB的路径
Dim DBPath As String = FG_GetCurDir()
Dim da As New OleDbDataAdapter '= New OleDbDataAdapter(strSQL, cnn)
Dim ds As New DataSet
'连接字符串
Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBPath & ODB_DBNAME
Dim cnn As OleDbConnection = New OleDbConnection(ConnectionString)

cnn.Open()

da.SelectCommand = New OleDbCommand(strSQL, cnn)


da.Fill(ds, "aa")

cnn.Close()
Return ds.Tables("aa")

这段代码,如果在Return ds.Tables("aa")上面的,任何一个地方打上断点,那么,
ds.Tables("aa")就是有数据的,如果不加上断点。ds.Tables("aa")就没有数据,为什么?
...全文
493 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
水如烟 2004-06-24
  • 打赏
  • 举报
回复
是这样的话可以用Thread.Sleep来延迟
haoder 2004-06-24
  • 打赏
  • 举报
回复
我也遇到过这种情况.是因为VB.NET将数据写进ACCESS数据库时有延时,大约0。5秒。解决方法,用一个TIMER控件,在0。5秒后再填充数据。
blasterboy 2004-06-24
  • 打赏
  • 举报
回复
是这样子的,这个是一个从vb升级过来的程序,这样的,要求升级的代价最小,所以就还用到了Dao这些东西,要求把原来的程序改动最小,所以称这个样子了。

大家帮我想想吧,vb 和vb.net我都不怎么会:(
blasterboy 2004-06-24
  • 打赏
  • 举报
回复
System.Threading.Thread.Sleep(1000)
这个方法我用了,是可以的,但是为什么要加这个,就有些不太清楚了
难道真的是因为有延时 :(

谢谢大家:)
准备结账
miaojx 2004-06-24
  • 打赏
  • 举报
回复
加到fill的下边
miaojx 2004-06-24
  • 打赏
  • 举报
回复
System.Threading.Thread.Sleep(1000)
水如烟 2004-06-23
  • 打赏
  • 举报
回复
你试试这样
Public Function FG_TrueDBSelect(ByVal strSQL As String) As Data.DataTable
dim tmpTable as DataTable
.....
tmpTable=ds.Tables("aa")
Return tmpTable
End Function

这样看不出有什么两样,但有时就是这样奇怪,我碰过
blasterboy 2004-06-23
  • 打赏
  • 举报
回复
up
水如烟 2004-06-23
  • 打赏
  • 举报
回复
哈,有趣
也不懂
blasterboy 2004-06-23
  • 打赏
  • 举报
回复
还有一点就是,如果我的数据比较少的话,比如是100一下,有的时候就可以,这个极限不定,我运行.net比较多的时候,可能就是80条以下可以显示,如果是刚刚开机,有时候,就是100条:( .net 2003 是不是有毛病啊:(

环境.net2003 access 2000
水如烟 2004-06-23
  • 打赏
  • 举报
回复
呵,我看不出问题
blasterboy 2004-06-23
  • 打赏
  • 举报
回复
难道我还要定一个全局变量,不会把:(,我觉得即使是,局部变量,我return应该也是可以的吧:(
关键是这个样子,如果我在return上面加了断点,在return的那个地方,我可以看到数据
如果,我加在return上面,那么,我就看不到数据,这个时候,还没有退出这个函数阿,应该没有全局变量,局部变量的说法把:(
blasterboy 2004-06-23
  • 打赏
  • 举报
回复
我是这样写的
Public Function FG_TrueDBSelect(ByVal strSQL As String) As Data.DataTable
Dim ODB_DBNAME As String = FP_GetIni(DG_IniFiles, DG_IniEntLocalMDB) & ".mdb"

Dim DBPath As String = FG_GetCurDir()
Dim da As New OleDbDataAdapter '= New OleDbDataAdapter(strSQL, cnn)
Dim ds As New DataSet
Dim ConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBPath & ODB_DBNAME
Dim cnn As OleDbConnection = New OleDbConnection(ConnectionString)

cnn.Open()

da.SelectCommand = New OleDbCommand(strSQL, cnn)


da.Fill(ds, "aa")

cnn.Close()
Return ds.Tables("aa")
End Function
blasterboy 2004-06-23
  • 打赏
  • 举报
回复
好的,我试试看,但我觉得应该不是try catch的事情:(
水如烟 2004-06-23
  • 打赏
  • 举报
回复
Dim ds As New DataSet中的ds是局部变量呀,结束后当然没了
你这个是不是这样写的
Function ReturnTable(..) As DataTable
...

Return ds.Tables("aa")
End Function

那样ReturnTable应该是有数据的

仅供参考
dzliang21 2004-06-23
  • 打赏
  • 举报
回复
不可能吧
那你Try Catch一下,把关闭连接放在Finally里
blasterboy 2004-06-23
  • 打赏
  • 举报
回复
是问题太简单了,还是没有人愿意理我:(
大家帮帮忙,帮忙up,我也多谢了!
blasterboy 2004-06-23
  • 打赏
  • 举报
回复
数据库是access
水如烟 2004-06-23
  • 打赏
  • 举报
回复
你怎么还用到DAO哪,不用它不行吗
blasterboy 2004-06-23
  • 打赏
  • 举报
回复
别的机子上也是这样
还有,突然发现前面我还这样用过
g_JetDataBase.TableDefs("NYUS08OpenRecordset(DAO.RecordsetTypeEnum.dbOpenTable, DAO.RecordsetOptionEnum.dbAppendOnly)

不知道这句话是不是有一些影响:(
加载更多回复(13)

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧