プロが教えるわが家の防犯対策術!

XP Access2002です。

ランキング形式のテーブルから、クエリを作成しています。

クエリでの表示は A1 となっているのですが、それにハイフン「-」を入れて、A-1としたいです。
「A1」は、テーブル名:「ランク」内のフィールド名:「順位」

SQLビューで
insert(ランク!順位,2,0,'-') AS ランキング
としたのですが、結果は、未定義関数と出てしまいます。
InsertをReplaceに変更したら、今度はアラーとは出ませんが、表示画面では、エラー表示になってしまいます。

構文が違うのでしょうか?
SQLを使っていて、『未定義』とアラートが出たのは初めてですので、戸惑っています。

A 回答 (2件)

Excel、或いはその他のプログラミングなどをされた経験がある方でしょうか。



> SQLを使っていて、『未定義』とアラートが出たのは初めてですので、戸惑っています。

Accessには、Insertという関数がない(=定義されていない)ため、ご質問のエラーが
発生しています。


また、Excelのワークシート関数のReplaceとAccessのReplace関数とでは、引数の
内容が異なります。

【Excel】
REPLACE(文字列, 開始位置, 文字数, 置換文字列)
http://office.microsoft.com/ja-jp/excel/HP100625 …
→位置と文字数を指定

【Access】
Replace(文字列, 検索文字列, 置換文字列, (開始位置, 文字数, 比較モード))
http://office.microsoft.com/ja-jp/access/HA01228 …
→置換前の文字と置換後の文字を指定(おおまかには)

第4引数まで指定した場合、Excelの方では第4引数には文字列型のデータが
指定されますが、Accessの方では数値型が要求されますので、恐らくそこで
型不一致によるエラーが発生しているのではないかと推測します。

念のため、上記の引数をご確認の上、式を見直してみてください。


・・・ただ、AccessのReplace関数では、今回の目的は達せられないのではないかと
いう気がします(汗)
(但し詳細未検討)

Insert関数の第2引数に「2」を指定していることからすると、恐らくハイフンは常に
2番目に追加、ということだと思いますので、Left関数とMid関数を組み合わせでも
いけるかと思いますので、参考まで:

Left(ランク!順位, 1) & "-" & Mid(ランク!順位, 2) As ランキング

※Excelのワークシートと違い、「&」の前後には半角スペースが必須ですので、
  合わせてご注意下さい。
    • good
    • 0
この回答へのお礼

>Accessには、Insertという関数がない(=定義されていない)
そうだったのですか、出来ない筈ですね。
>また、Excelのワークシート関数のReplaceとAccessのReplace関数とでは、引数の内容が異なります。

>Left(ランク!順位, 1) & "-" & Mid(ランク!順位, 2) As ランキング
ありがとうございます。出来ました。

>Excelのワークシートと違い、「&」の前後には半角スペースが必須
Excelをよく使うため、どうしても同じ感覚でいってしまいます。
エラーが出てから、式を継ぎ接ぎして対処していく癖があるので、気をつけたいです。

感謝します。

お礼日時:2010/01/27 09:46

Rplace関数では指定や置換する文字列は


  "文字列"
のように囲みます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!