掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TADOTableでLocateを使ってバイナリ型を含む項目検索をするには? (ID:44788)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
DBをParadox7からAccess2010に移行したため、Accessの仕様である 大文字・小文字、半角・全角、ひらがな・カタカナを区別しないことで 困っています。 登録されているデータの中で影響があるのは、半角と全角の区別が 出来ないデータについてです。 (例) <Table1> Key1 Key2 Key3 データ1 データ2 1 1 ABC aaa bbb 1 1 ABc ddd eee 1 1 Abc ddd eee <Table2> Key1 Key2 Key3 データ1 データ2 1 1 ABC aaa bbb 1 1 ABc ddd eee 1 1 Abc ddd eee 上記のようなデータ構成のテーブルを読むため、TADOTableのLocate を使用して、そのキーが存在するかどうかを判別しています 例のテーブルは、「Key3」をテキスト型で持っていたのですが、 Accessのクエリで以下のALTER文を実行して、大文字・小文字を 区別できるバイナリ型に項目の型を変更しました。 ALTER TABLE Table1 ALTER COLUMN Key3 VARBINARY(6); ALTER TABLE Table2 ALTER COLUMN Key3 VARBINARY(6); この対応で登録は可能となったのですが、そのレコードを特定するために Locateを使用している箇所で以下のエラーが発生します。 ret := Table2.Locate('Key1;Key2,Key3', VarArrayOf(Table1['Key1'],Table1['Key2'],Table1['Key3']]), [loCaseInsensitive]); エラーメッセージ: 「複数ステップの OLE DB の操作でエラーが発生しました。 各OLE DBの状態の値を確認してください。作業は終了しませんでした。」 VarArrayOfで囲まれた「Table1['Key3']」の箇所を以下のように変更してもエラーが発生しました。 Table1['Key3'].Values →エラーメッセージ「バリアントに対する演算が正しくありません」が表示される。 Table1.FieldByName('Key3').Value →エラーメッセージ「複数ステップの OLE DB の操作でエラーが発生しました。」が表示される。 TADOTableでバイナリ型を含むキー項目に対して、Locateでエラーなく処理するには どのようにすればよろしいでしょうか? 以上、よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.