
Accessプロたちへ
(質問)
1フィールドにスペースで区切られた文字が4つ存在します。
この1フィールドをスペース区切りで4つに分割する方法を教えて下さい。
(質問詳細)
1)dir /s の出力結果のファイルがあります。
2)そのデータをスペース区切りなしでインポートします。
3)2フィール目が、以下のようになります。
2008/12/12 12:29 221 aaa.txt
2008/12/14 13:56 235 bbb.txt
2008/12/11 12:30 151 ccc.txt
2008/12/11 12:30 151 ddd.txt
2008/12/11 12:30 151 eee.txt
2008/12/11 12:30 151 fff.txt
2008/12/11 12:30 151 ggg.txt
これをアクセスで取り込んで、以下のようにしたいのです。
フィールド1 フィールド2 フィールド3 フィールド4
2008/12/12 12:29 221 aaa.txt
2行目以降も同様です。
尚、上記のことを教えてもらって、最終的に、やりたいことは、
2008/12/11のファイルの合計サイズを導きだすことです。
上記の方法でなくても特定の日のファイルの合計サイズを
今のままで出すことができるのであれば、そちらで教えていただいても
構いません。
よろしくお願いします。
因みに、
最初からスペース区切りでインポートすればよいではないかと思われるかもしれませんが、それができない状態なのです。
環境:Access2003
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
標準モジュールに以下のコードを作成します。
Option Explicit
Dim RegExp
Function Part(ByVal Data, ByVal Idx As Long)
Dim Ary
If IsEmpty(RegExp) Then
Set RegExp = CreateObject("VBScript.RegExp")
RegExp.Global = True
RegExp.Pattern = "\s+"
End If
Ary = Split(RegExp.Replace(Data, vbTab), vbTab)
Select Case Idx
Case 0, 1: Part = CDate(Ary(Idx))
Case 2: Part = CLng(Ary(2))
Case 3: Part = Ary(3)
End Select
End Function
SQLは以下の通り。
SELECT Part(フィールド,0) AS 日付,Part(フィールド,1) AS 時刻,
Part(フィールド,2) AS サイズ,Part(フィールド,3) AS 名前 FROM ~
区切り文字がタブだったり、各行の文字数が不特定な場合でも使用
できます。また、VBのSplitと異なり、連続した区切り文字は1文字
として扱うので、区切り文字数を気にする必要もありません。
尚、日付と時刻は日付型、サイズは長整数、名前は文字型です。
但し、項目の置かれる文字位置が絶対である場合はMidを使う方が
高速です。
No.2
- 回答日時:
あ!、CIntじゃ桁あふれするでしょうね CLngですね
でも、CLngでも2GBくらいまでしか出せません
巨大ファイルを扱うなら数値変換の型は考えたほうが良いでしょうね
追記
DIR /Sでは<DIR>以外にもルート名や余白もあるのでこれらを除く方法を考えないと数値変換でエラーを起こすでしょう
そのへんの考慮も
No.1
- 回答日時:
別にAccessのプロじゃなくても分かると思いますが・・・
それに丸投げは禁止されてますよ
なのでヒントだけ
Dirコマンドは固定長になっているはずなので
Mid関数で切れば出来るでしょう
SELECT Mid(LIST_REC,1,10) AS 作成日,
Mid(LIST_REC,13,5) AS 作成時刻,
CInt(Mid(LIST_REC,19,17)) AS サイズ,
Mid(LIST_REC,37) AS ファイル名
FROM DIR_LIST
WHERE Mid(LIST_REC,5,1) = "/"
AND Mid(LIST_REC,22,5) <> "DIR"
後は作成日を選択するかグループ化してSumなりCountで加工してね
尚、Accessで検証してませんのでSQLにエラーがあるかもしれません
早速の回答ありがとうございます。
丸投げ禁止だったんですね。
ルール違反でした。以後、気をつけます。
素人なので、多分時間かかると思いますが
試してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
アクセスのクエリでSplit関数は使えないのですか
Access(アクセス)
-
特定の文字列で列を区切るには?
その他(データベース)
-
ACCESS 一つのフィールドに複数レコードの値をセットしたい
その他(データベース)
-
-
4
ACCESSのクエリで空白以降を別のフィールドに移動
その他(データベース)
-
5
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
6
ACCESS クエリで、グループ化したものをカウントしたい
その他(データベース)
-
7
Access クエリで連結する文字の間に空白を入力
その他(データベース)
-
8
Access で 特定の文字の個数をしりたい
Access(アクセス)
-
9
MS-Accessのレコード内のフィールドを分割し、複数のレコードにする方法について教えてください。
Access(アクセス)
-
10
アクセスで教えてください。 縦持ちデータを横持ちデータに変更したいです。 項目数が多くてクロス集計で
Access(アクセス)
-
11
ACCESS クエリの抽出条件に他のテーブルの値を参照する方法
Access(アクセス)
-
12
accessでクエリをExcelにエクスポートする時にファイル名に日付を追加したい
Access(アクセス)
-
13
Accessのテーブルを既存のExcelファイルへエクスポートしたいんですが
Access(アクセス)
-
14
Accessの桁区切りについて教えてください。
Access(アクセス)
-
15
アクセスの初心者の質問です(空白の場合に他のフィールドを表示させたい。)
Access(アクセス)
-
16
アクセスで追加した項目に全て同じ値を一発で入れたい
Access(アクセス)
-
17
Access テーブルを分割してエクスポートしたい
Access(アクセス)
-
18
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
19
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
20
アクセス:既定値に土日含まず3日後を指定したい
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSでの文字数カウント
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
エクセルデータをワードで差し...
-
実行時エラー '3464': 抽出条件...
-
クエリーで、全角混じりデータ...
-
「Access2007」でレポートが作...
-
ACCESSでフィールド名の変更(...
-
Acsess アクセス のクエリで...
-
sqlserverにはグループ集計のfi...
-
Access クエリの編集について
-
Word差し込み印刷のハイフン(...
-
ACCESSのデータを単一化したい
-
クエリで割り算する方法を教え...
-
datetime型のUpdate文
-
奇数・偶数ページごとに差し込...
-
WORD2003でドロップダウン...
-
エクセルのピポットテーブルで...
-
ACCESSで条件によってフォーム...
-
ワードファイルの文字数制限ロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
差込印刷での全角表示について...
-
エクセルにおける「フィールド...
-
Acsess アクセス のクエリで...
-
エクセルデータをワードで差し...
-
クエリで割り算する方法を教え...
-
ACCESSで条件によってフォーム...
-
ACCESSのデータに自動で半角ス...
-
Word差し込み印刷のハイフン(...
-
「Access2007」でレポートが作...
-
フィールドの更新がない
-
Accessのハイパーリンクをクリ...
-
カレントフィールドの、青い枠...
-
ACCESS 重複データを1...
-
varchar型の入力できる最大文字...
-
実行時エラー '3464': 抽出条件...
-
ACCESSで複数の写真ファイルを...
-
Access クエリの編集について
-
ワードファイルの文字数制限ロ...
-
ACCESSでフィールド名の変更(...
-
エクセルのピポットテーブルで...
おすすめ情報