• ベストアンサー

【続】Access2002でレポート(納品書)に連番を打ち出したい

前質問:http://oshiete1.goo.ne.jp/kotaeru.php3?q=5243829 回答を締め切ったにも関わらず、まだハマっています。 前回の質問で、回答を得、テストDBではうまく行ったのですが、本番DBに移行してみると、うまく動いてくれません。 本番DBの構造は以下のとおりです。 (注文入力の裏にあるクエリの構造です) これを実行させようとすると、「あいまいな・・・」という例のメッセージが出て、うまくいきません。 私の経験不足が主な原因とは存じますが、解析可能な方がいらっしゃれば、幸いです。 また、「ここはどうなっているの?」という逆質問にも積極的にお答えしますので、何卒よろしくお願いします。

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

  • ベストアンサー
noname#182251
noname#182251
回答No.8

#7の補足を読むと、当該フォームは概ね私の意図したとおりに動き、そしてそれはcamo-tさんの望むものとは違うようです。 そもそも誤解の始まりは「質問番号:5243829」です。質問文の意味がはっきり読み取れなかったのですが、「文房具店に売っているような納品書には最初から連番が振ってあるものがありますよね?あのイメージです」だけを根拠として回答してきました。「最初から連番」がオートナンバーで振られる番号で、文房具店の納品書が動的に動かないように、従業員(コード)が変わっても、連番が変わることはありません。 ともかく本件はそろそろ打ち止めにしたいです。私が回答するかどうかは別にして、そもそもの仕様やテーブルの構造、相互の関係などを明確にした質問文を新規作成することを強くお奨めします。

camo-tech
質問者

お礼

了解いたしました。 そもそも、私の質問の仕方、データの提示の仕方が悪かったと反省しております。 今までいただいた多くのヒントを元に、一からテストDBを作成し、問題点をきちんと整理したうえで、おっしゃるとおり、新しい質問に切り替えます。 今まで長くの間、ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

noname#182251
noname#182251
回答No.7

#6です。 納品書番号(テーブル)の構造を確認してください。 納品書番号:オートナンバー(主キー) 従業員コード:整数(インデックスを着けるならば「重複あり」)

camo-tech
質問者

補足

早速のご回答ありがとうございます。 納品賞番号テーブルはいたって簡単に作っております。 納品書番号:オートナンバー 従業員コード:テキスト(従業員マスタテーブルの型がテキストのため)インデックスは「はい(重複あり)にしてあります 主キーが「従業員コード」になっていましたので、訂正しました。 結果、下記のような動作になっております。 ・フォームをオープンすると、カナで一番最初の従業員の従業員コードと、それに紐づいている納品書番号が表示される ・コンボボックスで従業員コードを選択しても、納品書番号は変わらない(そのまま終了させると、従業員テーブルの内容が、フォームの最終状態(たとえば、納品書番号:2、従業員コード:123だったものを、納品書番号:2、従業員コード:456、に変更して終了))で保存されてしまう(納品書テーブルの中身が書き換わっています) ・新規レコードの入力状態(►*を押下)にすると、 納品書番号:(オートナンバー) 従業員コード:空白 となり、その後コンボボックスから従業員コードを選択すると、紐づいた納品書番号が表示されるが、一度選択すると、従業員コードを再選択しても、納品書番号は変わらない(従業員コードを選択すると、納品書テーブルで紐づいている納品書番号が表示されますが、再選択しても納品書番号は変わりません) という状況です。

全文を見る
すると、全ての回答が全文表示されます。
noname#182251
noname#182251
回答No.6

#5です。 (かねがね感じていたことですが)もう少し回答をキチンと呼んで欲しいです。例えば >1.▼をクリックし、出てきた従業員コードの一覧を選択しても、それが反映されない状況です。 わたしが1.で問題にしたのは「コントロールソース」です。なぜならば「#Name?」が出る原因の一つとして、コントロールソースが正しくない場合が考えられるからです。実行時のコンボボックスの▼ではなく、「コントロールソース入力テキストボックス右側の▼」です。 同じように2.で「全てのSQL文」が提示されることを要望しましたが、結果は「コンボボックスの値集合ソース」だけでした。さらにこれも「コンボボックスのコントロールソース」と誤って標記されています。もし誤りでなくコンボボックスのコントロールソースがこうなっているならば、根本的に間違っています。 このようにちぐはぐな「回答」と「補足」が続くと、これ以上回答を続ける意欲がなくなります。

camo-tech
質問者

お礼

訂正いたします。 ------------------------------------------------------ コンボボックスのコントロールソースは下記のとおりです。 SELECT 従業員マスタ.従業員コード, 従業員マスタ.従業員名, 従業員マスタ.従業員名カナ FROM 従業員マスタ ORDER BY 従業員マスタ.従業員名カナ; ------------------------------------------------------ と記述しましたが、正確には、 コンボボックスの「値集合ソース」が上記SELECT文になります。 すみませんでした。 ちなみにコンボボックスのレコードソースは「従業員コード」としております。 よろしくお願いいたします。

camo-tech
質問者

補足

大変不愉快な思いをさせてしまい、申し訳ないです。 1.ですが、▼で、コントロールソースを「従業員コード」にしましたところ、「#Name?」は出なくなり、リストボックスから選択すると、きちんと従業員コードが表示されるようになりました。 2.ですが、納品書番号は連動しません。 フォームのレコードソースは下記のとおりです。 SELECT 納品書番号.納品書番号, 納品書番号.従業員コード FROM 納品書番号 ORDER BY 納品書番号.納品書番号 コンボボックスのコントロールソースは下記のとおりです。 SELECT 従業員マスタ.従業員コード, 従業員マスタ.従業員名, 従業員マスタ.従業員名カナ FROM 従業員マスタ ORDER BY 従業員マスタ.従業員名カナ; 上記のとおり、問題がございます。 フォームでコンボボックスで従業員を選択し(納品書番号は自動的には変更されません)、保存しようといたしますと、下記のメッセージが出て、保存できません。 「インデックス、主キー、またはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。」 ちょっと迷路に入ってしまっているようです。。。すみません。

全文を見る
すると、全ての回答が全文表示されます。
noname#182251
noname#182251
回答No.5

#4です。状況がはっきり把握できないのでいくつかアドバイス的に 1.コントロールソース 「#Name?」はコントロールソースが正しくない場合などに表示されます。タイプミスを避け、かつ効率よく指定するためには、コントロールソース入力テキストボックス右側の▼を利用します 2.SQL文 当該フォームにはレコードソースのSQL文とコンボボックスの値集合ソースのSQL文が関係します。キチンと提示してください 3.問題を切り分け トラブルが発生するときは、なるべく問題を単純にして、それから積み上げてゆきましょう。当該フォームではテーブル一つだけのクエリで、フィールドも三つぐらいのものに絞り込んでみましょう 4.新たに質問 質問したい内容が変わったときは、補足ではなく、新たに質問した方が良い場合が多いです。回答者の幅が広がるし、画像も新たに添付できます

camo-tech
質問者

補足

1.▼をクリックし、出てきた従業員コードの一覧を選択しても、それが反映されない状況です。 2.下記に納品書フォームのコンボボックスのコントロールソースをご提示いたします。 最初にクエリの関連図をご提示させていただきましたが、その テーブル名に変更しております。 ---------------------------------------------------------------- SELECT 従業員マスタ.従業員コード, 従業員マスタ.従業員名, 従業員マスタ.従業員名カナ ---------------------------------------------------------------- 3.そうですね。今作っているフォームは、「納品書番号」テーブルと、「従業員マスタ」テーブルの二つを参照する作りになっています。です。 ただ、上記のとおり、問題のコンボボックスは「従業員マスタ」のみ参照しています。 4.この問題につきましては、今後、配慮します。ご指摘ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
noname#182251
noname#182251
回答No.4

顧客を選択できる納品書(登録)フォームの作り方 1.新規フォームを作成(納品書フォーム) 2.フォームのレコードソースを SELECT 納品書テーブル.納品書ID, 納品書テーブル.納品日付, 納品書テーブル.顧客ID FROM 納品書テーブル ORDER BY 納品書テーブル.納品書ID; とする 3.フィールドリストから「納品書ID」と「納品日付」をフォームにドロップする 4.「顧客テーブル」に「フリガナ:テキスト型」を追加しておく 5.ツールボックスでコンボボックスを選び、フォームの適当な位置にボックスを描く 6.コンボボックスのコントロールソースを「顧客ID」にする 7.コンボボックスの値集合ソースを SELECT 顧客テーブル.顧客ID, 顧客テーブル.顧客名, 顧客テーブル.フリガナ FROM 顧客テーブル ORDER BY 顧客テーブル.フリガナ; にする 7.コンボボックスの連結列を1にする 8.コンボボックスの列数を3、列幅を0cm;2.501cm;2.501cm、幅を5cmにする 以上を実行すると、新しいレコードで顧客をドロップダウンリストから選択でき、連番は自動的に振られてゆくことが確認できるでしょう。納品書の各アイテムは次回、子フォームを貼り付けたサンプルを提示します 留意点:ドロップダウンリストからの選択はせいぜい20件以内が実用的です。それ以上から選択しなければならないときは、別の仕掛けを考えましょう。 7.

camo-tech
質問者

補足

遅くなりました。 また、丁寧に教えていただき、ありがとうございます。 こちらの実際のテーブル名、フィールド名に合わせて、SQLを書き直し、フォームを作りました。 実行させますと、なぜかコンボボックスに「#Name?」と表示されてしまいます。 ドロップダウンリストは社員番号が入ったリストが出ますが、選択しても「#Name?」のままです。 SQLに間違いはないはずなのですが。。 これだけの情報で伝わりますでしょうか? (画像を貼り付けられないのがもどかしいです)

全文を見る
すると、全ての回答が全文表示されます。
noname#182251
noname#182251
回答No.3

#2です。提示されたSQLは試験再現するのに、まずテーブル設計の変更が大変で、とても着手する気になれません。そもそもこのようなSQL文が必要なのか疑問です。#2に書いたような方針ならばクエリは非常に単純で済みます。 1.新規注文書(納品書にも使う)→オートナンバーで連番取得 2.担当者や日付その他を入力 3.複数項目(商品)入力 上記のような流れで良ければサンプルを提示できます

camo-tech
質問者

補足

ご回答ありがとうございます。 まず、SQL文ですが、クエリ作成の際、自動生成されたものですので、手の出しようがありませんでした。私自身、長いと感じますが、そもそもSQL文の知識が乏しく、簡潔にできないのが実情です。 GUIが便利だからといって、D&D等で作成すると、やはりこうなっちゃうんですね。 次に、サンプルですが、お手数でなければご提示いただければ幸いです。例があると、いじって何とかなるかもしれません。 今までのDBの構造にこだわらず、新しいDBに作り変えてもいい、位の思いです。

全文を見る
すると、全ての回答が全文表示されます。
noname#182251
noname#182251
回答No.2

質問が曖昧で、回答しにくいです。何をやろうとしてどこでエラーするのか? SQL文も最初から表示して欲しかったですが、質問では「「あいまいな・・・」という例のメッセージが出て、うまくいきません」が、補足では「クエリの実行時にはエラーは出ないものの、実行結果は空白」となっています。ひょっとしてその空白状態で入力しすると「あいまいな・・・」となる? 別の角度から。 納品書(注文書)の構造は下記のようなものでしょうか? ヘッダ的に 発注者/年月日など一意のデータ これにぶら下がる、複数の項目 商品名、単価、数量、etc これで良いならば親子フォームの使用がお奨めです。

camo-tech
質問者

お礼

補足の補足です。(お礼欄にしか記述できないんですね) すみません。 ちょっと様子が変わっています。 昨日、色々弄くっていたときは、上記補足のような「結果が空白」だったのですが、今、データベースを一旦元に戻し、新しく納品書テーブルを作り直し、中に従業員IDデータを入力した上でクエリを起動したところ、従業員:納品書番号=1:1、で納品書番号が自動生成されました。 しかし、このままですと、ある従業員に対する納品書は、常に同じ納品書番号になってしまうことになります。 ここを解決したいのですが。。。 念のため、もう一度SQLを掲載いたします。 SELECT 注文テーブル.受付年月日, 注文テーブル.控除年月, 注文テーブル.現金入金, 注文テーブル.従業員コード, 商品マスタ.契約番号, 納品書番号.納品書番号, 注文テーブル.商品コード, 注文テーブル.数量, 商品マスタ.ポイント, 従業員マスタ.従業員名, 商品マスタ.商品名名, 商品マスタ.サイズ, 商品マスタ.色, 商品マスタ.商品グループコード, 商品マスタ.控除区分, 商品マスタ.単価 FROM (事業所マスタ RIGHT JOIN ((商品マスタ RIGHT JOIN 注文テーブル ON 商品マスタ.商品コード = 注文テーブル.商品コード) LEFT JOIN 従業員マスタ ON 注文テーブル.従業員コード = 従業員マスタ.従業員コード) ON 事業所マスタ.事業所コード = 従業員マスタ.事業所コード) INNER JOIN 納品書番号 ON 注文テーブル.従業員コード = 納品書番号.従業員コード WHERE (((商品マスタ.控除区分)="0")) ORDER BY 注文テーブル.受付年月日, 注文テーブル.控除年月, 注文テーブル.現金入金, 注文テーブル.従業員コード; 長きに渡ってお手数をおかけしますが、何卒よろしくお願いします。

camo-tech
質問者

補足

大変申し訳ないです。 まず、やろうとしていることをまとめます。 ・注文入力(これは一般的なものと考えていただいて結構です) ・クエリで、従業員IDと注文IDを選択し、納品書の元データを作る (どの従業員に対し、何が納品されたかを打ち出したい) ・納品書を打ち出す際、従業員や注文に関係なく、ユニークな番号を つけたい (これが大元の要望です) 次に、「あいまいな・・・」の件ですが、一旦納品書テーブルからデータをなくしてみたら(つまり「納品書番号(オートナンバー)」と従業員ID(テキスト)が一切入っていない状態)、エラーは出なくなりました。が、クエリの実行結果には何も入っていない状態です。 従業員IDや注文IDを指定しても、しなくても、結果は空白です。 納品書の構造は、おっしゃるとおりで行きたいと思っております。

全文を見る
すると、全ての回答が全文表示されます。
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

(1)INNER JOIN と LEFT JOIN が混在している (2)「従業員コード」のように同名のフィールドがあるのに修飾がない 以上の原因が考えられます。SQLビューで、SQL全文を掲載した方が 良いでしょう。

camo-tech
質問者

補足

前の質問に引き続き、ありがとうございます。 現在の状況ですが、クエリの実行時にはエラーは出ないものの、実行結果は空白(なにもデータが表示されない)状態です。 クエリの裏のSQLをそのまま載せてみます。 よろしくお願いします。 --------------------------------------------------------------- SELECT 注文テーブル.受付年月日, 注文テーブル.控除年月, 注文テーブル.現金入金, 注文テーブル.従業員コード, 商品マスタ.契約番号, 納品書番号.納品書番号, 注文テーブル.商品コード, 注文テーブル.数量, 商品マスタ.ポイント, 従業員マスタ.従業員名, 商品マスタ.商品名名, 商品マスタ.サイズ, 商品マスタ.色, 商品マスタ.商品グループコード, 商品マスタ.控除区分, 商品マスタ.単価 FROM (事業所マスタ RIGHT JOIN ((商品マスタ RIGHT JOIN 注文テーブル ON 商品マスタ.商品コード = 注文テーブル.商品コード) LEFT JOIN 従業員マスタ ON 注文テーブル.従業員コード = 従業員マスタ.従業員コード) ON 事業所マスタ.事業所コード = 従業員マスタ.事業所コード) INNER JOIN 納品書番号 ON 注文テーブル.従業員コード = 納品書番号.従業員コード WHERE (((商品マスタ.控除区分)="0")) ORDER BY 注文テーブル.受付年月日, 注文テーブル.控除年月, 注文テーブル.現金入金, 注文テーブル.従業員コード;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access2002でレポート(納品書)に連番を打ち出したい

    色々検索したのですが、なかなかヒットせず、質問させていただくことにしました。 要望は単純です。でも、私に回答を導くことはできませんでした。 一般的な「納品書」をレポートで印刷する際、連番(ユニークであればなんでもかまいませんが)を振って、印刷したいのです。 裏にあるテーブルやクエリには連番フィールドがないので、困っています。と申しますか、フィールドをどこかに作ろうと思っても、リレーションをつなぐ相手がいないのです。 「注文」に紐付けるにも、納品書は複数の「注文」から成り立っているので、相手が複数になりますし、「顧客」に紐付けると、今度はユニークにならず。。。 「連番テーブル」みたいなものを独立させ、クエリを実行するたびに[番号+1]のような処理をさせようかとも考えましたが、独立したテーブルを作ってクエリに紐付けると、Accessから怒られまして。。。 文房具店に売っているような納品書には最初から連番が振ってあるものがありますよね?あのイメージです。 どなたか解決策をお持ちの方がいらっしゃれば、是非ご教授お願いいたします。

  • ACCESSで年度入力したいです。(その3)

    何度も申し訳ないです。 その1 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1588248 その2 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1590233 で質問させてもらっています質問の件ですが、その2で回答もらった方法で試したところ、クエリが上手くいきません。 「DB」テーブル内に「納入年度」の項目設けて、そこにH15など和暦を文字列として格納をしています。 教えていただいたとおり、クエリを作成(回答の関数内年度指定は、自分が作ったものにあわせたつもりです。)しましたが、実行するとパラメータを聞いてきます。 適当に入れると、範囲が大きいとエラーが出るだけです。 良い解決策あれば教えてください。 また、このサイトでこのように何回も質問してもいいものか迷っています。^^; 私みたいなアクセス初心者が交流できるフォーラムやHPありましたら教えていただければとも思います。

  • 【続続】Access2002で連番のついた納品書を出力したい

    1. http://oshiete1.goo.ne.jp/qa5243829.html 2. http://oshiete1.goo.ne.jp/qa5257035.html 上記のように、質問してまいりまして、後一歩まで参りました。 これまでの経緯は下記のとおりです。 1.複数の注文をまとめ、それにユニークな連番を振って納品書を作りたい(これが大元の要望でした) 2.上記質問の中でいただいた回答で、フォームを使って納品書番号をオートナンバーで振ることは成功(私の理解不足で回答者様を振り回してしまいましたが、思うような連番(納品書番号)を自動的に振ることに成功しました) 3.フォームのサブウィンドウ(?)を用いて、納品対象の注文を選択したい(ここでとまっています) テーブルは下記のとおりです。(計4つ) 1.従業員マスタ(データ投入済み) ・従業員コード(テキスト) ・従業員名(テキスト) ・従業員名カナ(テキスト) 2.納品書番号(データはフォームから自動生成) ・納品書番号(オートナンバー) ・納品日付(日付) ・従業員コード(テキスト) 3.注文情報(データ投入済み) ・注文番号(テキスト) ・従業員コード(テキスト) ・商品ID(テキスト) ・数量(数値) ・納品書番号(数値) 4.商品マスタ(データ投入済み) ・商品ID(テキスト) ・商品名(テキスト) ・単価(数値) 以上の4つのテーブルでテストDBを作っています。 上述したとおり、フォームで、 1.新規レコードの作製 2.納品日付入力 3.コンボボックス(従業員名、カナ)をコンボボックスで選択 という手順を踏み、納品書番号が自動的に振られるフォームまで作成できました。(画像添付) 次の段階ですが、フォームの中にサブフォーム(?)を作成し、「どの注文で発生した商品を」納品するのか、注文情報テーブルから選択し、レポートにして打ち出したいのです。 納品書の基本単位は従業員ごとですが、納品がバラバラに行なわれることが多く(例:Aさんが1、2、3と注文したとしても、2、だけ先に納品され、1、3が別の日に納品される)、注文情報から「注文番号」で選択できれば。。。と思っています。 前の質問でもお答えはいただいたのですが、私の知識不足でうまく実現できませんでした。 他に、必要な情報がございましたら提示いたしますので、よろしくお願いします。 何卒よろしくお願いします。

  • 【Access】 レポートの印刷について

    お世話になっています。 Accessでの印刷方法につきまして、質問があります。 質問の内容は、下記↓の質問と同じなのですが、この質問の答えにつきまして補足のアドバイスを頂けると助かります。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=782664 当方では各レコードにIDは振っておりますので、WhereConditionに指定する「ユニークなコード」について、具体的にお教え頂けると幸いです。 よろしくお願いいたします。

  • ハリー・ポッターと秘密の部屋差別表現について(続)

    ハリー・ポッターと秘密の部屋に兎口という表現があることが、みなさんからの回答でわかったのですが、何ページのどの辺にあるのか、詳しく教えてください。 前回の質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=40550 http://www.okweb.ne.jp/kotaeru.php3?q=40550

  • 印刷毎に連番を振りたいのですが

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=513424 上記と似たような質問があったのですが、よく分からなくて質問しました。 例えば、あるWordの文章を10枚印刷したいとします。 そうすると同じ文章が10枚印刷されるのですが、1~10のそれぞれの印刷物にNo.1、No.2・・・No.10と任意の場所にカウントしていくようにするには、どうすればいいのでしょうか? よろしくお願いします。 使っているのはWord2000です。

  • 回答者のマナー?

    ここの質問に対する回答 http://oshiete1.goo.ne.jp/kotaeru.php3?q=62568 ここの回答のまるまるコピー! http://oshiete1.goo.ne.jp/kotaeru.php3?q=29341 参考URLぐらい書くべきだと思うんですが・・・ みなさんはどう思われますか?

  • 「続」初めて会って・・・。

    前回の続きなのですが(http://oshiete1.goo.ne.jp/kotaeru.php3?q=139472) もうすぐ会う約束(お互い友達連れて)していたのですが、都合が悪くなり無期延期になってしまいました。(喧嘩したとかじゃないです) 相手の子はもう一人別の人(僕にしてみたらライバルですね)と会う約束しててどうもそちらの方の人と早く会うようです。 こういう場合、やはり早く会う方が有利ですよね・・・? 僕はどうしたらいいのでしょう・・・・

  • 教えて!Gooで多くの方のご回答を得るには?

     このサイトで質問をすると時系列に質問が並びます。また各カテゴリー毎に時系列に質問を見ることも出来ます。しかしながら、時間が経過すると古い質問は新しい質問に押され見られにくくなります。  多くの方々からご回答を得る機会を持つために露出度を高める方法はあるのでしょうか。  因みに、100以上の回答(アドバイス)を得てるご質問もありますが、どうして新しい質問が次から次へされるのに形骸化しないのでしょか。 <100以上のご回答を得ているご質問> http://oshiete1.goo.ne.jp/kotaeru.php3?q=272266 http://oshiete1.goo.ne.jp/kotaeru.php3?q=234567 http://oshiete1.goo.ne.jp/kotaeru.php3?q=454545 http://oshiete1.goo.ne.jp/kotaeru.php3?q=186872

  • 「気の措けない」ではありませんか?

    少し前の質問に対して,回答者も(回答者ですら)複数の方が,「気の(が)置けない」という文字をつかっています。 正しい漢字を教えてください。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=500397 http://oshiete1.goo.ne.jp/kotaeru.php3?q=836530

このQ&Aのポイント
  • 示談書にサインをした後でも、相手の了承があれば内容を変更することは可能でしょうか。
  • 変更できた場合、婚姻関係を知らなかったため慰謝料の支払い義務はあるのでしょうか。
  • 相手の了承が得られない場合、内容錯誤として示談書を無効にすることはできるでしょうか。
回答を見る