VB读取csv文件问题
用VB读取CSV文件并插入Access数据库
1.在CSV文件的最后一行有一个简单校验:END+文件明细条数。用来判断文件明细是否正确。那我应该怎么判断文件明细是正确的呢?
2.读取CSV文件时,如果文件里有 ","(逗号)该如何处理?
3.在将文件写入数据库时,如何避免将最后的 简单校验 也写入数据库?
希望高人能给出具体代码,本人对VB不熟悉。以前一直做C#的。
[解决办法]
1)原始的 CSV 放一个目录,然后再开一个目录放置处理后的 CSV。
用下面的代码进行 CSV 文件的复制,同时进行校验。
Public Function CopyAndCheck(ByVal SourceFile As String, _ ByVal TargetFile As String _ ) As Boolean Dim bCheckResult As Boolean Dim hSource As Integer Dim hTarget As Integer Dim sLine As String Dim lCount As Long hSource = FreeFile() Open SourceFile For Input Access Read As #hSource hTarget = FreeFile() Open TargetFile For Output Access Write As #hTarget Do While Not EOF(hSource) Line Input #hSource, sLine If sLine Like "END*" Then bCheckResult = (Val(Mid$(sLine, 4)) = lCount) Exit Do Else Print #hTarget, sLine End If Loop Close #hSource Close #hTarget CopyAndCheck = bCheckResultEnd Function
[解决办法]
如果只是避免“,”号,则可以改变FMT=Delimited语句,但无法判断最后汇总行,如果汇总行字段数与明细行不一致,则自己读取后插入。
[解决办法]
建议去看看visdata(自带的例子),关于txt的操作很详细...
[解决办法]
楼主两天没说话了:)
[解决办法]
文件的数据结构决定效率。
我认为你的校验信息不要写在 CSV 文件中。
你可以在同一目录下写一个 check.ini 文件:
[yourfilename.csv]
check = <文件明细条数>
这样,.csv 中整齐划一的记录格式就便于将其当作 Jet Engine 的外部数据库来处理。一个 SQL 语句就可以搞定导入。
同时,如果你用的是带有 AffectedRecords 参数的 Execute 方法,就可以直接得到导入的记录数。与ini文件中的比较即可。
如果你使用了事务,这时就可以提交或回滚。