【发布时间】:2016-03-18 10:27:45
【问题描述】:
我使用定制的导入功能(下面的骨架)从“链接”文本文件(包含页眉/记录/页脚)中收集数据。标题的第一个字段将始终包含 123,但我需要跳过标题中的第二个字段以字母“AC”开头的那些记录。
我尝试创建一个循环,当它发现第一个字段包含“123”并且第二个字段以“AC”开头然后跳过记录直到找到另一个“123”,然后通过循环再次评估并且仅跳出循环,将不包含“AC”的记录写入标题的第二个字段。
但是,当我尝试以下操作并且不太确定如何检查第二个字段中的字符串是否以“AC”开头时,我收到基于行 Loop Until rs!Field1 = "123" And Left(rs!Field2) <> "AC" 的“编译错误:扩充不是可选的”。谢谢。
Public Function FormatTextFile()
Dim db As Database
Dim rs, rsa As Recordset
Dim cCount as double
Set db = CurrentDb
Set rs = db.OpenRecordset("Flow_20160316")
cCount = 1
Do
Do While rs!Field1 = "123" And Left(rs!Field2, 2) = "AC"
Debug.Print "Code Skipped on Record " & cCount
cCount = cCOunt + 1
rs.MoveNext
Loop Until rs!Field1 = "123" And Left(rs!Field2) <> "AC"
Select Case rs!Field1
Case Is = "123"
'Code continues and writes some variables to tables'
Case else
Debug.Print "Code Skipped on Record " & cCount
End select
cCount = cCOunt + 1
rs.MoveNext
Loop until rs.eof
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
End Function
【问题讨论】:
-
这一行确实编译。我认为您已经过多地简化了代码。 minimal reproducible example ==> 可验证
-
顺便说一句,
Case Is = "123"是一种非常非正统的写法Case "123":) -
抱歉,这是之前无法编译的行。我已经修改了我的原件以显示无法编译到
Loop Until部分的行。感谢Case is = ""部分的 cmets。我会尽快调查=) -
我还修改了主要段落以显示数据是从“链接”文本文件中提取的。不确定这是否会有所不同。
标签: ms-access vba do-while data-import do-loops