SQLServerとMS-Accessと互換性のあるクエリを作成する必要があります。
問題は、SQLServerで数値をvarcharに変換しようとすることです。SQL Serverでは、次のように変換できます。MSAccessではconvert(varchar(100), 5)
:CStr(5)
。
両方のデータベースでこれを互換性のあるものにする可能性はありますか?
SQLServerとMS-Accessと互換性のあるクエリを作成する必要があります。
問題は、SQLServerで数値をvarcharに変換しようとすることです。SQL Serverでは、次のように変換できます。MSAccessではconvert(varchar(100), 5)
:CStr(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()
。
varcharで数値を変換できるので、次のようになります。
select format(Adress_ID,'0') ... next code
このコードは、AccessとSQLServerの両方から変換されます