高手请进,Ado.net访问 DBF文件时 记录条数 不对的奇怪现象

huguangwu 2009-06-01 01:50:01
我用ADO.NET访问DBF文件,返回出DataTable,我写了如下的代码:

  Public Function DBFToDataTable(ByVal filepath As String) As System.Data.DataTable
Dim topics As System.Data.DataTable
Dim dsResult As New DataSet
Try
Dim path As String = System.IO.Path.GetDirectoryName(filepath)
Dim FileName As String = System.IO.Path.GetFileName(filepath)



Dim conn As String = "Provider=vfpoledb.1;Data Source=" & path

Dim dbfconn As New OleDb.OleDbConnection()
dbfconn.ConnectionString = conn


Dim cmd As String = "select * from " & FileName
Dim adapter As New OleDbDataAdapter(cmd, dbfconn)

adapter.Fill(dsResult, "jysj")
topics = dsResult.Tables(0)
dsResult.Dispose()
adapter.Dispose()
dbfconn.Close()
dbfconn.Dispose()

Catch ex As Exception

Throw ex

End Try
Return topics
End Function




调试时,得出的数据如下:

filepath : E:\job\20090525\JobBSsystem\Web\cachedata\20090601014151.dbf
path: E:\job\20090525\JobBSsystem\Web\cachedata
filename 20090601014151.dbf
cmd: select * from 20090601014151.DBF

问题是:
用VF打开该DBF文件,是492行,但得到DataTable时
调试Topics.rows.count 为491

怎么会有这样的问题?高手请解答

...全文
102 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2009-06-09
  • 打赏
  • 举报
回复
可能有一行是带删除标记的。

你在VFP中:

Select Count(*) As 记录数 From 20090601014151.DBF Where !Deleted()

看看不多少记录数,如果这样是491,说明有一行是带删除标记的。

可以这样找出带删除标记的记录:
Select * From 20090601014151.DBF Where Deleted()
Adechen 2009-06-01
  • 打赏
  • 举报
回复
有点奇怪,你在foxpro里select 下
huguangwu 2009-06-01
  • 打赏
  • 举报
回复
怎么没人回答啊
huguangwu 2009-06-01
  • 打赏
  • 举报
回复
自己up
huguangwu 2009-06-01
  • 打赏
  • 举报
回复
怎么没人回答呢?

另外补充一下,访问其他几个表dbf文件正常,真是奇怪,不知道哪里的问题
huguangwu 2009-06-01
  • 打赏
  • 举报
回复
试了,为492,但程序出来是491,有一行数据我找出来了,它没有得到

62,051

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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