アクセス初心者です。クエリに関してです。


あるテーブルの、あるカラムにある、「:」で区切られた文字列を
:で分けるクエリを組んでいます。

【クエリ】
SELECT MySplit(tablevalue,":",0) AS 式1, MySplit(tablevalue,":",1) AS 式2, MySplit(tablevalue,":",2) AS 式3, MySplit(tablevalue,":",3) AS 式4
FROM Shouhin;

【Module1】
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

このクエリは成功しておりますが、実はこのクエリの結果に、テーブルの中の
他のカラムの文字列を、そのまま表示させたく、デザインビューで
普通に追加すると、『集計関数の一部として指定された式'~'を含んでいないクエ
リを実行しようとしました』となってしまい、エラーとなってしまいます。
なぜでしょうか?
また、解決策をお教えください。

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

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/11/29 14:59:48
  • 終了:2011/11/29 16:34:39

ベストアンサー

id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492011/11/29 16:08:58

ポイント100pt

クエリビューに切り替えると、Accessが余計なおせっかいで、
また勝手にいらない文字を追加してしまったりするので、
引き続きSQLビューで書いてください

以下、横に長くなるので適当に改行してます
保存するとAccessがおせっかいにも横一列にしてしまいますが、
それは気にする必要ないです

さて、もっとも手抜きな例(分割前のtablevalueまで出力されちゃいます)

SELECT *
    , MySplit(tablevalue,":",0) AS1
    , MySplit(tablevalue,":",1) AS2
    , MySplit(tablevalue,":",2) AS3
    , MySplit(tablevalue,":",3) AS4
FROM Shouhin;

必要な列を指定する例(必要なカラムの名前を適当にいれてやれば良いです)

SELECT カラム名1
    , カラム名2
    , MySplit(tablevalue,":",0) AS1
    , MySplit(tablevalue,":",1) AS2
    , MySplit(tablevalue,":",2) AS3
    , MySplit(tablevalue,":",3) AS4
    , カラム名3
    , カラム名4
FROM Shouhin;
id:martytaka

すげえ!!!
ありがとうございました!!
本当に感謝です!

2011/11/29 16:30:04

その他の回答(1件)

id:kodairabase No.1

kodairabase回答回数661ベストアンサー獲得回数802011/11/29 15:22:52

クエリ式にはクエリで追加してください。
デザインビューで追加するとおかしなことになります。

id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492011/11/29 16:08:58ここでベストアンサー

ポイント100pt

クエリビューに切り替えると、Accessが余計なおせっかいで、
また勝手にいらない文字を追加してしまったりするので、
引き続きSQLビューで書いてください

以下、横に長くなるので適当に改行してます
保存するとAccessがおせっかいにも横一列にしてしまいますが、
それは気にする必要ないです

さて、もっとも手抜きな例(分割前のtablevalueまで出力されちゃいます)

SELECT *
    , MySplit(tablevalue,":",0) AS1
    , MySplit(tablevalue,":",1) AS2
    , MySplit(tablevalue,":",2) AS3
    , MySplit(tablevalue,":",3) AS4
FROM Shouhin;

必要な列を指定する例(必要なカラムの名前を適当にいれてやれば良いです)

SELECT カラム名1
    , カラム名2
    , MySplit(tablevalue,":",0) AS1
    , MySplit(tablevalue,":",1) AS2
    , MySplit(tablevalue,":",2) AS3
    , MySplit(tablevalue,":",3) AS4
    , カラム名3
    , カラム名4
FROM Shouhin;
id:martytaka

すげえ!!!
ありがとうございました!!
本当に感謝です!

2011/11/29 16:30:04

コメントはまだありません

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

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

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

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