• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MA ACCESSデータベースに詳しい方お願いします。)

MA ACCESSデータベースに詳しい方お願いします

nicotinismの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.5

1・入力する立場とすれば、誤入力の際にすぐにエラー表示された方がありがたいと思います。 1レコード入力が終わった段階まで分からないと、 『なんで今頃出るんだよ! キーッ』てな人もいますので。(-_-;) 遅くなってきたなーと思える頃に考え直しても良さそうに思います。 その頃には、質問者さんも自力解決出来る力量がついていて欲しいと思います。 2・最初の質問に >2.商品数の値が「3」の場合に、管理番号2の値が「03」以上の値を入力できないようにする とあったので、その条件に合うようにしたつもりなのですが・・・? もしかして、私勘違い? 詳しくご説明をお願いします。 3・安直な方法で・・・良いのですかね? 少し考えを変えて、まともにしましたつもり。 提示されたコマンドクリック時のイベントを書き換えてみました。 Private Sub コマンド_Click() Dim Data1 As Date 'カレント行の各値を変数に保存。 Dim oldKBNo As Long Dim newKBNo As Long If Me!ID <> DMax("ID", "T仕入管理") Then MsgBox ("残念") '※最終レコードがカレントレコードではない Exit Sub End If Data1 = IIf(IsNull(Me!仕入日), Date, Me!仕入日) oldKBNo = Nz(Me!管理番号1, 0) newKBNo = oldKBNo + 1 + Abs(oldKBNo Mod 9 = 0) + (oldKBNo = 0) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~↑の9は本番では999に変えてください。9の次は1 '新規レコードに移動 Me.Recordset.AddNew ' '変数の値を加工して代入 Me!仕入日 = Data1 Me!管理番号1 = Right(CStr(newKBNo), 1) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~↑ここも1から3へ End Sub 関数は自分でヘルプを参照してね。分からん関数のとこにカーソルを合わせF1キーで出ます。 Abs(oldKBNo Mod 9 = 0) と (oldKBNo = 0) は判別式です。 Trueの場合は-1がFalseでは0となるのを利用しています。 以下は独り言です。スルーしてください。 どうも管理番号1と管理番号2がテキスト型なのが気になる。 テーブルデザインで数値型にして、書式のところに必要なだけゼロを並べれば 数値型で有りながら、9→009になるのに。 単にデータ型変換とゼロ入力が面倒くさいからです。(^^ゞ

yu_ji
質問者

お礼

nicotinism 様 ご回答ありがとうございます。<m(__)m> >1・入力する立場とすれば、誤入力の際にすぐにエラー表示された方がありがたいと思います。 >1レコード入力が終わった段階まで分からないと、 「T仕入管理」と同じフィールドを持つ「T月刊仕入管理」なるテーブルを作成してそのテーブルに 入力フォームより入力して「T月刊仕入管理」のデータを「T仕入管理」に追加しようと思ったのですが 「T月刊仕入管理」にデータが溜まっていくのですから同じ事ですよね… >遅くなってきたなーと思える頃に考え直しても良さそうに思います。 >その頃には、質問者さんも自力解決出来る力量がついていて欲しいと思います。 自力解決出来るように頑張ります。 >2・最初の質問に >>2.商品数の値が「3」の場合に、管理番号2の値が「03」以上の値を入力できないようにする >とあったので、その条件に合うようにしたつもりなのですが・・・? >もしかして、私勘違い? >詳しくご説明をお願いします。 説明不足また説明が下手ですみません。<m(__)m> 「管理番号2の値が「03」以上」ではなく「03」より多くでした。 --------------------------------------------------------------------------- 仕入管理テーブル ID 仕入日    品名   商品数 管理番号1  管理番号2  仕入場所_CD 1 2010/09/26  A財布   3    001     01      AB 2 2010/09/26  A財布   3    001     02      AB 3 2010/09/26  A財布   3    001     03      AB 4 2010/09/26  B財布   2    002     01      AB 5 2010/09/26  B財布   2    002     02      AB 6 2010/09/26  C財布   1    003     01      AB --------------------------------------------------------------------------- 上記のように入力テーブルにて入力して「商品数」の(3)は(A財布が3個有ります)と言う意味になります。 ですので「商品数」は(3)の時もあるし(2)の時もあります。 それで「管理番号1:001」「管理番号2:01・02・03」A財布の「管理番号2」を「商品数」の値より多く 入力出来ないようにしたいです。 (A財布)を3個仕入れたら(A財布)のデータを、3レコードより多く入力出来ない様にする。 これで上手く説明出来ていますでしょうか? >3・安直な方法で・・・良いのですかね? >少し考えを変えて、まともにしましたつもり。 >提示されたコマンドクリック時のイベントを書き換えてみました。 ありがとうございます。<m(__)m> 取り合えずこの方法とらして頂き「解答番号:No.4」の >標準モジュールに自前の関数を作成して の処を勉強してみたいと思います。

関連するQ&A

  • Access サブフォームにフィルターをかけるには

    Access初心者です、教えてください。 AのテーブルにIDと名前、BのテーブルにIDと電話番号と管理番号と業種があります。 メインフォームのテキストボックスでAのテーブルからあいまい検索で電話番号を検索、検索結果のIDでBテーブルのサブフォームにフィルターを掛けたいのですが、 どのようにしたらいいのでしょうか?

  • Access2013 不一致抽出

    不一致抽出方法についてご教授いただけないでしょうか? 下記のようなテーブルA、テーブルBがありお互いの差を抽出結果として表示したいと思っています。 比較したいテーブルが複数ある為抽出フォーム側のテキストボックスにて抽出条件を入れたいと思っています。 フォーム1のテキストボックス1とテキストボックス2に比較したいテーブルA、テーブルBと入力したいと考えています テーブルA JANコード    品名  店番 4912345678901 品名1  00001 4923456789012 品名2  00001 4934567890123 品名3  00001 4945678901234 品名4  00001 テーブルB JANコード    品名  店番 4912345678901 品名1  00002 4934567890123 品名3  00002 4945678901234 品名4  00002 4956789012345 品名5  00002 抽出結果 JANコード    品名  店番 4923456789012 品名2  00001 4956789012345 品名5  00002

  • ACCESS 複数テーブルの各合計値を期間を指定して算出、閲覧する方法について

    私はACCESS初心者です。会社用で日々の在庫数量を閲覧出来る仕組みを作成しております。 標題の件で行き詰ってしまい、皆様のお力添えを頂きたく、投稿させて頂きました。 現在の設定は下記の通りです。 部品情報テーブル: ・ID(主キー) ・部品番号 仕入履歴テーブル ・ID(主キー) ・部品番号 ・仕入数量 ・仕入日 生産履歴テーブル ・ID(主キー) ・部品番号 ・生産数量 ・入庫日 販売履歴テーブル ・ID(主キー) ・部品番号 ・販売数量 ・販売日 この後、下のようなクエリ(フォーム)で期間を指定して、 それぞれの合計値の算出・閲覧と、在庫数量を算出したいと考えております。 在庫数量確認クエリ(フォーム) ・期間指定 開始~終了 ・部品番号 ・(指定期間の)仕入数量合計(1) ・(指定期間の)入庫数量合計(2) ・(指定期間の)販売数量合計(3) ・在庫数量:([(1)]+[(2)])-[(3)] 例で御説明致しますと、 部品番号:A (仕入履歴テーブル)仕入日、数量: 8月 1日 10個 8月10日 10個 (生産履歴テーブル)入庫日、数量: 8月 2日 20個 8月15日 20個 (販売履歴テーブル)販売日、数量: 8月 5日 30個 8月18日 30個 この時、期間指定「8月1日~8月19日」で設定し、 (仕入10+10)+(入庫20+20)-(販売30+30)=(在庫 0) を成り立たせたいのです。 複数のテーブルに「日付」がある為、どのようにBETWEENを設定をすれば良いか、 また、期間を指定した時に各テーブルの数量を合計で算出するには、 どのようなクエリ設定をすれば良いのでしょうか。 何卒アドバイスを頂けます様、お願い申し上げます。

  • アクセスについて教えてください。

    アクセス2002 XP使用 Aテーブル ID 氏名 電話番号 住所  などの個人情報入力 Bテーブル ID (リレーションするためのID主キー) 管理ID 購入商品 上記のように今作っているのですが、AテーブルIDとBテーブルは1対多でのリレーションしてます。 フォームで帳票形式で見たとき、 管理NOの数だけレコード表示されるのはいいのですが、 AテーブルID 1に対し、管理IDが111と三件分あるとして、(勿論BテーブルIDには123となってます) AテーブルID1にひとつ、受付NOを追加して、   ID  受付NO  管理ID   1   1    1   1   2    1   1   3    1   2   1    2   2   2    2   3   1    3 見たいに受付NOがIDごとに123。。。と自動入力されル洋にしたいのですがどのようにすればできますか?素人なので説明もうまくできなくわけが変わらないかもしれませんがおしえてください。よろしくお願いします。

  • accessデータ活用法

    編集方法で悩んでおります。 受注テーブル ID オートNo. 品名 テキスト 数量 数値 品名テーブル ID オートNo. 品名 テキスト とあるとします。 テーブル同士は、リレーションはされておらず、 受注フォームのリストボックスのコントロールソースに品名テーブルが参照されています。 今回、品名を分類コードで仕訳したいのですが... せっかく品名が入力されているのでそれを引用したいです。 そこで、 (1)新たに分類テーブルを作成し組込む (2)品名テーブルの行を増やし、分類コードのフィールド追加 (3)品名を置換えや条件分岐関数で分類コードに変換 ちなみに、品名/分類は10種類以内です。 (1)(2)はいろいろ試しましたが、受注テーブルの既存データのクエリ結果が得られません。 そもそも、考えが間違ってるでしょうか??? 宜しくお願いします。

  • ACCESS2010 SQL 結合キーについて

    お世話になります。拙い文面ではありますがよろしくお願いいたします。 Vista ACCESS2010を使用しています。 下記SQLで2個のテーブルを外部結合していますが、テーブルの一方で結合で使用しているフィールドの桁が変更になり、テキスト型のフィールドを0埋めして外部結合しようとしています。フィールドを関数で桁揃えして結合キーとして使用することはできないものでしょうか。 ---売上金額---------- 対象月 テキスト型 商品ID テキスト型 商品名 テキスト型 支店CD テキスト型 金額  通貨型 支店CD 3ケタ→5ケタへ変更 ---支店マスタ-------- 支店CD テキスト型 支店名 テキスト型 支店ソート番号 数値型 支店CD 3ケタ・・・売上金額の支店CD変更に伴い、Format等で5ケタへ変更したい ---変更前----- SELECT a.商品ID,a.商品名,a.支店CD,b.支店名,b.支店ソート番号,a.金額 FROM 売上金額 a LEFT JOIN 支店マスタ b ON a.支店CD = b.支店CD WHERE a.対象月 >=#2013/04/01# AND a.対象月 <=#2013/07/31# GROUP BY a.商品ID,a.商品名,a.支店CD,b.支店名,b.支店ソート番号,a.金額 ---以下へ変更--- SELECT a.商品ID,a.商品名,Format([支店CD],"00000"),a.支店名,支店ソート番号,a.金額 FROM 売上金額 a LEFT JOIN 支店マスタ b ON a.支店CD = b.支店CD    WHERE a.対象月 >=#2013/04/01# AND a.対象月<=#2013/07/31# GROUP BY a.商品ID,a.商品名,Format([支店CD],"00000"),a.支店名,b.支店ソート番号,a.金額 変更後の ON以下を次のように変更するとJOINでサポートされていませんのエラーとなります。 ON Format([a.支店CD],"00000") = b.支店名  都合上フィールドとテーブル名は変更していますがそれ以外は変わりません。 よろしくお願いいたします。

  • accessで2つのテーブルから参照する方法

    access2007を使っています。 例えば、 テーブルA ID   品名   価格 A1   鉛筆    100円 テーブルB ID   品名   価格 B1  消しゴム  50円 というレコードが2つあった場合 テーブルAとテーブルBのどちらからも参照して ID  品名   価格 A1  鉛筆   100円 B1  消しゴム  50円 というふうにクエリにデータを反映させるのにはどうすれば良いのでしょうか?  

  • アクセスでの抽出方法

    アクセス2000を使用しています。 今までエクセルで単価を調べていたのを、アクセスで調べたいと考えています。 今は下図のようにテーブルのフィールドを作りました。 担当者 見積番号 機械名 部品名1 単価1 部品名2 単価2・・・ ○○様 001   △△機   A1   500  A2    300 ただ、機械一式で作る場合は問題無いのですが、機械の部品だけを数点作る、という事が多くあります。 例えば、機械一式の場合は下記のようなテーブルを作りました。 品名1 単価1 品名2 単価2 品名3 単価3 品名4 単価4・・ A1   500  A2   300  A3   800  A4   200 この機械で部品3点の場合は下記のようになります。 品名1 単価1 品名2 単価2 品名3 単価3 品名4 単価4・・ A2  300  A4   200  A6   800  A9   300 これで「A2の部品の単価が知りたい」となった時には、フォームに「テキストボックス品名1」と「テキストボックス品名2」を作り、それぞれから調べる方法しか僕には分かりません。 これを、1つのテキストボックスで、部品名を入力またはコンボなどからの選択で、品物1、品物2、品物3などのフィールド全てから検索し、単価を抽出する事は出来ないでしょうか? 今はエクセルで見積書を作成し、そこからアクセスへインポートしています。 言葉足らずかも知れませんが、よろしくお願いします。

  • Accessクエリ IIFについて

    お世話になります。 2つのテーブルをIDで紐付けて、それぞれの項目を比較し、○×を付けたいと思います。 【テーブルA】  ID メーカー 型番 品名 【テーブルB】  ID メーカー 型番 品名 【クエリC】  テーブルAとテーブルBをIDで紐付けて、各フィールド名を   テーブルAの方は前回_メーカー、前回_型番、前回_品名 とし、   テーブルBの方は今回_メーカー、今回_型番、今回_品名 とする。 【クエリD】  クエリCを元に、   前回_メーカー、前回_型番、前回_品名、今回_メーカー、今回_型番、今回_品名   を並べて表示し、それぞれを以下のように評価する。   メーカー評価:IIf([前回_メーカー]=[今回_メーカー],"○","×")   型番評価:IIf([前回_型番]=[今回_型番],"○","×")   品名評価:IIf([前回_品名]=[今回_品名],"○","×")   上記3つの評価でいずれかが×となっているレコードを抽出。 しかし、前回と今回でいずれも型番が空白(Null)だった場合、上記評価を すると"×"となってしまいました。 そこで質問ですが、   ・そもそもNull同士の評価は"×"になってしまうのでしょうか?(比較できない?)   ・テーブルAはSQL Server上にあり、テーブルBはExcelをインポートしたもの   (Accessのローカルテーブル)です。この違いによるものでしょうか。 ご教授の程、宜しくお願い致します。

  • ACCESSのテーブル設計とクエリ

    ACCESS初心者です。 ACCESS2010 OSはWindows7です。 パソコンはアクセスとエクセルマクロの入門書を読み終えたレベルです。 只今、注文実績管理表を作成するために、必要な情報を複数のテーブルに 分解してコード化していますが、関連付けできない為にデーターの参照ができません。 対応方法があれば教えていただくようお願いします。 どうしても実現したいので、テーブルの設計が間違えているかもしれませんが写真を掲載します。 ■現在の状況と質問 A)商品だけで300アイテムあります。リストを見ながら商品名と金額を入力するのは、膨大な時間を奪われるので、発注書に書かれている。4ケタの商品番号と注文数量の入力のみに したい。その後に入力した4ケタの数字でデーターを集計し、分析業務につなげていきたい B)【C】と【D】は注文書のイメージです。ひとり最大50個の商品を一枚の注文書で 発注します(ひとりの注文が1か月に1~3回)。一回の注文で最大、50品目のデーターを 格納することは、アクセスで可能なのでしょうか? C)発注実績の抽出ですが、以下内容で実行したいです。どうすれば可能でしょうか?   テーブルの設計と関連付け、リレーションの設定がわかりません。   i)個人別の1か月注文実績。商品名、注文合計数、合計金額を商品別に表示   ii)個人別の注文合計金額(月、年間)の集計。   iii)商品Aの注文実績(月、年間) D)リレーションの状態。 【A】の(2)と【C】の(2)  【B】の(2)と【D】の(3)、(5)、(7)、(9)、(11)、(13)、(15)、(17)、(19)・・・ 【C】の(1)と【D】の(2)のみ参照整合性がとれています。 E)商品テーブルのドリルボタンを押して、下の階層を見ようとすると、画像のような メッセージがでます。これはなんなのでしょうか? ■現在の状況を列挙します。 【A】顧客テーブル (1)顧客ID(オートナンバー・・・長整数型) 主キー(2)発注コード(テキスト型)         ※発注コードは『英数字』のためテキスト型。リンク先も『テキスト型』 (3)氏名(テキスト型) 【B】商品テーブル (1)商品ID(オートナンバー・・・長整数型) 主キー(2)注文番号(数値型・・・倍精度浮動小数点型) (3)品名(テキスト型) (4)金額(通貨型) 【C】注文テーブル 主キー(1)注文ID(オートナンバー・・・長整数型)    (2)日付 (3)発注コード(テキスト型)        ※発注コードは『英数字』のためテキスト型。リンク元も『テキスト型』 【D】注文明細テーブル(注文番号は全て4ケタの数字です。重複Noはありません) 主キー(1)注文明細ID(オートナンバー型・・・長整数型) (2)注文ID(長整数型) (3)注文番号1(数値型・・・長整数型) (4)数量(注文番号1) (5)注文番号2 (6)数量(注文番号2) (7)注文番号3 (8)数量(注文番号3) (9)注文番号4 (10)数量(注文番号4) ・ ・ ・※注文番号50まで続く・・・