7

SQLServerとMS-Accessと互換性のあるクエリを作成する必要があります。

問題は、SQLServerで数値をvarcharに変換しようとすることです。SQL Serverでは、次のように変換できます。MSAccessではconvert(varchar(100), 5)CStr(5)

両方のデータベースでこれを互換性のあるものにする可能性はありますか?

4

2 に答える 2

5

CStr()SQL Serverでは、変換を行うと呼ばれるユーザー定義のスカラー関数を記述できます。

組み込みルーチンには互換性がありません。

残念ながら、これは実際には機能しません。関数のすべてにスキーマ名のプレフィックスを付ける必要があるためです。だから、あなたは持つことができます:

create function cstr(@val int)
returns varchar(255) as
begin return(cast(@val as varchar(255))) end;

しかし、あなたはそれを次のように呼ぶ必要があります:

select dbo.cstr(4);

値が列にある場合は、各データベースのテーブルに、ビューで変換を行うビューを作成することを検討してください。

VBをAccessとSQLServerの両方で動作させるには、Accessをあきらめて、実際のデータベースを使用するだけです。ああ、それは解決策ではないと思います;)データベースのタイプを識別し、データベースごとに異なるコードを用意する必要があります。ビューを使用して醜さの一部を非表示にすることで、これを最小限に抑えることができます。

一部のAccess関数を含むように関数のレパートリーを拡張したSQLServer2012に切り替えると便利な場合があります。しかし、そうではありませんcstr()

于 2013-03-26T14:32:31.000 に答える
4

varcharで数値を変換できるので、次のようになります。

  select format(Adress_ID,'0') ... next code

このコードは、AccessとSQLServerの両方から変換されます

于 2013-03-26T16:05:49.363 に答える