アクセスの質問です。

早く終了するのでポイントを分散させません!

アクセスのデータの中に、A:B:C:Dというように「:」で区切られたデータが1つのカラムの中に入っています。
クエリで、最初の:の前だけの文字列を抜き出す事はできますでしょうか?

最初の:と、二番目の:の間にある文字列を抜き出す関数のような物もありましたら、お教えください。

A:B:C:D ⇒ A
A:B:C:D ⇒ B

よろしく、お願いいたします。

回答の条件
  • 1人5回まで
  • 登録:2011/11/25 20:36:25
  • 終了:2011/11/25 21:38:45

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492011/11/25 20:53:55

ポイント100pt

まずは標準モジュールに下記の自作関数を書き込みます

Function MySplit(t As String, s As String, i As Integer) As String
    Dim sArray() As String
    sArray = Split(t, s)
    If i <= UBound(sArray) Then
        MySplit = sArray(i)
    Else
        MySplit = ""
    End If
End Function

クエリでは次のようにして使います

SELECT MySplit(カラム名,":",0), MySplit(カラム名,":",1), MySplit(カラム名,":",2), MySplit(カラム名,":",3)
FROM テーブル;

":" がセパレータ(分割する文字)
数値はゼロ始まりで何番目のものを取り出すかです
数値に該当する箇所にデータが無い場合は空白を返すようになっています
 
無料質問しておられたので、作っていたのですがキャンセルされたのですね・・・
ちょっと戸惑いました(笑)

他6件のコメントを見る
id:windofjuly

先ほどのコメントで(1)のテストはOKだったということで話をすすめていいですか?
 
手元に2007が無いので、これは推測になりますが、
SQLビューで下記のSQLを貼り付けて実行してみてください
Shouhin.[ と ] が入ってしまったためにエラーになってるのだと推測しました

SELECT MySplit(tablevalue,":",0) AS1, MySplit(tablevalue,":",1), MySplit(tablevalue,":",2) AS3, MySplit(tablevalue,":",3) AS4
FROM Shouhin;
2011/11/25 22:02:57
id:windofjuly

返信の順番間違いました

> MySplitという名前で保存しております

それは標準モジュールではなく、
クラスモジュールとして作成してしまっているのではないでしょうか?
標準モジュールにはModule1という名前(数字は連番)が勝手に付くはずなんですが・・・

2011/11/25 22:11:44

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません