大文字と小文字を区別して比較するには、StrComp()
with 関数を使用できます。vbBinaryCompare
以下は、イミディエイト ウィンドウの例で、どのように機能するかを示してStrComp()
います。詳細については、アクセスのヘルプ トピックを参照してください。
? StrComp("a", "A", vbBinaryCompare)
1
? StrComp("a", "A",vbTextCompare)
0
StrComp()
最初の 2 つの引数が等しいと評価される場合は 0 を返し、等しくない場合は 1 または -1 を返し、いずれかの引数が Null の場合は Null を返します。
クエリで関数を使用するにはvbBinaryCompare
、名前ではなく定数の値 (0) を指定します。
SELECT VCode
FROM VirtualMaster
WHERE StrComp(VirtualMonitorName, "Vm1", 0) = 0;
このアプローチは、新しい Access データベース エンジン ("ACE") ドライバーを使用している場合、他のアプリケーションからのクエリにも利用できます。たとえば、次の C# コード
string myConnectionString =
@"Driver={Microsoft Access Driver (*.mdb, *.accdb)};" +
@"Dbq=C:\Users\Public\Database1.accdb;";
using (OdbcConnection con = new OdbcConnection(myConnectionString))
{
con.Open();
using (var cmd = new OdbcCommand())
{
cmd.Connection = con;
cmd.CommandText =
"SELECT COUNT(*) AS n FROM [VirtualMaster] " +
"WHERE StrComp([VirtualMonitorName],?,?) = 0";
cmd.Parameters.AddWithValue("?", "Vm1");
cmd.Parameters.Add("?", OdbcType.Int);
var vbCompareOptions = new Dictionary<string, int>()
{
{"vbBinaryCompare", 0},
{"vbTextCompare", 1}
};
string currentOption = "";
currentOption = "vbBinaryCompare";
cmd.Parameters[1].Value = vbCompareOptions[currentOption];
Console.WriteLine(
"{0} found {1} record(s)",
currentOption,
Convert.ToInt32(cmd.ExecuteScalar()));
currentOption = "vbTextCompare";
cmd.Parameters[1].Value = vbCompareOptions[currentOption];
Console.WriteLine(
"{0} found {1} record(s)",
currentOption,
Convert.ToInt32(cmd.ExecuteScalar()));
}
}
生産する
vbBinaryCompare found 1 record(s)
vbTextCompare found 2 record(s)