Search

  毎日にもっと楽~を! BLOG Tokyo

2007年5月11日

【ACCESS】レコードごとのフォルダを作成

職員番号別にフォルダを作成し、その個人情報をそこに保存したい場合は、少なくない。まさか、手入力でフォルダ作成、名前の変更、個人情報をエクセルにエクスポートして、その行をコピーして、テキストファイルにタブ区切りで保存するの?

全職員分ならまだしも、該当者のみとか?該当者は1300人中の900人ですなんて?いやいや、力任せに2連チャンで徹夜してみてもいいんだけど、その翌日に該当者の範囲が変わって1200人になりましたなんていわれた日にはちょっとムカッとくるかも知れません。課長には夕飯を食べる暇があるなら帰れと言われるし。。。(俺に払える残業代はないってことね トホホ)そこで、やっぱり少しだけ頭を使ってバッチ処理(一括処理)を使わざるを得ないんですねぇ。今後はもっと頭を使わないと飲みにも行けなくなくかもなぁ。がんばろっと。

出力するデータ型が列ごとに異なると型エラーが出るので注意が必要だ。

個人番号ごとにフォルダをつくる


Sub makeCsv()

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
Dim count As Integer
Dim id As String
Dim csv

rs.Open "qry_kyoudou", cn, adOpenKeyset, adLockOptimistic 'qry_kyoudouクエリを開く

Do Until rs.EOF = True

count = count + 1 '1件目の取り扱い

If id <> rs!個人番号 Then 'IDが個人番号と異なれば、テキストファイルに書き出す処理(グループごとに書き出し)

If count <> 1 Then '1件目でなければ

filename = "c:\test\" & id & "\kyodo_jutaku.txt" 'c直下のID番号と同名のフォルダにkyodo_jutaku.txtを作成
'Debug.Print csv
Open filename For Output As #1 '定型文
Print #1, csv 'データの書き込み
Close #1
csv = "" '変数の初期化
End If

id = rs!個人番号 'レコードの個人番号が前のレコード一緒なら、idにその個人番号を格納→違う個人番号がくるまでデータ
'を変数csvに格納する処理へ(ENDIFのあと)
End If

csv = csv + rs!研究区分 & Chr(9) & rs!研究者名 & Chr(9) & rs!研究者名英語 & Chr(9) & rs!相手先研究機関 & Chr(9) & _
rs!相手先研究機関英語 & Chr(9) & rs!研究テーマ & Chr(9) & rs!研究テーマ英語 & Chr(9) & _
rs!研究開始年度 & Chr(9) & rs!研究終了年度 & Chr(9) & rs!受入金額 & Chr(9) & rs!キーワード & Chr(9) & _
rs!キーワード英語 & Chr(9) & _
rs!科研費分類番号 & Chr(9) & rs!ReaD分類コード1 & Chr(9) & rs!Read分類コード2 & Chr(9) & _
rs!Read分類コード3 & Chr(9) & rs!参考URL & Chr(9) & rs!メモ & Chr(9) & rs!利用範囲 & Chr(13) + Chr(10)

'Chr(9) tab 最後に改行を入れる→Chr(13) + Chr(10)

rs.MoveNext '次の行へ

Loop

rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing

End Sub



Bookmark and Share


編集長のおすすめの一冊!2010

comments

comment form

(BLOG Tokyo にはじめてコメントされる場合、不適切なコメントを防止するため、掲載前に管理者が内容を確認しています。適切なコメントと判断した場合コメントは直ちに表示されますので、再度コメントを投稿する必要はありません。)

comment form