2012-01-30 105 views
0

我正在嘗試兩次遍歷記錄集。一次寫入所有非零結果,然後再次運行以寫入特定列中具有零的所有行,以使所有值爲0的行位於文件末尾。但是,由於.EOF在第一次運行時觸發,所以當我嘗試再次運行時仍然爲「真」。什麼是最好的方式來貫穿它兩次?如何遍歷記錄集兩次?

With CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot) 

     Do Until .EOF 
      If .Fields(2) = 0 Then 
      Else 

       strCSV = "" 
       For x = 0 To .Fields.Count - 1 
         'No Qualifier 
         strCSV = strCSV & strDelimiter & Nz(.Fields(x), vbNullString) 

       Next x 

       'Eliminate Back to back strQualifiers or Qualifiers if changed 
       strCSV = Replace(strCSV, strQualifier & strQualifier, "") 

       strPrint = Mid(strCSV, Len(strDelimiter) + 1) 
       Print #intOpenFile, strPrint 
      End If 
       .MoveNext 
      Loop 

      Do Until .EOF 
      If Nz(.Fields(2), vbNullString) = 0 Then 

       strCSV = "" 
       For x = 0 To .Fields.Count - 1 
         'No Qualifier 
         strCSV = strCSV & strDelimiter & Nz(.Fields(x), vbNullString) 

       Next x 

       'Eliminate Back to back strQualifiers or Qualifiers if changed 
       strCSV = Replace(strCSV, strQualifier & strQualifier, "") 

       strPrint = Mid(strCSV, Len(strDelimiter) + 1) 
       Print #intOpenFile, strPrint 
      End If 
       .MoveNext 
      Loop 

    End With 

回答

1

要回答你的問題,只是用.MoveFirst之間你的兩個跑步。但@Remou提供了一個很好的觀點,你可以通過在你的SQL中加入一個ORDER BY來避免這種複雜性(+1)

+0

這工作謝謝你。不,訂單不會對我有幫助。該表本身是使用asc語句的順序創建的,但我需要將值設置爲底部的零的asc。我不知道有這樣做的方法。僅供參考,它需要按照我剛剛解釋的順序進行分層,以便在其顯示的軟件中正確分層。反正,這對我所做的工作非常有用,謝謝。 (不管有多奇怪,我正在做的是大聲笑)。 – Bryan 2012-01-30 20:47:57

2

你似乎缺少一個關係型數據庫的角度來看,這是它沒有一個比其他命令你強加:

sSQL = "SELECT * FROM MyTable ORDER BY MyNumField DESC" 
Set QDF = CurrentDB.CreateQueryDef ("DatOut", sSQL) 

DoCmd.TransferText acExportDelim,,"DatOut","C:\Docs\Datout.csv" 
+0

我可能是錯的,但我不認爲我錯過了關係數據庫的一點,它只是我需要這樣做的原因不包括在我的問題中。實質上,我需要在生成的文件中的行從1開始並且向上以及文件末尾的所有零進行排序。它必須是這樣才能在程序中正確分層,我正在創建的文件被放入。不幸的是,我無法使用DoCmd.TransferText,因爲它會將我的小數截斷爲2而不是6+,就像它在數據庫中一樣。 – Bryan 2012-01-30 20:55:27

+0

如果您想查看一個較舊的問題,我在嘗試使DoCmd.TransferText命令工作時詢問:http://stackoverflow.com/questions/6154812/how-do-i-keep-the-necessary-小數位 - 當使用該docmd-transfertext-com – Bryan 2012-01-30 20:56:11