アクセスで重複しない商品コードの作成

このQ&Aのポイント
  • DBを作成中の初心者が、フォームで選択された形・生地・色から重複しない商品コードを作成したいと考えています。具体的な方法やテーブルの設計について教えてください。
  • フォームでコンボボックスから形・生地・色を選び、オートナンバーを自動生成して商品コードを作成する方法について教えてください。オート番号は重複を避けるために必要としています。
  • 現在4つのテーブルを使ってクエリを作成しようとしていますが、他の方法があれば教えてください。また、テーブルの設計に関してもアドバイスをお願いします。
回答を見る
  • ベストアンサー

アクセスで重複しない商品コードの作成

AccessでDBを作成中です。まだ初心者で勉強中ですが、お知恵を貸して頂けますでしょうか。 服の形、生地の種類、色をフォームでそれぞれを組み合わせて、重複しない商品コードを作成したいと考えています。 01(形)-05(生地)-03(色)-001(オート番号)=010503001等 フォームでコンボックスリストから形・生地・色を選べるようにして、オートナンバーは自動、最後に自動的にこれら4つを組み合わせた商品コードが表示されればと思っていますが、フォームでこれが出来るためにはどうしたらよいでしょうか? 最後にオート番号を入れたのは、同じ組み合わせでも違う商品となる場合があるため、重複しないようにするためです。 3つのテーブルから出来なさそうだったので、考えたのは4つ目のテーブルを商品数テーブルとしてオート番号を振り、4つのテーブルからクエリをつくる。ここでづまずいてしまいました。 服のスタイル_テーブル ・スタイルID ・スタイル名 生地種類_テーブル ・生地ID ・生地名 色_テーブル ・カラーID ・カラー名 商品数_テーブル ・商品ID(00001~オートで) また、4つもテーブルを作る必要がない、他の方法がある場合はご教授頂けますようお願いいたします。長文失礼致しました。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.7

大変遅くなりました。 [補足その1]について >SQL文を訂正いただきましたが、SELECT 商品数_テーブル2.となっておりましたが、 >この2.はどこからきたものでしょうか? すみません。これは私のほうでの確認したときのテーブル名で SELECT 商品数_テーブル が正しいです。失礼しました。 >2を除いて取り急ぎ、SQL文を貼り付けましたところ、問題なく実行されたようです その通りです。 [補足その2]について コード中の、 >strSQL = "UPDATE T-Number SET T-Number.Number = [Number]+1;" のところで、テーブル名を T-Number としていますが、「-」はOfficeあるいは他のプログラミング言語 などにおいても特別な記号とされています。したがって、テーブルなどの 名称においても、 生地種類_テーブル のように、「_]を用いることをお勧めします。 T_Number なお、 >T-Number を [T-Number] のように[]で囲むと認識されるかもしれません。確認はしていません。 >strSQL = "UPDATE T-Number SET T-Number.Number = [Number]+1;" strSQL = "UPDATE [T-Number] SET [T-Number].Number = [Number]+1;" [補足その4]について(たぶん3かもしれませんが) >テーブル等にも書式で00にはしているのですが、表示は一桁になって >しまっております。 テーブルでの書式は見かけの書式ですので、これを解決するためには、 フィールドの型をテキスト型にし、テーブルに入力するときに、 01 02 03 のように入力するか、あるいはコード中でFormat関数を用いて 変換する必要があります。 No6の中で、 '商品IDは5桁に設定 Me!商品ID = Format(DMax("番号", "番号_テーブル") + 1, "00000") '商品コードの設定 Me!商品コード = Me!スタイルID.Column(0) & Me!生地ID.Column(0) & Me!カラーID.Column(0) & Me!商品ID のようにしているところです。ここのところで、 Me!商品コード = Me!スタイルID.Column(0) & Me!生地ID.Column(0) & Me!カラーID.Column(0) & Me!商品ID を Me!商品コード = Format(Me!スタイルID.Column(0),"00") & Format(Me!生地ID.Column(0),"00") & Format(Me!カラーID.Column(0),"00") & Me!商品ID のようにするかです。この場合は対象の数値が一桁ならば数値の先頭に「0」が 付加されます。しかし二桁になると「0」は付加されません。二桁になる可能性が あるならば、 "00" を "000" にする必要があります。 以上が、補足への回答ですが、どのような人がどのように入力しても 所定の結果が得られるように徹底的にエラー処理をしたものもあります。 上記の補足への回答を確認され、テーブルの設定や入力方法を 確定されたら、また補足してください。よければエラー処理を 施したコードを表示します。

nerihime
質問者

お礼

Piroin654様 ご返信とアドバイス有難うございました。 ご指摘頂いたテーブル名の(-)をアンダースコア(_)に変更しまして、他の箇所も注意しましたところ、作ることが出来ました!! 無知の私に長々お付き合い頂き、ご丁寧にお教えいただきましたことに心より感謝いたします。これからも勉強していきたいと思います。 有難うございました。

その他の回答 (7)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.8

No7のおわりのあたりのコードがずれていました。 Me!商品コード = Format(Me!スタイルID.Column(0),"00") & Format(Me!生地ID.Column(0),"00") & Format(Me!カラーID.Column(0),"00") & Me!商品ID です。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.6

No5です。 二つ訂正します。 (1) 「(2) クエリの設定」のところでSQL文を以下に 置き換えてください。フォームでの並びを商品コード順 にしておきます。 SELECT 商品数_テーブル2.スタイルID, 商品数_テーブル2.生地ID, 商品数_テーブル2.カラーID, 商品数_テーブル2.商品ID, 商品数_テーブル2.商品コード FROM 商品数_テーブル2 ORDER BY 商品数_テーブル2.商品ID; (2) 「(3) コードの設定」の更新後処理のコードを以下に 置き換えてください。 Private Sub カラー名_AfterUpdate()   Dim strSQL As String   Dim intRes As Integer   If IsNull(Me!商品ID) Then     '更新クエリのSQL文の設定     strSQL = "UPDATE 番号_テーブル SET 番号_テーブル.番号 = [番号]+1;"     '「番号_テーブル」の「番号」フィールドの最大値を取得しテキスト型に変換     '商品IDは5桁に設定     Me!商品ID = Format(DMax("番号", "番号_テーブル") + 1, "00000")     '商品コードの設定     Me!商品コード = Me!スタイルID.Column(0) & Me!生地ID.Column(0) & Me!カラーID.Column(0) & Me!商品ID     '「番号_テーブル」の番号フィールドの更新     DoCmd.RunSQL strSQL   Else     intRes = MsgBox("変更しますか?", vbYesNo + vbQuestion + vbDefaultButton1, "商品コードの変更")     '商品IDは変更しません     If intRes = vbYes Then       Me!商品コード = Me!スタイルID.Column(0) & Me!生地ID.Column(0) & Me!カラーID.Column(0) & strNum     End If   End If End Sub

nerihime
質問者

補足

早速のご返信誠に有難うございます。詳しくコードまで書いて頂き大変感謝しております!再度質問をお願いします。 1. SQL文を訂正いただきましたが、SELECT 商品数_テーブル2.となっておりましたが、この2.はどこからきたものでしょうか? ご教授頂いた商品数_テーブルは作りましたが、2というのはなく、2を除いて取り急ぎ、SQL文を貼り付けましたところ、問題なく実行されたようですが、念のためお教え頂けますと幸いです。 2. フォームにてスタイル→生地→色を選ぶと、色を選択した際にエラーが出ました。エラー3144シナックスエラー アップデート構文に誤りがあるとの事が出てしまいました。デバッグをクリックすると、何故かDoCmd.RunSQL strSQL部分が黄色くなっていました。 ちなみに下記が貼り付けた構文です。英語でフィールド名等を付けている為分かりにくいかもしれませんが、T-Number=番号_テーブル等です。もしかしたら、こういう細かい名前を変更した時に誤ってしまったのかもしれません。色々試してみましたが、直す方法がわかりませんでした。お手数をお掛け致しますが、一度ご確認頂けますでしょうか? Private Sub ColorID_AfterUpdate() Dim strSQL As String Dim intRes As Integer If IsNull(Me!ProductID) Then strSQL = "UPDATE T-Number SET T-Number.Number = [Number]+1;" Me!ProductID = Format(DMax("Number", "T-Number") + 1, "00000") Me!ProductCode = Me!StyleID.Column(0) & Me!MaterialID.Column(0) & Me!ColorID.Column(0) & Me!ProductID DoCmd.RunSQL strSQL Else intRes = MsgBox("Do you want to change this?", vbYesNo + vbQuestion + vbDefaultButton1, "Change ProductCode") If intRes = vbYes Then Me!ProductCode = Me!StyleID.Column(0) & Me!MaterialID.Column(0) & Me!ColorID.Column(0) & strNum End If End If End Sub 4. スタイルID 3、 生地ID 6、 カラーID 13、 商品ID 00001の場合、361300001という結果が出るのですが、これを03061300001という様に、IDが一桁(3)の場合でも、03と表示するにはどうしたらよいでしょうか?商品数テーブルや各スタイル_テーブル等にも書式で00にはしているのですが、表示は一桁になってしまっております。 色々とお手数をお掛けして申し訳ございませんが、何卒宜しくお願いいたします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

No3です。補足への回答がおそくなりましたが。 一応、こちらで確認した方法を紹介します。 (1) テーブルの設定 「商品数_テーブル」 を以下のように設定。 フィールドのデータ型はすべてテキスト型とします。 フィールド名   スタイルID   生地ID   カラーID   商品ID   商品コード 新しいテーブル「番号_テーブル」を以下のように設定。 フィールドのデータ型は数値型とします。 フィールド名   番号 なお、この「番号_テーブル」は設定したあと、テーブルを 開き、以下のように「0」を入力し、データを確定しておきます。 なお、テーブルの既定値が「0」の場合は、以下のように   番号    0    0 Nullの場合は   番号    0 のように二行目がNullになります。 (2) クエリの設定 以下のSQL文を新しいクエリのSQLビューに貼り付け、保存し、 名前をたとえば「Q商品コード_クエリ」という名前に します。 SELECT 商品数_テーブル.スタイル名, 商品数_テーブル.生地名, 商品数_テーブル.カラー名, 商品数_テーブル.商品ID, 商品数_テーブル.商品コード FROM 商品数_テーブル ORDER BY 商品数_テーブル.商品ID; (3) フォームの作成 新規作成から「オートフォーム表形式」を選択し、 「基になるテーブルまたはクエリの選択」で(1)で作成した 「Q商品コード_クエリ」を選択し、「OK」とします。 出来たフォームを適当な名前で保存します。 出来たフォームをデザインビューで開き、「スタイル名」、「生地名」、 「カラー名」の各フィールドのコントロールを各コントロールの上で 右クリックし「コントロールの種類の変更」から「コンボボックス」に 変更します。 「スタイル名」コンボボックスのプロパティを開き、「値集合ソース」を 以下のように設定します。 SELECT 服のスタイル_テーブル.スタイルID, 服のスタイル_テーブル.スタイル名 FROM 服のスタイル_テーブル; 次に、 列数 2 列幅 0cm,2cm 連結列 1 リスト幅 3cm とします。 同様に、「生地名」のプロパティの「値集合ソース」を SELECT 生地種類_テーブル.生地ID, 生地種類_テーブル.生地名 FROM 生地種類_テーブル; 「カラー名」のプロパティの「値集合ソース」を SELECT 色_テーブル.カラーID, 色_テーブル.カラー名 FROM 色_テーブル; とし、この二つのコントロールについても同様に、 列数 2 列幅 0cm,2cm 連結列 1 リスト幅 3cm とします。 (3) コードの設定 フォームのコード表を開き、 Option Compare Database Option Explicit に続いて、 Dim strNum As String を設定しておきます。 フォームをデザインビューを表示します。 「カラー名」のコントロールの上で右クリックし、 プロパティから、「フォーカス取得時」のイベントに、 Private Sub カラー名_Enter()   If Me!商品ID <> "" Then     strNum = Me!商品ID   End If End Sub のように設定します。 同じく、プロパティの「更新後処理」のイベントに、 Private Sub カラー名_AfterUpdate()   Dim strSQL As String   Dim intRes As Integer   If IsNull(Me!商品ID) Then     '更新クエリのSQL文の設定     strSQL = "UPDATE 番号_テーブル SET 番号_テーブル.番号 = [番号]+1;"     '「番号_テーブル」の「番号」フィールドの最大値を取得しテキスト型に変換     '商品IDは5桁に設定     Me!商品ID = Format(DMax("番号", "番号_テーブル") + 1, "00000")     '商品コードの設定     Me!商品コード = Me!スタイル名.Column(0) & Me!生地名.Column(0) & Me!カラー名.Column(0) & Me!商品ID     '「番号_テーブル」の番号フィールドの更新     DoCmd.RunSQL strSQL   Else     intRes = MsgBox("変更しますか?", vbYesNo + vbQuestion + vbDefaultButton1, "商品コードの変更")     '商品IDは変更しません     If intRes = vbYes Then       Me!商品コード = Me!スタイル名.Column(0) & Me!生地名.Column(0) & Me!カラー名.Column(0) & strNum     End If   End If End Sub のように設定します。 以上です。一応、設定した商品コードを途中で変更したりする 処理もいれましたが、なお改良の余地があるように思いますが、 とりあえず、これで質問への最低限の回答にはなっていると、 思いますが。 なお、「商品数_テーブル」へ格納されるデータは各IDを格納し、 フォームでは名称を表示するために、コンボボックスのプロパティで 連結列を1にしています。これを2にするとそれぞれの名称が 格納されます。 したがって、フォームでのラベルが「スタイルID」や「生地ID」などに なっていますが、見た目を考えればデザインビューでフォームの 各フィールドのラベルのプロパティで「標題」を「スタイル名」などに 変更すればいいです。 わからないことがあれば補足してください。

  • chayamati
  • ベストアンサー率41% (254/605)
回答No.4

各所に無理なところもありますが その最たるものが 001(オート番号):これがテーブル設計で主キーが 定義されていないと自動採番される項目ですね このフィールドは変更不可能ですし重複は許されないのが普通です。 またフィールドのデータ形式は長整数型で19桁になります。 商品コードは商品マスターテーブルの一つの項目と思います。 このテーブルの最初の項目がIDで主キーですね 直球でお答えします。 商品マスタテーブルに(形)(生地)(色)(枝No.)が抜けていれば 追加してこれら4項目を一括りにして主キーに設定します。 テーブルのデザインビューで、CTRLを押下したまま (形)(生地)(色)(枝番号)のフィールドセレクター クリックして最後に主キーアイコンクリックで主キーが入れ替わります。 商品コードはデータ入力のイベントで文字列の結合をします。 一例です。 Private Sub 色_LostFocus() 商品コード = 形 & 生地 & 色 & 枝No. End Sub 商品コードは重複なしと設定します。 追伸 IDが主キーから外れたとき重複ありになりますので重複なしに戻します。 IDと商品コードは後にシステムを見直すときに必要とする項目なので残してください

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

記述内容が統一されていないので確認ですが、 01(形)-05(生地)-03(色)-001(オート番号)=010503001等 はテーブルの定義からすると、 01(スタイルID)-05(生地ID)-03(カラーID)-001(商品ID)=010503001等 ということですか? それで、「商品ID」は自動で設定したいということですか? また、「商品ID(00001~オートで)」となっていますが、 商品IDはテキスト型のようなので、一応商品数がどのくらい 発生するのかを設定しておかないと桁が足らなくなる 可能性があるのでテーブル定義のように5桁にしておく ということでいいのでしょうか?

nerihime
質問者

補足

お返事が大変遅くなりまして申し訳ありません。3週間程海外におりアクセスできない状況でした。ご確認頂いた点ですが、全てpiroin654様のお察しの通りです。 現在のところ、商品数がどのくらいになるか分かりませんが、行数は5桁程でいいのではないかと思っております。

回答No.2

メソッドの中身は、 コード.VALUE=生地+"-"+色+"-"+スタイル+"-"+TEXT(オート番号) で。 出先のため動作確認してませんが、やってみてください。

nerihime
質問者

補足

Parurun123様 ご返信有難うございます。ご指示の通り入力してみましたが、残念ながら動作しませんでした。お教えいただいたのと、最後の+TEXT(オート番号)というところを、+Auto または、+Auto(オート番号)等にも変更してみましたが、出来ませんでした。 もし他のアイディアがあるようでしたら、ご教授頂けますと幸いです。お忙しい中有難うございます。

回答No.1

そもそもオート番号を振るのに、それとは別に商品コードを作る理由がよく解りませんが。 どうしても商品コードが必要なのであれば、フォームのスタイル、生地、色の各項目に、値の変更イベントをキャッチして商品コードを編集するコードを書けばよろしいかと。 フォームをデザインビューにして、それぞれのプロパティシートを表示し、イベントの更新後処理としてコードビルダーを起動します。 自動で作成されたメソッドの中に、商品コードを更新するソースを書きます。 これで、商品コードの欄には、常に番号、スタイル、生地、色から編集した文字列が格納されるように。

nerihime
質問者

補足

Parurun123様 早速のご教授誠に有難うございます。 商品コードから一目で、スタイル、生地、色が分かるようにしたい為に、オート番号の他にこの様な形で商品コードを設定したい為です。 4つ目のテーブルで商品コードを設定出来るように、Look Upで3つのテーブルから情報を得られるようにし、そこからフォームを作成しています。 コードビルダーの起動までは分かるのですが、まだVBA・マクロまで勉強が及んでいない為、調べてみましたが該当するようなものが見つかりませんでした。 大変お手数ではございますが、どのように書いたらよいかをお教え頂けませんでしょうか?

関連するQ&A

  • ACCESS2007 重複について

    ACCESS2007を使用してます。 下記のように、IDコードのフィールドがあり、このコードに対して、重複しているデータ全てにフラグ1をたてたいのです。 <現在のテーブル> IDコード  ――――――+ 12345  12345  12378  12378  23457  23489  23456  <作成したいテーブル> IDコード 重複フラグ ――――――+――――――――+ 12345 1 12345 1 12378 1 12378 1 23457  23489  23456  重複フラグのフィールドは、現在のテーブルにありません。 どのようなクエリやSQLを作成すればいいでしょうか? よろしくお願い致します。

  • アクセスで重複と該当なしコードは入力不可にしたい

    アクセス97で顧客管理をしています。 まだなかなか使いこなせないでいるところがあるのですが、どなたかわかりましたらよろしくお願いします。 テーブルAに1000件以上のレコードがあります。主なフィールドはコードと顧客名と住所などの情報です。そのテーブルにレコードを追加していくのに、フォームから行っています。フォームプロパティのデータ入力を「はい」に設定してるだけです。 ここで問題が2つあります。 (1)例えばフォームからコードを入力する際に、正しいコードであれば良いのですが、間違ったコードを入力してしまってもテーブルに追加されてしまうのです。今はその都度テーブルを開いてその行を削除しています。 正しいコードかコードでないかの判断はテーブルBに存在するコードによって決定します。テーブルBになければ全てエラーにしたいのです。 (2)コードが重複してもいけないのですが、テーブルAのコードのプロパティを重複なしにしているのですが、フォームに一度重複したコードを入力してしまうと、一度開いたフォームを強制終了しなければ先に進めません。 (1)においても(2)においても、例えばメッセージボックスが開いて「正しいコードを入力して下さい」のようなものが開いて、OKをクリックしたら、またコードの入力から始まるような方法はないものでしょうか? ちなみにその顧客コードを入力したら、顧客名が自動的に開く下記VBAをフォームに組んでいます。 Private Sub 店番_AfterUpdate() Me![名前] = DLookup("顧客名", "テーブルB", "顧客コード=" & Me![コード] & " ") End Sub 何卒よろしくお願いします。

  • Access アクセスについて

    Accessでデータベースを作っています。 テーブル、クエリは下記のようになっており、リレーションシップで紐付けしてあります。 クエリからフォームを作成し、商品番号を入力することでマスタテーブルに登録されていれば自動で商品名等の情報が表示されるようになっています。(フォーム1) 商品番号を入力しカーソルが移動した時、マスタテーブルに該当する項目がなかった場合、マスタテーブルから作成した新規追加用のフォームが表示されるようになっています。(サブフォームではありません) 新規追加用フォームに商品名を入力し、閉じてもフォーム1の商品名の欄に反映されません。新規追加用フォームを閉じる時にVBAで”Requery”,”Refresh”もやってみましたがダメでした。商品番号を入力し直すと表示されます。 どうすれば自動で商品名が表示されるようになるか教えてください。 テーブル1(入力用) 1.ID(主キー) 2.商品番号 3.etc. テーブル2(マスタテーブル) 1.商品番号(主キー) 2.商品名 3.etc. クエリ 1.ID(テーブル1) 2.商品番号(テーブル1) 3.商品名(テーブル2) 4.etc.(テーブル2) 5.etc.(テーブル1)

  • Accessでコードを入れると名前がでるようにしたい

    Accessで顧客コードを入れると顧客マスタ通りの名前、住所TELがフォームに自動で出て、商品コードを入れると品物名が出るようにしたいのですが。 コードと商品名のはいったテーブルとフォームは作ったのですが・・・

  • Access2003:重複なしでデータを取り出す方法を教えてください

    住所テーブルと注文テーブルを結合させ、ダブらない抽出をしたいと思っています。 (最終的には「最近の注文した顧客の住所ラベル」を作りたいのです) 住所テーブルは ID(オートナンバー型)|*顧客番号(テキスト型)|住所(テキスト型)|郵便番号(テキスト型)  *は主キー 注文テーブルは *注文ID(オートナンバー型)|顧客番号(テキスト型)|注文日(Date型)|商品ID(テキスト型)|注文数(Int型)  *は主キー 注文テーブルの注文日を2007/1/1以降とクエリをかけると、同じ顧客番号が出ます。 つまり、注文日を2007/1/1以降とした住所テーブルと顧客テーブルを結合してクエリをかけると、注文テーブルで重複した顧客のデータも出てしまいます。 これを同じ顧客番号が重複しないように抽出したいのです。 他のQAも拝見しましたが、イマイチ行いたい事柄にヒットしていないと思い、 更には当方がそれらを理解する域まで及ばないと思いまして、新しい質問としてあげさせていただきました。 どなた様か、お分かりの方がおいででしたらご教示くださいますよう、お願い申し上げます。

  • Access DB 商品名の扱いについて

    (テーブル名):(フィールド名) 商品テーブル:商品名。 単価数量テーブル:商品単価、数量、仕入番号、商品名。 仕入テーブル:仕入番号、仕入日、注文日、手数料、輸送費など。 売上テーブル:売上、販売日付、仕入番号、商品名。 リレーションシップ:一対多 商品テーブル商品名-単価数量テーブル商品名 商品テーブル商品名-売上テーブル商品名 仕入テーブル仕入番号-売上テーブル仕入番号 仕入テーブル仕入番号-単価数量テーブル仕入番号 このように作成しました。 ここで問題なのが、商品名の入力です。 仕入テーブルをメイン、単価数量テーブルをサブフォームにしてフォームを作成しました。 さて、商品名を単価数量テーブル商品名フィールドのサブフォームから入力・・・と思ったら、商品テーブル商品名フィールドに名前がないためエラーが出ます。(参照整合性をしているため) サブフォームの入力フィールドを商品テーブル商品名に変更すれば入力できます。 しかし、重複した商品名を入力できません(重複しないに設定しているため) 何故このようなことをするか?ですが、同じ商品でも購入日が違えば単価が違う場合があります。 ですので単価数量テーブルでは同じ商品名を使用する必要があります。 しかし、商品テーブルでは同じ商品名は必要ありません。 もちろん先に商品テーブルに商品名を入力すれば問題ありませんが、入力効率から言って問題あります。 さてここで質問なのですが、一対多の多から商品名を入力して一側に反映できないでしょうか? 一側にすでに同じ商品名がある場合は反映してはいけません。 ちないにVBAやSQLはコピペぐらいはできますが、書けませんのでご了承を。

  • Access DLOOKUPについて

    Access DLOOKUPについて こんにちは。Access2010でのDlookupについてお教えください。 ■注文テーブル オーダーID,商品コード,数量,お店番号 001,A01,1,お店1号 001,A02,5,お店1号 002,B01,3,お店2号 002,B02,3,お店2号 ※同一オーダーIDで商品コードが重複する事は無 ■確認用注文テーブル 商品コード,数量,お店番号 A01ですよ,1お店1号 B02です,3,お店2号 ※なんと、オーダーIDがありません。さらに商品コードに変な文字列も入っています。 ■やりたい事 フォームに「判定」というテキストボックスを配置しました。 コントロールソースで以下の条件にあっているなら○、あっていないなら×と表示したいです。 ○注文テーブル.商品コードと確認用注文テーブル.商品コードを比較。 注文テーブル.商品コードのデータが確認用注文テーブル.商品コードに含まれていること。 ○注文テーブル.数量と確認用注文テーブル.数量がイコールであること。 ○注文テーブル.お店番号と確認用注文テーブル.お店番号がイコールであること。 これらを満たしていれば、○、満たしていなければ×と表示したいです。 Dlookupでなくても、何か他に方法がありましたらお教えください。 宜しくお願いします。

  • Access フォームの作成 レコードの追加について

    原稿が以下のようになっている、フォームを作成したのですが 入力に手間が掛かるので良案がありましたらお願いいたします。 企業コードxxxx 店名_xxx店 住所_xxxx市xxx村 商品分類_売上構成_ウエア_シューズ_グッズ 野球ソフト_(野球ソフトの構成数値)_(野球ソフトのウエアの構成数値)_・・・ テニス_ バドミントン_ 卓球_ ゴルフ_ ・ ・ ・ 合計_ 分類ID(商品名)は15商品と決まっております 3品目もウエア、シューズ、グッズと決まっております。 原稿は商品名15品目がすべて印字済みです。 エクセルの表のような原稿だと考えていただければよいかと思います。 テーブルは正規化に則り以下のように作成しました。 売上構成テーブル 企業コード_売上構成_分類ID(商品名のID) 3品目(ウエア、シューズ、グッズ) 企業コード_3品目構成比_分類ID_項目ID(3品目のID) 店マスタテーブル 企業コード_店名_電話番号 等 現在は店マスタテーブルをメインフォームにサブフォームを 売上構成、3品目と作成しましたがこのままでは見にくいですし IDをわざわざ入力しなければなりません。(新規のデータの場合) メインフォーム(単票フォーム) サブフォーム(データシート) 一つの企業コードに対して最大15商品、それらに対して3品目は決まっているので ID入力を省くように追加ボタンの作成は出来ないのでしょうか? 企業コードを指定してクリックすると売上構成に1~15までの商品レコード追加。 企業コードを指定してクリックすると3品目項目IDを追加。 入力の並びに関しては以前ご質問したときにVBAで長いコードを 書かなければならないと解答をいただきました。 VBAは殆どさわった事ないので分かりません。(検索に使っている程度です。) 以上のことでもし何かありましたら回答お願いいたします。

  • accessのコンボボックスについて

    質問があります。下記のようなテーブルがあります。 ▼商品情報テーブル  ・商品ID (番号はオート。キー)  ・商品番号(自社で設定している商品ごとの番号)  ・商品名 これを「受注伝票」フォームに使用します。 商品番号をコンボボックスで指定すると 商品名が別のテキストボックスに自動で表示。 もし登録されていない商品の場合には 商品番号と商品名をその場で登録して商品情報テーブルに反映させたい。 コンボボックスで選択する際はID順ではなく、 商品番号の昇順で並び替えたいと思います。 商品番号は数値ではなくテキストになっています。 弊社では「i0001、i0002...」のように、商品番号の頭に「i」が付くからです。 ACCESSのバージョンは2002です。 どうぞよろしくお願いいたします。

  • Access2000の重複チェック

    現在あるデータとあるフィールド内において値が重複してある場合こちら側からエラーを出したいのですがどうすればいいですか? テーブル名:テナントマスタ フォーム:txtビル区分、txtテナントコード、…etc テナントマスタ ビル区分 テナントコード ----------------------- 01 100 01 101 02 102 02 103 ここに新たにフォーム上でビル区分、テナントコードを入力し、この値がそれぞれ01、101だったときbtn登録をクリックしたときこちらからエラーをだしたいのです! どうかよろしくお願いします!!

専門家に質問してみよう