• ベストアンサー

ASPで情報の複数(個別)選択、抽出、リスト出力の処理手順を教えて!

ASP&Access(ADO)&IISの環境で下記の様なprgを組んでいる素人です。 分かりやすい?例えで 1.商品TABLEの一覧より欲しい物を複数(個別)選択 2.選択した商品のみを抽出したリスト表示 3.リストの印字 4.リスト印字後、選択した情報は、クリア(未選択)に戻すか、選択情報の破棄。 この1~4を処理したいと思っていますが、この商品TABLEは、複数の人が閲覧し、且つそれぞれ違う商品を選択し、リスト出力するのが前提条件です。 とりあえず、大雑把な処理手順(シンプルで簡単な処理)を教えていただければと思っております。 今、悩んでいるのは、「データの選択方法」と「選択したデータの抽出方法と情報のクリア処理」です。 なかなか質問を文章で表現するのが難しくて、わかりづらいかも知れませんが、よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • sam_inoue
  • ベストアンサー率47% (27/57)
回答No.4

>ん~?? >データを更新せずに複数行Listからチェックボックス>にチェックの入ったものをどうやってsearch抽出すればいいのでしょうか? 全てのチェックボックスを同じ名前(name=)にして、 value=でそのキーとなる値を登録しておくと、 チェックしたもののvalueがカンマ区切りで返されます。 Split関数で", "をデリミタにして配列に置き換えると あとの処理が楽です。

hiroshi-21
質問者

お礼

大変、よ~くわかりました。

その他の回答 (4)

  • sam_inoue
  • ベストアンサー率47% (27/57)
回答No.5

ついでですが、 Session変数には「配列」も格納できるので、 No.4でSplitで作成した配列をそのまま入れてしまえば良いと思います。 1変数なら削除も簡単です。

hiroshi-21
質問者

お礼

何度も、ありがとうございます。 見知らぬ人に助けられて、大変感謝しています。

  • sam_inoue
  • ベストアンサー率47% (27/57)
回答No.3

>1.商品TABLEの一覧より欲しい物を複数(個別)選択 たぶん、チェックボックスでしょうが、これはできましたか? >2.選択した商品のみを抽出したリスト表示 上の画面からPOSTで受けたページでチェックされたValueを カンマ区切り文字列で受け取り、 配列に変換してSessionメモリに格納すれば良いでしょう。 >POST値を使わなくともSession変数に格納する方法もあります。 POSTで受け取らずにSessionに格納する方法があるなら 教えていただきたいものです。 Sessionメモリはサーバサイドでしか入出力できませんから 表示ページから一旦送信しないと内容は書き込めないと 思います。 クライアントスクリプトでURLの引数に並べるのなら、 POSTの方が簡単には読みとれないので安全です。

hiroshi-21
質問者

お礼

>>1.商品TABLEの一覧より欲しい物を複数(個別)選択 >たぶん、チェックボックスでしょうが、これはできましたか? たぶん、問題ないと思います。 >>2.選択した商品のみを抽出したリスト表示 >上の画面からPOSTで受けたページでチェックされたValueを >カンマ区切り文字列で受け取り、 ん~?? データを更新せずに複数行Listからチェックボックスにチェックの入ったものをどうやってsearch抽出すればいいのでしょうか? >配列に変換してSessionメモリに格納すれば良いでしょう。 >>POST値を使わなくともSession変数に格納する方法もあります。 >POSTで受け取らずにSessionに格納する方法があるなら >教えていただきたいものです。 >Sessionメモリはサーバサイドでしか入出力できませんから >表示ページから一旦送信しないと内容は書き込めないと 思います。 >クライアントスクリプトでURLの引数に並べるのなら、 >POSTの方が簡単には読みとれないので安全です。 なるほど、そうですか 色々参考になりありがとうございます。 私には2の部分が壁かも、 実は、DBを更新せずに、データを特定する方法が分からなくて、もう少しヒントをいただけませんか?

回答No.2

ここが参考になると思います。 http://www.site-cooler.com/kwl/asp/12.htm がんばってくださいね。

参考URL:
http://www.site-cooler.com/kwl/asp/12.htm
hiroshi-21
質問者

お礼

参考にさせていただきます。 なんせ"session"ってはじめて使うので、壁が高そうです。

回答No.1

(1)リストより選択された商品IDを次のリスト表示用ページにPOSTで渡す。 (2)渡された商品IDを基にDBから商品名をリスト表示する。(例えば別画面などで) (3)ページの印字処理(印字専用ページにさらに値を渡すという手もいいでしょう) (4)リスト表示別画面がCloseされたら、商品リストページをリロード POST値を使わなくともSession変数に格納する方法もあります。 この場合は、Session.Abandonでクリア処理すればなくなります。 ポイントは、選択リストをDBにいちいち書き込まない点です。 処理が単純になりますし、サーバの負荷も少ないです。

hiroshi-21
質問者

お礼

大変参考になり、出来るような気がしてきました。 (1)(2)は既に、作成済み >(3)ページの印字処理(印字専用ページにさらに値を渡すという手もいいでしょう) この時の値の渡し方は?どうやって渡せばいいのでしょうか? >(4)リスト表示別画面がCloseされたら、商品リストページをリロード >POST値を使わなくともSession変数に格納する方法もあります。 >この場合は、Session.Abandonでクリア処理すればなくなります。 Session変数の使い方は?参考にできるURLなどあれば教えてください。 早々のご返答ありがとうございます。

関連するQ&A

  • リストボックスで複数選択した値でDBから抽出したい

    よろしくお願いします。 開発環境はVisualBasic2005、SQL Server2005Expressです。 既に同様の質問があるかもしれませんが見つけ出せなかったので質問させていただきます。 リストボックスに表示されたデータを複数選択し、その値をWHERE条件としてデータベースから該当データを抽出したいのですが、複数選択となると条件の数が可変となるため、どのような方法で抽出するのが一番良いのかわかりません。 情報をお持ちの方、何卒お願いします。

  • Access リストボックス複数選択を抽出条件に

    Access リストボックスで複数選択した値をクエリの抽出条件にしたいです。 ※PC環境:Win7 Access2007 Excel2007 リストボックスで複数選択した値を取得する事はできるのですが、 クエリ実行をすると結果が0件になってしまいます。 他の方のQAなどを参考に以下を作成しましたが、ほしい結果が得られず困っています。 おわかりになる方、ご教示いただけますようお願い致します。 <動作概要> 「画面」の「リストボックス」で複数選択し、 [実行]ボタンを押して、「リストボックス」で選択した値を、「テキストボックス」にセットし、 クエリの抽出条件に、in(テキストボックス)をセットし、テーブルから合致するデータを抽出したい <リストボックス> ※年区分テーブル参照 区分,区分名 1,1年 2,2~3年 3,4~5年 「2,2~3年」「3,4~5年」を選択 ※「区分」は数値型 <VBA> Private Sub 実行_Click()  Dim i As Variant  Me.テキストボックス = Null  For Each i In Me.リストボックス.ItemsSelected Me.テキストボックス = Me.テキストボックス & Me.リストボックス.Column(0, i) & "," Next If Me.テキストボックス <> "" Then  Me.テキストボックス = Left(Me.テキストボックス, Len(Me.テキストボックス) - 1) End If   'ここで画面を確認すると「テキストボックス」には、「2,3」 がセットされている DoCmd.OpenQuery "クエリ"   'テーブルには抽出条件に該当するデータがあるが、クエリ実行結果は0件 End Sub <クエリ SQL> SELECT テーブル FROM テーブル WHERE (((テーブル.区分) in([Forms]![画面]![テキストボックス]))); ※「テーブル.区分」は、数値型 どうぞよろしくお願い致します。

  • Accessのテーブル・住所複数選択抽出について

    Accessで、住所リストの現住所テキストフィルターで、ユーザー設定フィルターに、どのワイルドカードを使用しても、エラー表示が出てしまいます。ワイルドカードによる複数選択抽出は難しいのでしょうか?どなたか、Access・Officeに堪能な方、いらっしゃいましたら、何卒・宜しくお願い致します🤲

  • アクセスのリストボックスの複数選択

    リストボックスの設定方法を教えてください。 1画面目にテーブルと連結したリストボックスがあります。 複数選択した情報をSelectedプロパティで取得しています。 次画面にて同じテーブルに連結されているリストボックスを 1画面目と同じ様に選択されている状態にしたいのですが、 方法がわかりません。 選択されている内容だけをリストボックスに表示する方法は 見つけたのですが、同じ状態で選択される方法がわかりません。 ご回答、宜しくお願いします。

  • DBから読み込んだ買い物リストを複数選択で送信

    php数ヶ月の初心者です。 以下がどうにもこうにもできません。 どうか、わかりやすくご解説いただけますよう お願いします。 [DB] (A)商品リスト (テーブル名:products) (カラム:product_id, product_cd, name, price) [phpファイル] (B)商品一覧リスト:shouhin.php (C)買い物カゴ中身:kaimonoKago.php (1)(A)にあるデーターをmysql_fetch_arrayで取り出す (mysql_fetch_arrayが非推奨というのは知っての上で 話を進めさせて下さい) (2)それをファイル(B)でテーブル<table>の形で表示。 (3)商品選択ボタン(checkbox)と、各商品に数量を 入力できる枠をつくる (4)複数選択した商品を<form>で一発で(C)へ送る (5)送った内容を(C)で展開する 複数選択の送信でなければなんとかできたのですが、 複数選択可で、数量も入力できるとなると、どうような 関数を使えばいいのか検討がつきません。 (B)と(C)それぞれどのようなコーディングにすれば良い のでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • リストボックスの複数選択について

    ACCESS2003を使っています。 入力用フォームにリストボックスを作って 複数選択するようプロパティで変更しました。 この情報をテーブル上に反映させることができません。 どうしたらいいのかお教えください。 具体的には 入力用フォームに りんご(*) みかん かき(*) スイカ   (*)印は黒反転 この状態で入力するとテーブル上に りんご かき というように表示するようにしたいのです。

  • アクセス リストボックスから選択したデータを抽出条件にするには…

    アクセス超初心者です。 フォーム上のリストボックスで選択した項目を条件にデータ抽出しています。 そこで、その抽出されたデータの中に商品コードがあるのですが、 その商品コードを条件にして他のデータを抽出したいと思っています。 (↓説明が長いですが、お願いします↓) 出来ていること フォームでコードを入力すると、商品名が表示されます。 同じくコードを条件にリストボックスにカテゴリ1表示され、 そのリストのいずれかをクリックすると、別のリストボックスにカテゴリ2が表示され、 そのいずれかをクリックすると詳細に必要情報が表示される。 http://accessclub.info/beginer/cd/part_07.htm ここを参考に作成しました。 したいこと ランキング作成。 今回新たにテーブルを追加しました。 リストボックス_カテゴリ2を条件に抽出されたデータにある商品コードを、 条件として、新たに追加したテーブル_ランキングからデータを抽出したい。 また、ランキングの上位順に並び替えした状態で抽出したい。 ------------------- 抽出結果はこのようにしたいです。 ランキング順位/商品コード/商品名/生産工場/カテゴリ1/カテゴリ2 ------------------- T_商品名 ID(主キー) 商品コード 商品名 生産工場 カテゴリID※T_カテゴリ_IDとリレーション ------------------- T_カテゴリ カテゴリ1 ・・・(大分類カテゴリ) カテゴリ2 ・・・(大分類の中の詳細分類) ID(主キー)※T_商品名_カテゴリIDとリレーション ------------------- (今回は新たに追加したテーブル) T_ランキング ランキング順位 商品コード 商品名 ポイント ID(主キー)(リレーション無し) ------------------- F_総合検索  ヘッダー部分   (1)コード入力欄(テキストボックス非連結)   (2)商品名(テキストボックス非連結)   (3)カテゴリ1(リストボックス)   (4)カテゴリ2(リストボックス)   (5)ボタン ------  詳細部分    商品コード/商品名/生産工場/カテゴリ1/カテゴリ2 ------------------- しくみ  I (1)にコードを入力する   →II (2)に商品名が表示/(同時に)(3)カテゴリ1が表示(そのいずれかをクリック)   →III その商品が属しているかつ、選択されたカテゴリ1に属す、カテゴリ2が(4)に表示   →IV(4)のクリックされたカテゴリを条件に、そのカテゴリに属すレコードが詳細に表示    ※(5)ボタンは詳細の表示と同じものを別途クエリを作成し、開くようにしています。     (今はまだランキングが出来ていないので、クエリをコピーしエクセルでランキングを作っています。) ---補足-------------------- もともとエクセルで管理していたデータをインポートしてテーブルを作成しています。 ------------------------------------------------------------ 【カテゴリシート】商品コード/商品名/生産工場/カテゴリ1/カテゴリ2 というシート(4500件くらい) ※商品コード重複あり 例: 商品コード 商品名 生産工場 カテゴリ1 カテゴリ2 0003 キャラクターペン 東京 玩具 対象小学生以上 0003 キャラクターペン 東京 文具 筆記用具 0003 キャラクターペン 東京 文具 消耗品 ※カテゴリ1 ・・・(大分類カテゴリ)/カテゴリ2 ・・・(大分類の中の詳細分類) ------------------------------------------------------------ 【ランキング2007シート】ランキング順位/商品コード/商品名/ポイント/調査日 というシート(4000件くらい) ※商品コード重複なし ※ランキングは廃盤の商品コード(100件くらい)もあり、その商品に関しては順位とポイントが空欄です。   (空欄セルがあるとエラーの原因になるかと思い、念のため補足。) ------------------------------------------------------------ ここから、ある商品はどのカテゴリに属しているか、また同カテゴリに含まれる商品はランキング内で何位にいるのか。 という情報を出すように、と仕事で依頼されます。(同類商品の中でどう評価されているのかを比較するため) いつもは、エクセルで作業シートを作っており、関数で呼び出しているのですが、 関数が複雑かつ多いせいか、計算時間が長く、効率が悪くなっています。 VBA、マクロ、SQLはわかりません。 そんな私でも学習していきたいと思っています。 よろしくお願いします。

  • 複数ブックから指定のデータを抽出してリストにしたい

    VBAで複数のブックから指定のデータを抽出してリストを作りたいです。 ・地域ごとに分かれたブックが複数あります。(全て同一フォルダ内、リストも同フォルダに作ります) ・シートの構成は「原本」「一覧」「商品名A」「商品名B」(※5~20シート位) ・商品は月替わりで増減がある。 「一覧」…商品名のシートから月の販売個数を集計した物を一覧表にしてあります。      必ず各ブックの2枚目のシートになります。 ・各地域のブックから「一覧」のシートを参照して「商品名」「メーカー」「合計」を抽出する。 ・リストには地域別でメーカー毎に一覧を表示したい。 別ブックの特定のセルを参照して一覧にするのは簡単なのですが、商品が毎月増減します。 なので各地域別のブックを更新したら、リストの方も自動的に反映されるようにしたいのです。 色々検索してみて各ブックの指定のシート、指定のセルからマクロで自動的に読み込むというのは見つかりましたが、セルの範囲が一定ではない場合はどうすれば良いのか解りません。 出来ればリスト以外のブックは開かずにデータを抽出したいです。 (※実際に入力作業を行うスタッフは本当に入力しか出来ないので、このブックを先に開いて~とかは混乱して出来ないようです。マクロで全てのファイルを開く等も勝手に閉じてしまったりするので避けたいです。)

  • アクセスのクエリ、リストボックスで複数選択をしたい

    フォームのリストボックスから選択してクエリで検索しています。 ▼フォーム 例) 北海道 東北 関東 ▼クエリ [Forms]![フォーム]![地域] ← 抽出条件 リストで1つしか選べないのですが、これを複数選択出来るようにするにはどのようにしたら 良いのでしょうか? 今だと北海道しか選べないので、これを北海道、東北などと複数を選べるように変更したいと思っています ?ご存知の方教えてください。

  • エクセル 2003 リストボックス複数選択後の処理

    いつもありがとうございます。 先日もご質問させていただきました。 エクセル VBA 初心者で困っております。 誠に申し訳ありませんが、ご教授をよろしくお願いします。 (sheet2)のデータをリストボックス(sheet1)で複数の値を選択し、 オートフィルタ-に反映させて抽出し、 その後、セルB1以下(sheet1)に入力した値と貼り付けた別のシート(sheet3)で数値1×数値2を掛け算し、数値3にそれぞれ出すのが目的です。 sheet1 リストボックスで複数選択された値を、A1より下に貼り付けていく それぞれB列に数値を入れる 例.(リストボックス選択後)     A     B 1  製品A  5(入力) 2  製品B  3(入力) 3  製品C 2(入力) ・ ・ ・ コマンドボタン1を押すと実行 sheet2(今後増える可能性あり)      製品名      数値1    数値2   数値3 1 製品C       2           2 製品A       2 3 製品E       1 4 製品B       4 5 製品F       3 6 製品D       5 ・ ・ ・ sheet3(貼付先) 実行結果   製品名      数値1    数値2   数値3         1 製品A        2        5      10 2 製品B        4        3      12 3 製品C   2 2 4 以前の質問では、1つずつでの入力で思ったとおりの結果になりました。 今回は複数です。 初心者で、まだ手を出す部分ではないとは思いますが、よろしくお願い致します。

専門家に質問してみよう