- ベストアンサー
Access2000上でのCStrコマンドの記述に関する質問です
いつもお世話になっております。 Access2000で、あるデータをCSVファイルに変換しようと思って、各方面のご意見により、VBAで下記の通り記述し、実行致しました。 変換するフィールドの数が少なければ問題なく実行できますが、そのフィールド数が34種類以上になれば、「行継続文字( _ )を使いすぎています」との警告と共にエラーが発生します(なお、今回実行したいのは34種類のフィールドです)。 「CStr(adoRs.Fields("フィールド1").Value) ~ (adoRs.Fields("フィールド34").Value) 」と、1行で記述する等、何か良い方法がないものかと悩んでおります。 もし、解決方法をご存じの方がおられれば、その方法を教えて頂きたく、宜しくお願い致します。 ’--(ご参考)---------------------------------------------------- Dim adoRs As New ADODB.Recordset Dim strsql As String Dim strFile As String strsql = "SELECT フィールド1,フィールド2, ・・・・フィールド34" & _ "FROM ○○ファイル ORDER BY フィールド1" adoRs.Open strsql, CurrentProject.Connection strFile = "C:\AAAデータファイル.CSV" Open strFile For Output Access Write As #1 Do Until adoRs.EOF Write #1, _ CStr(adoRs.Fields("フィールド1").Value), _ CStr(adoRs.Fields("フィールド2").Value), _ ・ ・ ・ CStr(adoRs.Fields("フィールド34").Value) adoRs.MoveNext Loop adoRs.Close Close #1 ’---------------------------------------------------------
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
継続文字を使わなければ良いだけです。 Dim 番号 As Long strsql = "SELECT " For 番号 = 1 To 34 If 番号 > 1 Then strsql = strsql & "," strsql = strsql & "フィールド" & CStr(番号) Next strsql = strsql & " FROM ○○ファイル ORDER BY フィールド1" == 中略 == Do Until adoRs.EOF For 番号 = 0 To 32 Write #1, CStr(adoRs.Fields(番号).Value), Next Write #1, CStr(adoRs.Fields(番号).Value) adoRs.MoveNext Loop
その他の回答 (1)
- AKARI0418
- ベストアンサー率67% (112/166)
Dim i As Long Dim strBuilder as String Open strFile For Output Access Write As #1 Do Until adoRs.EOF strBuilder = vbnullstring for i = 0 to adoRs.Fields.Count -1 strBuilder = strBuilder & CStr(adoRs.Fields(i).Value) if i <> adoRs.Fields.Count -1 then strBuilder = strBuilder & "," end if next i Write #1, strBuilder adoRs.MoveNext Loop こんな感じですね、テストしてないので動くか、わからないですごめんなさい。 adoRs.Fields.Countこのプロパティがあったかどうか・・・。 adoRs.Fields(i).Valueで取れない場合は、 adoRs.Fields("フィールド" & strconv(i,vbwide)).Value とかにしてみてください。
補足
返事が遅くなりました。 この考え方を参考にして、無事解決出来ました。 ありがとうございました。
補足
返事が遅くなりました。 この考え方を参考にして、無事解決出来ました。 ありがとうございました