• 締切済み

Accessでのあいまい検索について

30246kikuの回答

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です > 到着したデータが、残念ながら下記のようなかたちでしか届きません。 加工しない状態での抽出については、他の方の回答を待ってください。 以降に控えているもの・事をやりやすいように加工する、という選択肢はないのでしょうか。 なければ、以下スルーしてください。 テーブル「TS1」として以下を作っておいたとします。 ・受注NO(オートナンバ) ・年月日(日付) ・顧客(テキスト) (武田、上坂、木村、・・・) ・方法(テキスト) (口頭、電話、・・・) ・品目(テキスト) (もも大、りんご、もも、・・・) ・数量(数値)   (53、3、3、・・・) 以下を標準モジュールに記述し、MkTable を実行すると内容が出来上がります Private Function CutMoji(sSrc As String _           , sLeft As String, sRight As String) As String   Dim iPosS As Long, iPosE As Long   If (Len(sSrc) = 0) Then Exit Function   If (Len(sLeft) = 0) Then     iPosS = 1   Else     iPosS = InStr(sSrc, sLeft)     If (iPosS = 0) Then       iPosS = 1     Else       iPosS = iPosS + Len(sLeft)     End If   End If   If (Len(sRight) = 0) Then     iPosE = Len(sSrc) + 1   Else     iPosE = InStr(iPosS, sSrc, sRight)     If (iPosE = 0) Then iPosE = Len(sSrc) + 1   End If   CutMoji = Mid(sSrc, iPosS, iPosE - iPosS) End Function Public Sub MkTable()   Dim rsTo As New ADODB.Recordset   Dim rsFrom As New ADODB.Recordset   Dim sSrc As String   rsFrom.Open "T商品情報", CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly   rsTo.Open "TS1", CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic   While (Not rsFrom.EOF)     rsTo.AddNew     rsTo("年月日") = rsFrom("年月日")     sSrc = rsFrom("品目情報")     rsTo("顧客") = CutMoji(sSrc, "", "様より")     rsTo("方法") = CutMoji(sSrc, "、", "にて")     rsTo("品目") = CutMoji(sSrc, "にて", "を")     rsTo("数量") = CutMoji(sSrc, "を", "個")     rsTo.Update     rsFrom.MoveNext   Wend   rsTo.Close   rsFrom.Close End Sub ※ 作る先のテーブル「TS1」をクリアしてから実行する・・・ とか  元の「品目情報」が Null なら・・・ とか  「年月日」の 20010/8/10 を 2010/8/10 に変更する・・・ とか  rsTo.Update でエラーになった品目情報を表示する様にする・・・ とか  元テーブル「T商品情報」で期間絞り込み後のものを対象にする・・・ とか 上記は、DB化が目的ではありません。が、 データを受け取ったタイミングで MkTable を実行するだけで、 以降のやりたいもの・事がしやすいような気がします。 ※ いろいろと不都合部分は修正してください。

関連するQ&A

  • ACCESS2003:ルックアップで表示に対応する別項目を入力したい

    リストボックスから選択できるのは 「りんご/バナナ/みかん」といった品名だが 実際に入力される値は「1/2/3」といった対応する 数値が入力されるようにしたいと思います。 テーブル:T売上 ------------- num: オートナンバー(主キー) item: 整数 ------------- テーブル:T品目 ------------- num: オートナンバー(主キー) name: 商品名 ------------- クエリ:Q売上 ------------- num: T売上.num item: T売上.item(ルックアップ設定) ------------- 上記クエリを作り、ルックアップには下記のようにしました。 ------------- 表示:リストボックス 値集合タイプ:テーブル/クエリ 値集合ソース:T品目 値連結:1 列数:2 ------------- リストボックスから選択入力することはできましたが、 表示も入力値も「T品目.num」になってしまいます。 表示は「T品目.item」、入力値は「T品目.num」のように したいのですが、そのようなことは可能でしょうか? 入力値を数値(num)にしたいのは、品名(item)が 変更になる可能性があるからです。

  • ACCESS 更新クエリについて

    更新クエリで更新したいのですが、クロス集計クエリの数値を元にテーブルを更新することは出来ないようで、困っています。 なぜそのようなことをしているかと申しますと、 商品品目_個数_コード(主キー) のようにフィールドを持っているのですが、 印刷に関しては品目ごとに印刷したい、ということで 一度クロス集計クエリ(TRANSFORM)で りんご_ばなな_ぶどう_コード(主キー) 数値_数値_数値_数値 のような並びにして、テーブル作成クエリでテーブルを作成し そのテーブルをレポートに使用しています。 数値などが変わった場合その作成したテーブルの数値を 作成元になったクロス集計クエリで更新したいのですが、出来なくて困っています。 テーブル作成クエリで上書きすると、古いデータが消えてしまうため 何か良い方法はないかと思っています。 回答のほどお願いします。

  • Access2002_検索フォームの作り方《初心者》

    既存のフォーム上に検索機能を追加させたいと思っております。 現在のフォームは社員の情報を入力していくものです。 既に入力されている社員の情報を変更するときにも使用します。 既存情報の変更はAccessの検索機能を使用して行っておりますが 今後Accessを使えない人でも変更処理が出来るよう、使いやすい検索機能を追加することになりました。 イメージとしては検索したい社員コードを入力し、検索ボタンを押すと該当の情報が表示されるようにしたいと思ってます。 いろいろ調べてみたところ、やりたいことに近いVBAコードをいくつか見かけましたがどうもうまくいきません。 下記のようなオブジェクトがある場合どのようなコードをどこに書けばよろしいでしょうか? 初心者なので出来るだけ手取り足取り教えていただけると助かります。 T_社員マスタ(テーブル) ・社員CD ・氏名 T_社員サブ(テーブル) ・社員CD ・住所 ・生年月日 ・血液型 Q_結合(選択クエリ) ・社員CD ・氏名 ・住所 ・生年月日 ・血液型 ↓このフォームに検索用機能を追加したいです F_検索&入力(フォーム) ・社員CD ・氏名 ・住所 ・生年月日 ・血液型 長々と申し訳ありません。 どうぞよろしくお願い致します。

  • アクセス[二重検索を防ぐ]

    アクセス初心者、つまづいてます。 テーブル:T部品情報 クエリ:Q部品 フォーム:F図番検索  があります。 1.Fで図番AB1111を、Q部品の中から検索させます。 2.1.で検索した情報をT部品情報に入れていきます。 が、TにAB1111の情報が既にあった場合、受け付けないようにしたいです。 且つ、できれば「その情報は入力済み」等のメッセージを表示させたい。 マクロでも関数でもよいので、何かよい方法はありませんか??

  • Accessで、複数のテーブルからデータを繋げたい

    ■テーブル1 2011年データ 行:名前 列:年月日 201101~201112 行:商品名 値:件数 ■テーブル2 2010年データ 行:名前 列:年月日 201001~201012 行:商品名 値:件数 となっております。 列を伸ばして、201001~201112までのデータにしたいのですが クエリの組み方が不明です。 ネットでサーチはしたのですが、該当のものが出てこず、良ければ教えて下さい!

  • ACCESSで「"」を検索する

    テーブルデータの中に「"」を文字として使用している場合 クエリーで抽出条件に「"」を入れて検索しようとすると 指定した式に不正な文字が含まれています と出て検索できずに困っています どうにか「"」を含むデータを検索できないでしょうか ちなみにACCESS97です

  • Access、検索用フォームでのあいまいな検索

    現在、Accessでデータベース作成をしています。 テーブル:  ・テーブルA          ・テーブルB          (A・B間にリレーションシップ設定) クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成) フォーム   ・検索用フォーム(デザインビューでフォーム作成より)          ・検索結果フォーム(検索クエリを元に作成) また、以下のような設定を入力しました。 「検索クエリ」の抽出欄  Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1)  ※検索したい項目、すべての抽出欄に設定済 「検索用フォーム」  検索実行ボタンを作成し、マクロを設定  ・フォームを開く→「検索結果フォーム」  ・フィルタ→「検索クエリ」 上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。 ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも (1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。 2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか?? ご存知の方、ぜひ教えてください。 よろしくお願いいたします。

  • アクセスである文字を含む検索

    ACCESS2000を使っています。 あるデータテーブル「発注書テーブル」があって、ここでは「(1)ID」「(2)顧客名(法人)」「(3)発注商品」「(4)納品済チェック」の4つフィールドがあるとします。 作業はフォームで行います。フォーム名は「発注書フォーム」。 「(2)顧客名」から検索をかけたくて、検索コマンドボタンをつくり、「検索フォーム」を発注書フォームとまったく同じ形態でつくり、そこにとべるようにしました。 「検索フォーム」には「検索」というテキストボックスを作ります。 「検索クエリ」というクエリを作り、発注書テーブルを素とし、すべてをデザインビューで表示するようにしました。 そして、「(2)顧客名」の抽出条件に[Forms]![検索フォーム]![検索]を入力します。 すると、「検索フォーム」の「検索」をコンボボックスにして、顧客名をすべて表示させ選択した場合は、「検索フォーム」では、選択した顧客の情報が表示されるようになりました。 が、しかし、「検索」をコンボボックスではなく、テキストボックスで、しかも顧客名の一部だけを入力したら、その文字を含むすべてのレコードを表示してほしいのです。 そこで、「検索クエリ」の「(2)顧客名」抽出条件にlike"*[Forms]![検索フォーム]![検索]*"と入力してみました。 そして「検索フォーム」の「検索」テキストボックス(非連結)に顧客名の一部を入力したところ、ぜんぜん絞りこみ抽出してくれません。 もちろん、クエリ上でも絞り込んでいない模様です。 どうしたら文字の一部からその文字を含む顧客名のレコードを全て抽出し、表示させることができるでしょうか? 細かくてすみませんが、かなり困ってます。 どうかわかる方、教えてください。 まったくちがう方法(別の手法)でもかまいません。 この説明でわからない部分がありましたら補足しますのできいてください。 よろしくお願いします。

  • accessクエリの「SQL」を検索する方法

    accessクエリの中の 「select * form *****」 の中の文字列検索を複数のクエリを対象として実行できるようなソフトまたは 複数のクエリのSQLをテキスト化してくれるようなソフトはあるものでしょうか。 #クエリの結果のレコードの検索でなく、SQLの文字列を検索したいだけ。

  • アクセス 同じフィールド文字列を結合させたい

    お世話になります。実は、ほぼ同じ内容の問合せと回答があります。 http://okwave.jp/qa/q3023548.html これに、近いと思うのですが…。 この回答ならいける!と思い、やってみたのですが、これを利用しても自力では、うまく動かせませんでした。 (テーブル) 品目番号    集計列(テキスト型)    他の列   …   A1      "カレー,ハヤシ"       あ1    …   A1      "チキン,ビーフ"       あ1    …   B1      "バジル,タイム"       び1    …   …   ↓↓↓クエリ実行 (クエリ実行結果) 品目番号で列を集計するイメージで、しかし数値の合計でなく、キーワードの文字列を連結した結果にしたいのです。なお、他の列は『品目番号』と同様に出力したいです。 品目番号  集計列(テキスト型)          他の列   …   A1    "カレー,ハヤシ;チキン,ビーフ"     あ1   …   B1    "バジル,タイム"             び1    …   …   集計したい列の集計(文字列の結合)   "カレー,ハヤシ;チキン,ビーフ"         ↑↑↑結合の間は";"や","などで区切り文字を入れて アクセスは、初心者ですので、上記『q3023548』の中で丁寧に記載されている内容のコピーや簡単な手直しは、がんばれば出来ると思いますが、意味がよく分かっていないので修正必要な箇所については細かく教えて頂きたいです。上記の回答内容でも、まだ分からないの?!と言うレベルかと思います(苦笑)…。 上記の回答内容のSQLクエリ内『TOP 1』という部分などが、私の場合、列をすべて抽出するため、変わるのだと思いますが、やはり細かい部分が分かりません。出来ないことなのでしょうか…。 さらに可能であれば、複数の指定した列で同様なことが出来ると非常に助かります。『集計』の結果、区切り文字が連続しても構いません。(『;;;;;;;;;;;;;;』とか『,,,,,,,,,,,,,,,』という具合で…) 最終的には、帳票形式のフォームで結果を表示させます(複数の列でフィルタリング後)。 なので、多分、テーブル作成クエリになると思います…。 現在は、同じ品目番号のレコードがレコード分だけ、キーワード部分だけ変わりながら、何度も繰り返し表示される状態になっています。(各品目の画像を表示させるので帳票形式にしています。)これを1つの品目の表示を、1度にしたいです。 宜しくお願い致します。