フィールドのデータ型で検索結果に差が出る
- クエリのパラメータ検索「複数キー入力」において、フィールドのデータ型の違いで検索ができない状態になる問題が発生しています。
- 特に、「メモ形」のフィールドを持つデータベースでは検索ができない現象が発生しています。
- データベースの作り方に問題がある可能性もありますが、情報での検索ができるようにすることで検索効率が向上し、データベースの活用がより有効になると考えています。
- ベストアンサー
フィールドのデータ型で検索結果に差が出る
クエリのパラメータ検索「複数キー入力」に於いて、フィールドのデータ型の違いで、検索ができない状態になる。スキルが低く現状突破ができていません。ご面倒をお掛けしますが、アドバイスを宜しくお願い致します。 [気になっていること] フィールドの「データ形」で「メモ形」だけ検索できない現象がでます。「メモ形」を持つデータベースは同じ結果「検索できない」になりました。勿論、私のデータベースの作り方に問題があるかもしれませんが。 [こだわりの背景] 対象のデータベースは作り始めて歴史が長く「全873レコード」、作り始めの頃「習い始めの時期」のタイトル付けがプアであり、「情報」での検索が可能になれば、検索効率が向上し更に有効に活用できると考えています。 [お願い・・・(反省)。] 設定等の内容にて以下記載の通りですが、アドバイスをお願いできればと思います。式に付きましては、このサイトで親身にご対応頂きましたが、質問時にデータ型の情報は詳しくお伝えしていませんでした。反省しております。 1,データベースオブジェクト「簡略」 ・テーブル:世界情報 ・フォーム:世界情報フォーム ・フィールド名:情報 フィールドサイズ:メモ ・フォールド名:タイトル フィールドサイズ:200 ・世界情報クエリ1,2,3,4,「パラメーター(スペースで区切り複数条件設定可)」 2,フィールド名「タイトル(テキスト形)」を検索フィールドに指定「下記の式」した時は問題なく検索結果を返します。 式1: Eval(BuildCriteria("'" & [タイトル] & "'",10,"*" & Replace([表題(一文字可)]," ","* And *") & "*")) 抽出条件:-1 式1: Eval(BuildCriteria("'" & [タイトル] & "'",10,"*" & Replace([表題(一文字可)]," ","* Or *") & "*")) 抽出条件:-1 3,フィールド名「情報(メモ形)」を検索フィールドに指定「下記の式」した時は「式が正しく入力されていないか、複雑すぎるため評価できません。たとえば、数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にしてください。」と返します。 式1: Eval(BuildCriteria("'" & [情報] & "'",10,"*" & Replace([内容(一文字可)]," ","* And *") & "*")) 抽出条件:-1 式1: Eval(BuildCriteria("'" & [情報] & "'",10,"*" & Replace([内容(一文字可)]," ","* Or *") & "*")) 抽出条件:-1 4,その他 Eval(BuildCriteria("'" & [情報] & "'",10,"*" & Replace([内容(一文字可)]," ","* And *") & "*"))の式をクエリに記載すると先頭に「式1: 」が勝手に付いてしまいますが、動作に問題はないでしょうか。 以上ですが、宜しくお願いします。
- eokwave
- お礼率65% (395/606)
- Access(アクセス)
- 回答数5
- ありがとう数5
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>フィールドのデータ型の違いで、検索ができない状態になる。 フィールドの「データ形」で「メモ形」だけ検索できない現象がでます。 「メモ形」を持つデータベースは同じ結果「検索できない」になりました。 勿論、私のデータベースの作り方に問題があるかもしれませんが。 ★「フィールドのデータ型」はテーブルのプロパティーです。 同種の「メモ形」のあるファイル同様の不都合の様で今回の提言をしました。 --------------------------------------------------------------- >テキストボックス検索とメモ型検索を別々の方法にて、 設定内容を変えて使おうかなと思っています。 「お恥ずかしい話ですが、以前(数年前)、 大手の通販ネットの個人出店業者から2010を購入 (MSは販売終了)の経験があります。 Office○○○○PLUS名のディスクが送られてきて、 結局のところ電話インストールになりMSから断られました それ以降、2010や2013の購入する気も失せてしまっています。 そんな事情で確認する術が有りません。どうしても駄目なら、 メモ形フィールドは「Like "*" & [ 情報検索 ] & "*"」で 対処しようかと考えて・・・います。 ★テーブルの問題をクエリで解消することは無理です。 Access2010は既に「短いテキスト型」と「長いテキスト型」に なっています。 Accessのアップデートも必要ありませんテーブルのフィールドの プロパティで確認するだけです。 不都合は川上で手を打つのが効率的です 添付は、左辺の商品マスタを右クリックから開き、 商品詳細メモの右端をクリックでデータ型のリストです 「メモ形」がリストにありますか、数回のマウス操作です。 是非お試しください 尚、Office365はレンタル制になり導入し易くなりました。 (1.3万円/年で5台のPCで使用可能) 私もMicrosoftにはサポート切れ、直近では日本の元号変更の対応の遅れ等 色々気に入らぬ事もありますが 使い易いソフトと思います。最近ではフォーム、レポート設計で 表形式、単票形式が追加され、前後左右のボック間で手を繋いだ一つの フィールドの大きさを変えると他のボックスも移動するため ボックスの重なりが無くなった。 過去の蟠りを捨てましょう
その他の回答 (4)
- kkkkkm
- ベストアンサー率65% (1618/2457)
> 対処の方法は無いのでしょうか 原因がデータが入ってない等なのでしょうか? 原因ではないのに対処しても徒労に終わると思いますが、私なら検索値がない場合には検索をしない(クエリを実行させない)という処理をします。 アクセスの検索機能でも検索する文字列がない場合には検索ができないと思いますよ。 [内容(一文字可)]の規定値に*を入れておけば開いたときに検索値がないという事はなくすべて検索という結果になりますが、すべて検索しても意味はないと思います。また、開いた後に検索値を削除すれば結果はエラーにります。
お礼
ありがとうございます。「原因ではないのに対処しても徒労に終わる」と実感しました。追加でデータベスを作成する際の貴重な情報として活かしたいと思います。ありがとうございました。
- chayamati
- ベストアンサー率41% (254/607)
こんにちは >フィールドの「データ形」で「メモ形」だけ検索できない現象がでます。 ★ACCESSのバージョンを更新しましたか? テーブルのデザインビューで「メモ形」を「長いデータ形」に 変更を試して下さい 以前はフィールドのデータ型に「テキスト型」と「メモ型」でしたが Access2010では「長いテキスト型」と「短いテキスト型」です
お礼
ありがとうございます。残念ながら試す手段を持っていませんので、テキストボックス検索とメモ型検索を別々の方法にて、設定内容を変えて使おうかなと思っています。「お恥ずかしい話ですが、以前(数年前)、大手の通販ネットの個人出店業者から2010を4万円(この価格なら大丈夫・・・かと)で購入(MSは販売終了)の経験があります。しかし、Office○○○○PLUS名のディスクが送られてきて、結局のところ電話インストールになりMSから断られました「ライセンス数以上に使用されていたとのこと・・・大手通販ネット会社の対応で実害は有りませんでしたが・・。」。それ以降、2010や2013の購入する気も失せてしまっています。余計なことを申しましたが、そんな事情で確認する術が有りません。どうしても駄目なら、メモ形フィールドは「Like "*" & [ 情報検索 ] & "*"」で対処しようかと考えて・・・います。取り急ぎご報告させて頂きます。ありがとうございました。
- m3_maki
- ベストアンサー率64% (295/459)
FieldType が 10 になっているところを 12 にしたらどうなりますか? 参考 BuildCriteria メソッド (Access) https://docs.microsoft.com/ja-jp/office/vba/api/access.application.buildcriteria DataTypeEnum 列挙 (DAO) https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/datatypeenum-enumeration-dao
補足
アドバイスありがとうございます。10から12へ設定しましたが、やはり検索対象がメモ型フィールドだけ「式が正しく入力されていないか、複雑すぎるため評価できません。たとえば、数式に複雑な要素が多すぎます。変数に式の一部を割り当て、式を簡単にしてください。」と返します。尚、データには日付や数字が混在しているものもあります。開くフォームには「=Date()」のテキスト窓がもありますが、こうしたことと関係があるのでしょうか。
- kkkkkm
- ベストアンサー率65% (1618/2457)
[内容(一文字可)] にデータが入っていない場合や、データを新規に入力した後に他のコントロールにフォーカスが移動していない場合そのようなエラーになります。 > 「式1: 」が勝手に付いてしまいますが 仕様です。フィールド名が必要なのでフィールド名が記載されていない場合アクセスが式1とつけます。式1となるところにフィールド名を記載すればその名前で表示されます。
補足
ありがとうございます。アドバイスの「データが入っていない場合や、データを新規に入力した後に他のコントロールにフォーカスが移動していない場合そのようなエラーになります。」ですが、対処の方法は無いのでしょうか。無知な質問かと思いますが・・・・そうでしたらお許しください。
関連するQ&A
- フィールドのデータ型で検索結果に差が出る[2]
正確にはフィールドのデータ型と検索条件「And・Or」の違いで検索結果に差が出るになります。 [アドバイス訴求の背景] 別件「フィールドのデータ型で検索結果に差が出る」でアドバイスをお願いして居りました者です「終了」。実は別の式もアドバイス頂いていた経緯があり、そちらで再度試してみたところメモ形でも「Or」条件であれば、正常に検索できることが確認できました。実は、アドバイスを頂いた記述を私が間違って設定していた為、別件の質問の通り「メモ形」は検索できていませんでした。本当に申し訳ございません。以上の経緯「私のプア」もあり、再度アドバイスをお願いすることに気も引けましたが、アドバイスを提供して下さった方に失礼であると思い投稿しました。 [気になっていること] クエリのパラメータ検索「複数パラメータ」に於いて、フィールドのデータ型が「メモ形」で「And」条件の時だけ検索できません。 1,データベースオブジェクト「簡略」 ・テーブル:世界情報 ・フォーム:世界情報フォーム ・フィールド名:情報 フィールドサイズ:メモ ・フォールド名:タイトル フィールドサイズ:200 ・世界情報クエリ1,2,3,4,「パラメーター(複数パラメータ表示)」 2,フィールド名「情報(メモ形)」を検索フィールドに指定「下記の式(Or)」した時は問題なく検索結果を返します。 Like "*" & [Forms]![情報]![検索1] Or Like "*" & [Forms]![情報]![検索2] Or Like "*" & [Forms]![情報]![検索3] & "*"(情報フィールドの抽出条件にのみ記載) 3,フィールド名「情報(メモ形)」を検索フィールドに指定「下記の式(And)」した時は全て「登録した情報はありません」を返します。 Like "*" & [Forms]![情報]![検索1] And Like "*" & [Forms]![情報]![検索2] And Like "*" & [Forms]![情報]![検索3] & "*"(情報フィールドの抽出条件にのみ記載) ※検索1と検索2にしても結果は同じでした。 4,その他 Like "*" & [Forms]![情報]![検索1] And Like "*" & [Forms]![情報]![検索2] And Like "*" & [Forms]![情報]![検索3] & "*" の式をクエリの記載場所が異なるので「式1: 」は付いていません。 以上ですが、宜しくお願いします。
- ベストアンサー
- Access(アクセス)
- パラメータークエリで2個以上の条件を認識させたい
[やりたいこと] パラメータークエリで2個以上「スペースで区切って」の条件を認識させたいと思っています。可能な方法があればアドバイスをお願いいたします。 [現状] フォームのレコードソースにパラメータークエリを設定していますが、パラメーターに条件を2個以上「スペースで区切って」入力する際、必ず該当レコード無しとなってしまう。 [パラメーターの抽出記述] ・抽出条件欄への記述は「Like "*" & [内容(一文字可)] & "*"」 ・テーブル名:情報データベース「フィールド:日時、発生国、分野、内容、WEB」 ・クエリ:情報データ検索クエリ「抽出条件欄(記述):Like "*" & [内容(一文字可)] & "*"」 ・フォーム:情報データ検索結果単票(単票)「レコードソース:情報データ検索クエリ」 以上ですが、宜しくお願いします。
- ベストアンサー
- Access(アクセス)
- ACCESSでクエリーを使った検索
VBAを使えば簡単にできるのですが、事情があり、クエリーのみで行わなければいけません。 フォームに入力された情報を元に検索できるクエリを作成しました。 通常でしたらクエリのフィールド名の下の抽出条件に Forms![F_検索]![検索条件1] とすればいいのですが、これが複数の条件を設定した場合はすべての条件を入力しないと、検索結果が出ないことから 以下のように変更しました。 フィールド名の抽出条件には何も書かず、別に式として IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=[Forms!]![F_検索]![検索条件1])) と入力しそこの抽出条件に「True」と入力しました。 これで何も入力されてない場合は全件が表示されるようになりました。 通常の検索はこれでいいのですが疑問点が2点あります。 1.期間を抽出する場合はどうしたらいいのか? IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Between [Forms!]![F_検索]![検索条件1] and [Forms!]![F_検索]![検索条件2])) とかしてみましたがダメでした。 2.あいまい検索をするにはどうしたらいいのか? IIf(IsNull(Forms![F_検索]![検索条件1],True,[フィールド1]=Like [Forms!]![F_検索]![検索条件1])) なんてしてみましたがだめでした。 ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- 複数の文字を置換した場合はフィールドを分けるしかないですか?
Replace関数は1つのフィールドに対して1つしか使えないのでしょうか? フィールド「タイトル」の「あ」と「い」を置換したい場合、 式1: Replace([タイトル],"あ","あああ") 式2: Replace([タイトル],"い","いいい") と、ふたつフィールドを作成するしかないのでしょうか? 式3: Replace([タイトル],"あ","あああ") and Replace([タイトル],"い","いいい") という風にしたら 「指定した式の構文が正しくありません」というエラーになってしまいます。 この例えは2つだからいいですが Replaceを使いたい文字が複数ある場合もフィールドに対して1つずつしか置換できないのでしょうか? 当方アクセス2003です。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ACCESS2000で検索値空白時の抽出
ACCESS2000で質問です。 顧客データベースがあります。 シリアルと登録名で検索をかけて、どちらかでヒット、又は両方ANDでヒットしたものをクエリで抽出したいです。以下の条件式はクエリの抽出条件の同じ行に入れています。データベースのうち、シリアルと登録名が両方入力されているものは問題なくヒットするのですが、どちらかが空欄のものがヒットしません。どちらかが空欄のものもヒットさせ、フォーム[検索]で何も入力しないでクエリを開いた時は全レコードを表示するようにしたいのですが、どのような式を書けばよいのでしょうか。宜しくお願いいたします。 Like "*" & [Forms]![検索].[登録者] & "*" Like "*" & [Forms]![検索].[シリアル] & "*"
- 締切済み
- その他(データベース)
- Access 計算フィールドに対するクエリの抽出について
初歩的な質問かもしれませんが、お願いします。 クエリで、計算を出した列に対して抽出をかけることはできないのでしょうか。 [商品CD][商品名][単価][個数] と、4つの列フィールドを選択クエリに表示し、 5列目に以下のフィールドを挿入しました。 式1: [単価]*[個数] この“式1”に対して1,000以上のレコードを抽出かけたいのです。 >=1,000 と抽出条件に入れてもダメです。 どうしてでしょうか。 また、どうすればいいのでしょうか。
- 締切済み
- オフィス系ソフト
- <access クエリのあいまい検索>
<access クエリのあいまい検索> こんにちわ。以前,クエリについて質問した者です。(前回質問番号:6003331) 引き続き,質問です。 前回はクエリでのあいまい検索の式についての質問でした。 今回は同じクエリで追加として別のフィールドでも同時にあいまい検索を行いたいと思っています。 名前,住所,連絡先等がある住所録があります。 クエリを使って,任意の文字検索をするように設定しています。 前回ここで教えて頂き,「京都」と入れたら,「京都市」も「京都群」もヒットするようになりました。 今回は同時に他のフィールドの検索値が入っていたら,それも一緒に表示させるようにしたいのです。 具体的には下記のとおりです。 1)住所のフィールドに「京都」が含まれている人,かつ,「田中」という文字を含む人を検索 2)単に「田中」という文字を含む人を検索 現在の入力値は下記のとおりです。 ご指導お願いします。 ■今,入力されていること フィールド:IIf(IsNull([forms]![frm条件検索]![住所名]),True,[住所名] Like "*" & [forms]![frm条件検索]![住所名] & "*") テーブル・並び替え=空欄 表示:チェックが入っています。 抽出条件:true
- ベストアンサー
- その他MS Office製品
- Accessでのあいまい検索について
Access2010の使用者で&初心者です。 クエリの抽出条件に別テーブルのフィールドを文字列検索させ、その文字列が含まれていた場合は、その文字列を別フィールドに抜き出すというクエリを作成したいのですが・・ ・検索したいテーブル(T商品情報) ・年月日 ・品目情報 ・検索する文字列が入ったテーブル(T品目) ・検索文字 検索したいテーブル(T商品情報)の「品目情報」から、検索する文字列が入ったテーブル(T品目)の「検索文字」を検索し、その検索文字列が含まれていた場合は別フィールにその検索文字列を抽出。という作業を行いたく思っております。 例 ---------------------------T商品情報 年月日|品目情報 20010/8/10|武田様より、口頭にてもも大を53個受け付けました 20010/8/10|上坂様より、電話にてりんごを3個受け付けました 20010/8/10|木村様より、電話にてももを3個受け付けました --------------------------- ---------------------------T品目 検索文字 もも大 りんご もも --------------------------- ↓ ---------------------------クエリ 年月日|品目情報 | 検索文字 20010/8/10|武田様より、口頭にてもも大を53個受け付けました|もも大 20010/8/10|上坂様より、電話にてりんごを3個受け付けました|りんご 20010/8/10|木村様より、電話にてももを3個受け付けました|もも --------------------------- このようなクエリ結果を望んでおります。文章の中から商品名を抜き出し、その抜き出した商品に価格をひもづけたいのです。このようなことをクエリで行えますでしょうか?
- 締切済み
- その他(データベース)
- Access2003 クエリ フィールドの比較
使用しているソフトはAccess2003になります。 テーブル1とテーブル2からデータ(フィールド)を表示してクエリを作成しました。 クエリのフィールド名は以下のようになります。 1、型式(テーブル1) 2、機番(テーブル1) 3、有効期限(テーブル1) 4、測定基準値(テーブル1) 5、機番(テーブル2) 6、紐づけ(テーブル2) ※ 使用者名が記載 テーブル1_機番とテーブル2_機番を比較して同じならば並び変える。 フィールドもしくは抽出条件にどのような式を記入すればよいでしょうか。 データベースソフトの扱いは初心者になります、宜しくお願いします。
- 締切済み
- Access(アクセス)
- アクセス:フィールドが非表示で消えるのを防止する式
アクセス2010を使っています。 アクセスのクエリのデザインにおいて、あるフィールドAで並び替えも抽出条件もなく非表示の状態にして、結果を開き、また閉じると、そのフィールド自体が消えます。 これを防止したいのですが、並べ替えは必要ないので、抽出条件式を何か使いたいと考えました。抽出条件式はどのようなものが無難でしょうか。「is null」や「is not null」は試しましたが、だめなようでした。これ以上いろいろと試すうちにクエリ自体を妙なことにしてしまいそうで悩んでいます。 フィールドAに入るのは短い日本語の文字列です。人名です。 フィールドAは、表示すると後の段階で困るのですが、ある別のフィールドBの条件式の材料(?)としてデザインの中に開いておかなければならないようです。完全に消してしまうとフィールドBがエラーになります。しかし(並び替えと条件式なしで)非表示にすると、フィールドAが消えてしまいます。 初心者ゆえに不首尾な質問と思いますので、必要があれば補足いたします。どうぞ上級者の方、教えてください。
- ベストアンサー
- その他MS Office製品
お礼
ありがとうございました。親身に対応いただきまして感謝です。バージョン変更ですが、年金生活者でもあり、じっくり考えてみたいと思います。貴重な経験として活かしていきたいと思います。本当にありがとうございました。