• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESSのモジュールで)

Accessモジュールで受注管理データベースを作成する際の注意点

DonChan777の回答

  • ベストアンサー
回答No.1

Dim DB As Database Dim RRS As Recordset Dim SQL As String Set DB = CurrentDb SQL ="SELECT Max(顧客コード) AS 顧客コードの最大 FROM 顧客マスタ GROUP BY グループ HAVING (グループ='CB');" Set RRS = DB.OpenRecordset(SQL, dbOpenSnapshot) Me!顧客コード = RRS!顧客コードの最大 + 1 RRS.close 上記の方法でいかがでしょうか?

kyoukorumi
質問者

お礼

ありがとうございます! あーだこーだやってたのに、あっけなくできました。 本当にどうもありがとうございました。

関連するQ&A

  • SQLのパラメータ・・

    たびたびお世話になっております。 顧客マスタの新規コードを、最大値に1を足して生成しています。 既存の顧客コードの最大値を求める為、 Dim mySQL as Stirng,Rst as Recordset mySQL="SELECT Max(局コード) AS 局コードの最大, 会社コード FROM 顧客マスタ GROUP BY 会社コード HAVING (会社コード=[Forms]![フォーム]![テキスト1]);" Set Rst = CurrentDB.OpenRecordset(mySQL) というSQL文をかきました。 ところが、SQLをレコードセットにすると「パラメータが少なすぎます。1を指定してください(3061)」というエラーメッセージが出てしまいます。 クエリーを作成して実行しても正しい結果を返すのに、SQLだとダメなのはなぜなのでしょうか。 どうぞよろしくお願いいたします。

  • ACCESS2000で最大値のレコードを取り出したいです。

    マイクロソフト ACCESS2000 についての質問です。 何万行かの受注データがある中で、顧客ごとに  ・最初に購入した受注レコード  ・最後に購入した受注レコード をそれぞれ出したいと思っています。 MAX関数やMIN関数を使うのかと思いましたが、 なかなかうまくいかず・・・ 最近SQLを学び始めたためどうもよくわかりません。 どなたか力を貸してください。 よろしくお願いします。

  • Accessでのフォーム入力エラー

    顧客管理を 顧客マスタ 受注明細 入金明細のテーブルを作成し、リレーションシップの設定をしてあります。テーブルには、この形で入力できるのですが、フォームをウィザードを使って作成(サブフォームのリンクされたフォーム)しました。 新規入力することができません。「テーブル’顧客マスタ’にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更をおこなうことはできません。」のメッセージが出ます。 どうしていいのか、わかりません。教えてください。

  • Access2003 一つのクエリで結果を出したい

    お世話になります。 下記テーブルを紐付けてクエリを作成します(Access2003)。 受注テーブル  ・ID  ・コード  ・数量 検品テーブル  ・ID  ・コード  ・検品フラグ マスターテーブル  ・ID  ・コード  ・印刷フラグ 検品テーブルのレコードは、受注テーブルの数量合計が展開されたレコード数となります。例えば、AAAというコードで数量合計が8の場合、検品テーブルではAAAのレコードが8レコード存在することになります。 但し、マスターテーブルの印刷フラグがYesとなっているものは、数量がいくつあっても受注テーブルは1レコード作成されます(数量合計で展開しない)。  受注テーブル   ID コード 数量   1  AAA   5   2  AAA   3   3  BBB  100  検品テーブル   ID コード 検品フラグ   1  AAA   Yes   2  AAA   Yes   3  AAA   Yes   4  AAA   Yes   5  AAA   Yes   6  AAA   Yes   7  AAA   No   8  AAA   Yes   9  BBB   Yes  マスターテーブル   ID コード 印刷フラグ   1  AAA   No   2  BBB   Yes こんな感じです。 そこで各テーブルをコードで紐付けてグループ化し、検品フラグYesで抽出した状態で以下の結果を表示出来るようにしたいところです。 コード 数量合計  AAA   7  BBB  100 要するに印刷フラグがYesのものは受注テーブルの数量合計を表示し、それ以外は検品された数を表示させたいと考えています。 あらかじめ受注テーブルでコードでグループ化し、数量の合計を算出するクエリ(※1)を作成し、そのクエリと検品テーブル、マスターテーブルを紐付けたらうまく表示出来ました。 ※数量合計はIIFで印刷フラグ=Yesの場合は※1の数量合計を、Yesではない場合は検品テーブルのレコードカウント数を表示。 しかし、できれば一つのクエリで上記の結果を表示させたいのですが、可能なのでしょうか。 ご教授お願い致します。

  • 集合関数(MIN)で取得した値をキーする場合

    SQLの構文でご教授願います。 テーブル1(顧客マスタ) 顧客番号  住所コード 1        01 1        02 1        03 テーブル2(住所マスタ) 住所コード 住所 01       ううう 02       いいい 03       あああ 上記2テーブルを連結し、 「顧客番号」と「同一顧客内の最小の住所コード」と「その住所コードの住所」を取得したいのですが、、、 SELECT 顧客マスタ.顧客番号,MIN(住所マスタ.住所コード) AS 住所コード,MIN(住所マスタ.住所) AS 住所 FROM 顧客マスタ INNER JOIN 住所マスタ ON 顧客マスタ.住所コード = 住所マスタ.住所コード GROUP BY 顧客マスタ.顧客番号; と発行すると、 顧客番号  住所コード 住所 1        01      あああ となってしまいます。 これを、 顧客番号  住所コード 住所 1        01      ううう のように取得したいのですが、 どのようなSQL文を書けばよいのでしょうか。 ちなみに、VIEWは使いたくなく、複雑なSQL文でもかまわないので、 一度で持ってこれるような構文はないでしょうか? 宜しくお願いいたします。

  • Accessのクエリについて教えてください。

    クエリで顧客名を入力するとその人のデータが表示されるようにしたいのですが、購入履歴がない人は表示されません。購入履歴のない人も全て表示させる方法を教えていただけますか? ちなみにSQLはこういう感じです。よろしくお願いします。 SELECT 顧客マスター.顧客ID, 顧客マスター.氏名, Sum(販売.販売額) AS 販売合計 FROM 顧客マスター INNER JOIN 販売 ON 顧客マスター.顧客ID = 販売.顧客ID GROUP BY 顧客マスター.顧客ID, 顧客マスター.氏名 HAVING (((顧客マスター.氏名) Like [顧客名字を入力してください] & "*"));

  • AccessVBAでSQL文を書いています

    私の環境はOS:Xp      ACCESS2000です。 宜しくお願いします。 タイトルの通りSQL文を書いているんですが、書き方が解りません。 sql = "select 顧客コード from ポイント管理テーブル " sql = sql + " where 顧客コード = '" & Me.顧客コード & "'," sql = sql + " 受注年 = '" & Me.受注年 & "'," sql = sql + " 受注月 = " & Me.受注月 & "," sql = sql + " 受注日 = " & Me.受注日 & "" 初歩的な質問なのですが、上記はどのように記述したらよいのでしょう? ちなみに、顧客コードと受注年がテキスト型 受注月と受注日は数値型としてテーブルに持っています。 よろしくおねがいします。

  • Accessのsql(ロジック)について伺います

    Access mdb内でローカルDB(ADO)へSQL接続を行うプログラムを組んでおります。 ■テーブル:マスタTBL | 年 | 月 | 日 | 時 | 分 | 秒 | コード | +---- +-- +-- +-- +--+---+------+ | 2013 | 10 | 31 | 10 | 05 | 20 | A1234 | | 2013 | 10 | 31 | 10 | 10 | 00 | B1234 | | 2013 | 11 | 01 | 00 | 00 | 01 | A1234 | | 2013 | 11 | 01 | 00 | 00 | 01 | A1234 | | 2013 | 11 | 01 | 00 | 00 | 01 | A1234 | | 2013 | 11 | 22 | 05 | 10 | 09 | C1234 | | 2013 | 10 | 31 | 00 | 10 | 00 | B1234 | | 2013 | 10 | 31 | 22 | 46 | 55 | A1234 | ※後の作業都合上、日付も含めカラムは全て"文字列"です。 ※全カラム、nullは存在しません。 ※各レコードの格納順に統一性はありません。 ※動作環境はAccess mdb(Office 2007)/Windows7(32bit)です。 【最終的にやりたいこと】 マスタTBLより、最繁日3日分(同じ年月日のレコード数が多い上位3日分)を選定し、 更に時間別、かつコード別の件数を求める(.csv出力)のが最終目標です。 SQL一発でできれば良いのですが、私の力ではそれが組めないため2段階に分け、 第1段階として別の作業用TBLを作成し、まずそこに最繁日3日分を抽出&登録、 第2段階で作業用TBLに対して時間別・コード単位の抽出を行う段取りとしました。 ご質問は、第1段階を満たすSQLについてです。 【ご質問】 上記のテーブルがあるとします。 この中から、最繁日3日分(同じ年月日(時分秒は考慮不要)のレコード数が多い上位3日分)の全レコード(抽出には時分秒も必要)を抽出し、同設定の別テーブルへ登録したい。 と言うのがやりたい事なのですが、抽出するSQLが作れず困っております。 現group by設定をしてしまうと、Countさせて上位日数と件数は判明できますが、その全レコードを羅列させる事ができません。 抽出段階で考慮すべきは日付までなので、group byを考えて時分秒を省いてしまうと、その後秒単位で抽出が必要な第2段階が行えなくなってしまいます。 また時分秒をSELECTに指定してしまうと、group byでも時分秒を加えなくてはいけなくなり、「日付3日分で」が満たされなくなってしまいます。。。 現在、group by有りで作成済みのSQL、および出力結果例は下記の通りで、 全く先に進まなくなってしまいました.... [SQL] 'SQL作成 変数A = "INSERT INTO 登録したいTBL " _ & "SELECT 年,月,日,時,分,秒,コード,COUNT(*) AS CNT " _ & "FROM マスタTBL " _ & "group by 年,月,日,時,分,秒,コード " _ & "order by 年,月,日,時,分,秒,コード;" 'SQL実行 Call db.Execute(変数A) [実行結果例] ■テーブル:登録したいTBL | 年 | 月 | 日 | 時 | 分 | 秒 | コード | カウント | +---- +-- +-- +- -+- -+-- +----- +-------+ | 2013 | 10 | 31 | 10 | 05 | 20 | A1234 | 2 | | 2013 | 10 | 31 | 10 | 10 | 00 | B1234 | 2 | | 2013 | 11 | 01 | 00 | 00 | 01 | A1234 | 3 | | 2013 | 11 | 22 | 05 | 10 | 09 | C1234 | 1 | 現状では当然の出力結果ですが、本来出力したいのは、カウントが3件の3レコードと、 2件のレコード*2つ、合計7レコードを出力させたいと言う意味です。 (カウントは必要かと思ったので入れているだけで、仕様上は別に無くても良い物です。) また、とりあえずですが上記SQLが正しく実行され登録したいTBLへ格納される事は確認済みです。 やり方がそもそも間違えている可能性もございますので、その点も含めご指摘ございましたらお願い致します。 以上です。 ご提示できる条件が少なく申し訳ございませんが、ご回答頂ける方がいましたら、 ご教授をよろしくお願い致します。

  • access2003コンボボックスの質問です

    Access2003+sql2005で コンボボックスのテーブルに顧客マスタ(顧客コード+顧客名)を値集合にセットしています。 最大レコード件数を10万にしているのですが、中身はちょうど1万件しか入ってきません。 コンボボックスは1万件が最大なのでしょうか? ご存知の方、教えて下さい。

  • ACCESS テーブルの結合

    お世話になります。 テーブルA(約20万レコード)、B(6レコード)があり、共通しているフィールドは以下の通りです。  ・受注日  ・製品コード  ・数量 AとBのテーブルの共通しているフィールドを条件無しで1つのテーブルとして見立てたいと思っておりますがうまくいきません。 SELECT A.製品コード, A.数量, A.受注日 FROM A UNION SELECT B.製品コード, B.数量, B.受注日 FROM B; 上記SQLでエラーにはならないのですが、レコード数が本来約20万レコードあるはずが、7万レコードしか抽出されません。 SELECT A.製品コード, A.数量, A.受注日 FROM A; と SELECT B.製品コード, B.数量, B.受注日 FROM B; をそれぞれ分けてやると、レコード数に問題ありません。。 どのようにすれば2つのテーブルを1つに結合できるのでしょうか。 ご教授の程、宜しくお願い致します。