Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


39 / 500 ページ ←次へ | 前へ→

【12542】Re:値の代入について
お礼  バッセン  - 14/5/16(金) 12:29 -

引用なし
パスワード
   ご返事遅れて大変申し訳ございませんでした。
また、参考なるご意見ありがとうございました。
勉強になりました。

質問の件ですが、値の代入がなかなかうまくいきませんでしたが無事できました。
本当にありがとうございました
・ツリー全体表示

【12541】Re:7行レポート作成について(初心者です...
質問  asahi  - 14/5/16(金) 11:19 -

引用なし
パスワード
   ▼hatena さん:

>"売上ID=" & Me!売上ID
としたのですが、指定した式には値がありません。となります。
データ型は、オートナンバー型の長整数型です。

>あるいは、下記で紹介している方法だとレポート一つで希望のレイアウトが実現できます。
>
>明細を持つ伝票とその複写を同じページに2分割して表示する - hatena chips
>hatenachips.blog34.fc2.com/blog-entry-233.html

↑の方見させてただきました。
とても丁寧でわかりやすい説明で、こちらの方法を試していきたいと思います!
また、アドバイスお願いします。

ただ、Dcountの条件も何がおかしいか気になるので教えていただけたらうれしいです。
よろしくお願いします。
・ツリー全体表示

【12540】activx pdf
質問  ペー  - 14/5/15(木) 19:27 -

引用なし
パスワード
   アクセス2000をwin7で使用しています
アクティブXコントロールでアドビPDFリーダーを挿入して
PDFを表示していました
これがあるとき突然ファイルを開くとこのコントロールにはオブジェクトがありませんとで、PDFが開けなくなりました。
さらに同じフォームに試しに同じように作ってみると
OLEオブジェクトを操作できません。
OLEサーバが登録されていません。
OLEサーバを再セットアップしてくださいと出てしまいました
特に何もしていないのですが
もとに戻すにはどうしたらよいでしょうか
・ツリー全体表示

【12539】Re:7行レポート作成について(初心者です...
回答  hatena  - 14/5/14(水) 18:28 -

引用なし
パスワード
   >下記のように7行以内なら7行と認識させ7行以上あれば8行目からは次の
>ページへ印刷されるようにするようにしたいのですが、
>「Dcountの抽出条件でデータ型が一致しません」となります。
>
>DCountの条件の  "売上ID='" & Me!売上ID & "'" の意味をわかりやすく教えていただけると助かります。

売上ID のデータ型が数値型なら、抽出条件式を

"売上ID=" & Me!売上ID

としてください。

ただ、サブレポートにするなら、
サブレポートの方には罫線を表示させずに、メインレポートの方に
7行分の罫線を配置するようにしたほうが、楽だと思います。

あるいは、下記で紹介している方法だとレポート一つで希望のレイアウトが実現できます。

明細を持つ伝票とその複写を同じページに2分割して表示する - hatena chips
hatenachips.blog34.fc2.com/blog-entry-233.html
・ツリー全体表示

【12538】7行レポート作成について(初心者です)
質問  asahi  - 14/5/14(水) 14:18 -

引用なし
パスワード
   ACCESS初心者です。手探りで伝票作成用レポートを作成しています。

レポートはA4に3連タイプの形式があるものに印刷するよう作成し、
売上伝票7行・売上伝票7行2・売上伝票7行3 と3つレポートを作り、
売上伝票7行へサブレポートとして売上伝票7行2と3をはめ込んでいます。

下記のように7行以内なら7行と認識させ7行以上あれば8行目からは次の
ページへ印刷されるようにするようにしたいのですが、
「Dcountの抽出条件でデータ型が一致しません」となります。

DCountの条件の  "売上ID='" & Me!売上ID & "'" の意味をわかりやすく教えていただけると助かります。

Option Explicit
Option Compare Database
Dim AAA As Integer
Dim BBB As Integer


Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer)
AAA = 0
BBB = DCount("売上ID", "売上明細", "売上ID='" & Me!売上ID & "'")


End Sub

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
AAA = AAA + 1
Me!テキスト50 = AAA

If AAA Mod 7 = 0 Then

  If AAA < BBB Then
      Me!改ページ48.Visible = True
    
ElseIf AAA = BBB Then
      Me!テキスト50.Visible = True
      Me!商品ID.Visible = True
      Me!数量.Visible = True
      Me!単位.Visible = True
      Me!単価.Visible = True
      Me!金額.Visible = True
    
     Else
      Me!テキスト50.Visible = False
      Me!商品ID.Visible = False
      Me!数量.Visible = False
      Me!単位.Visible = False
      Me!単価.Visible = False
      Me!金額.Visible = False
End If

  
  Me!改ページ48.Visible = False
    
  If AAA < BBB Then
      Me.NextRecord = True
      Me!テキスト50.Visible = True
      Me!商品ID.Visible = True
      Me!数量.Visible = True
      Me!単位.Visible = True
      Me!単価.Visible = True
      Me!金額.Visible = True
     
ElseIf AAA = BBB Then
      Me.NextRecord = False
      Me!テキスト50.Visible = True
      Me!商品ID.Visible = True
      Me!数量.Visible = True
      Me!単位.Visible = True
      Me!単価.Visible = True
      Me!金額.Visible = True
    
     Else
      Me.NextRecord = False
      Me!テキスト50.Visible = False
      Me!商品ID.Visible = False
      Me!数量.Visible = False
      Me!単位.Visible = False
      Me!単価.Visible = False
      Me!金額.Visible = False
    
   End If
     
End Sub

長くなりましたがアドバイスのほうよろしくお願いいたします。
・ツリー全体表示

【12537】Re:リストボックスで任意の行を最初から...
お礼  神田龍一  - 14/5/9(金) 14:37 -

引用なし
パスワード
   出来ました。
ありがとうございました。
助かりました。
・ツリー全体表示

【12536】Re:リストボックスで任意の行を最初から...
回答  hatena  - 14/5/8(木) 7:44 -

引用なし
パスワード
   そのリストボックスは複数選択可能ですか、それとも、複数選択不可ですか。

リストボックス名は、リスト1 とします。
連結列は、1(受注番号)とします。


リストボックス名は、リスト1 とします。
連結列は、1(受注番号)とします。

フォームの読み込み時のイベントプロシージャを下記のように設定します。

複数選択可能の場合

Private Sub Form_Load()
  Dim i As Long

  With Me.リスト18
  For i = 0 To .ListCount - 1
    If .ItemData(i) >= 100000 Then
      .Selected(i) = True
    End If
  Next
  End With
End Sub


複数選択不可の場合

Private Sub Form_Load()
  Dim i As Long

  With Me.リスト18
  For i = 0 To .ListCount - 1
    If .ItemData(i) >= 100000 Then
      .Value = .ItemData(i)
      Exit For
    End If
  Next
  End With
End Sub
・ツリー全体表示

【12535】リストボックスで任意の行を最初から選択
質問  神田龍一  - 14/5/8(木) 1:53 -

引用なし
パスワード
   製造メーカーです。
生産→在庫→受注→在庫引き当て→出荷(在庫不足により出荷出来ない分は翌日に持ち越し)
という流れです。
在庫引き当てフォームがあり、リストボックスを配置してあります。
リストボックスには、受注番号(ID)、受注日、顧客名、商品名、点数、備考欄、等があります。
急ぎの受注が無い場合は、リストボックスを触らずに在庫引き当てボタンをクリックしますと、受注日の古い順に在庫引き当てがかかり、出荷指示書が出力されます。
急ぎの受注がある場合は、リストボックスから選択してから在庫引き当てボタンをクリックしますと、選択した分を優先して在庫引き当てし、その後受注日の古い順に在庫引き当てするようになっています。
ところが、在庫引き当てフォームで作業する人が、リストボックスから選択する事をうっかり忘れたり、選択漏れがあったり、が多発しています。
そこで対策として、急ぎの受注は受注番号(ID)を100000より大きな数字にしておき(急ぎ以外は99999以下)、在庫引き当てフォームを開いた段階で、リストボックス上で最初から選択した状態にしておきたいです。どのようにすれば良いのでしょうか?
在庫状況により、急ぎの受注でもリストボックスから選択解除する場合がありますので、リストボックスを使用する方法は、やめたくありません。
ややこしい質問で恐縮ですが、宜しくお願い致します。
・ツリー全体表示

【12534】Re:値の代入について
回答  かるびの E-MAIL  - 14/5/4(日) 15:49 -

引用なし
パスワード
   >サブフォームには「確認」と言う「Yes/No型」のフィールドと「名前」「住所」「印刷部数」と言うテキストボックス型のフィールドがあります。
 「フォームにフィールドがある」という言い回しはよく見かけますが、
不正確ですね。
 フィールドという言葉を使えるのは、テーブルとクエリだけです。
 フォームに配置できるのはコントロール
(チェックボックスやテキストボックスなど)だけです。
 フォームにフィールドは配置できません。

 上記は、
   サブフォームには、フィールド名が「確認」、
   データ型がYes/No型であるフィールドをコントロールソースとする
   ××という名前のチェックボックスがある
という言い方をすべきです。

 ウィザードを使ってフォームを作ると、
コントロールの名前とフィールドの名前が同じになるため、
このような混同が生じるのでしょうが、
フィールドとコントロールを混同していると、
集計関数(Sum関数など)や定義域集計関数(DCount関数など)の引数指定を
間違いかねません。


>出来ればマクロでよろしくお願いします
 私は、マクロはほとんど使ったことがないので、
マクロでの指定の仕方はよくわかりません。
 ただ、考え方としては、
   まず、「チェックした数の合計」を求め、
   次いで、「値の代入」アクションによって、
  その合計を「印刷部数」というテキストボックスに代入する
ことになりますね。

 チェックした数の合計の求め方ですが、DCount関数を使います。
 DCount関数では、
   DCount("主キーのフィールド名"
      ,"テーブル名"
      ,"「確認」のフィールド名=True")   
と指定します。
 フィールド名とコントロール名(チェックボックス名やテキストボックス名)
とを混同しないようにしてください。
 ここでは問題となりませんが、
第3引数における値の指定の仕方にはクセがあります。
 第3引数で使うフィールドが
   数値型の場合    フィールド名=123
   テキスト型の場合  フィールド名="あいう"
   日付型の場合    フィールド名=#2014/05/04#
のように指定します。


 次の問題は、フォームで入力した内容がいつテーブルに反映されるか
ということです。
 フォームに入力すれば、それが直ちにテーブルに反映されるわけでは
ありません。
 フォームにおいて、フォーカスをカレントレコードの外に出すか
(他のレコードに移動するとか、
非連結のコントロールにフォーカスを移すとか)、
又は「レコードの保存」というコマンドを実行するかしないと、
フォームの入力内容はテーブルに反映されません。
 DCount関数は、テーブルに対して実行されますので、
フォームの入力内容がテーブルに反映されていないと、
予想と異なった値が返ってしまいます。


 次に、値の代入をどのタイミングで行うかということも問題となりますね。
 つまり、どのイベント時に値を代入を行うかということです。
 ま、チェックボックスの更新後処理だとは思いますが。


 ただ、よくわからないのは、
印刷部数をレコードごとに持たせるという点ですね。
 例えば次のようになったりしませんか。
   ID 名前 住所   確認 印刷部数
    1 太郎 東京都   レ   1
    2 次郎 神奈川県      1
    3 三郎 千葉県   レ   2
 三郎について、印刷部数が2であるということを持たせても何の意味もないし、
却って誤解を招くことになりそうな気がします。
 印刷部数は、メインフォームに非連結のテキストボックスを配置して
そこに持たせた方がいいのではないでしょうか。
・ツリー全体表示

【12533】値の代入について
質問  バッセン E-MAIL  - 14/5/4(日) 8:53 -

引用なし
パスワード
   アクセス2013を使用しています。
Aと言うフォームの中にBと言うサブフォームがありサブフォームには「確認」と言う「Yes/No型」のフィールドと「名前」「住所」「印刷部数」と言うテキストボックス型のフィールドがあります。
ここで質問なのですが、「確認」と言うフィールドにチェックした数の合計を同じテーブルにあるフィールド「印刷部数」にその合計数を代入したいのですがどのようにすればよろしいのでしょうか。
よろしくお願いします
出来ればマクロでよろしくお願いします
・ツリー全体表示

【12532】Re:クエリの抽出条件について
お礼  イルカ  - 14/4/28(月) 22:09 -

引用なし
パスワード
   かるびのさま

できました!!ありがとうございます。
初心者の私に連日夜遅くまで丁寧にご説明いただき感謝いたします。

NULL値とは何なのか良くわかりました。お察しの通り手入力いれておりました。
このあと、テーブルを少し手直しして商品マスターを作業票に取り込む改造をします。

抽出結果が正しく出てきたときはとてもうれしかったです。

有難うございました。

また、なにかありましたらよろしくお願いします。


> この検査によって、Null値があることがわかったら、Null値を長さ0の文字列に変えます。
> 長さ0の文字列は、手入力では入力できません。だから、更新クエリを使います。
> この更新クエリは、インポート用テーブルの場合にSQLで書けば、
>   UPDATE インポート用テーブル
>   SET 色 = ""
>   WHERE 色 Is Null;
>となります。
・ツリー全体表示

【12531】Re:クエリの抽出条件について
回答  かるびの  - 14/4/27(日) 2:35 -

引用なし
パスワード
   >ただ、色の既定値に「""}と入れたのにもかかわらず、インポートするとフィールドの値がNUllとなってしまうようですが、これになにか対処方法はありますか?
 原因は、CSVファイルにおいて、色フィールドの値がNullになっているので、
それをインポートしたテーブルの色フィールドの値もNullとなっている
ということではないかと思います。

 既定値というのは、テーブルやフォームを開いてレコードを手入力するときに、
当該フィールドに何も値を入れていないときに表示される値のことです。
 テーブルへのインポートは、レコードを新規に手入力することとは違うので、
既定値が効きません。

 なお、対処方法は後述します。


>2)それから、何も入っていない商品マスター(テーブルB)の色フィールドのレコードすべてに「""」をいれました。
 長さ0の文字列は、手入力では入力できないはずです。
 これって、フィールドに格納されているのは、長さ0の文字列ではなく、
ダブルコーテーションマーク2字ではないでしょうか。


>Nullではなく長さ0の文字列に変更したのですがうまくいきません。
 本当にNullを長さ0の文字列に変更したのでしょうか。
 それを確認する必要があります。
 インポート用テーブルや商品マスターの各色フィールドの空白が
長さ0の文字列なのか、Nullなのかを確認する選択クエリを作ります。
 この選択クエリは、インポート用テーブルの場合にSQLで書けば、
   SELECT 色
      ,Nz(色,"なる") AS 色Null
      ,Len(色) AS 色長さ
   FROM インポート用テーブル;
となります。
 このSQL文をコピーし、クエリのSQLビューに貼り付けて保存した後、
デザインビューで開いてどんなクエリになるか確認してみてください。
(なお、私は、クエリのデザインビューの使い方をよく知りません)
 色フィールドがNullの場合、「色Null」フィールドには「なる」と表示され、
Nullでない場合は、色フィールドの値が表示されます。
 色フィールドがNullでない場合、色フィールドに格納されている文字列の長さが
「色長さ」フィールドに表示され、
色フィールドがNullの場合、色長さフィールドには何も表示されないはずです。
 インポート用テーブルだけでなく、同様にして商品マスターについても確認してください。


 この検査によって、Null値があることがわかったら、Null値を長さ0の文字列に変えます。
 長さ0の文字列は、手入力では入力できません。だから、更新クエリを使います。
 この更新クエリは、インポート用テーブルの場合にSQLで書けば、
   UPDATE インポート用テーブル
   SET 色 = ""
   WHERE 色 Is Null;
となります。
・ツリー全体表示

【12530】Re:クエリの抽出条件について
質問  イルカ  - 14/4/27(日) 0:24 -

引用なし
パスワード
   かるびのさま

何度か読み返しているうちに商品IDの考え方が理解が出来てきました。
受注明細に商品IDさえ入っていれば、商品名などは複数必要ありませんね。

さて、
かるびのさんのおっしゃる通りCSVから一旦インポート用テーブルに落とした後に追加クエリを実行しています。

ただ、色の既定値に「""}と入れたのにもかかわらず、インポートするとフィールドの値がNUllとなってしまうようですが、これになにか対処方法はありますか?


追加クエリによって、商品IDを入れる事が出来ると教えて頂いたので、こちらでやってみたいと思います。

まず、行ったことは
1)長さ0の文字列なら結合できるという事で、自分なりに参考書などを見ながら該当テーブルのテーブルB(商品マスター)、インポート用テーブルの色フィールドのプロパティーを「値要求、空文字の許可、インデックス」すべてを「はい」にしました。

2)それから、何も入っていない商品マスター(テーブルB)の色フィールドのレコードすべてに「""」をいれました。

商品マスター(テーブルB)の商品IDは主キーで受注明細(テーブルA)に設けた商品IDフィールドとリレーションシップでつながっています。

と、ここまでやった上で、


そして、商品ID追加用の受注明細追加クエリにチャレンジしてみました。まず、追加すべきデータが正しく抽出できるかを、以下のようにやってみました。

はじめに、クエリデザイナー画面でインポート用テーブルと商品マスター(テーブルB)を表示し、商品名どうし及び色どうしを結びました。そしてデータシートビューで表示させたところ、色に何も入っていないレコードが出てきませんでした。表示させたフィールドは受注番号・単価・数量と、商品名と色を除いた受注明細固有のデータです。商品マスター(テーブルB)の何も入っていないレコードには「""」を入れたはずなのですが。 ためしに、色にIs Nullといれて表示させるとやはり何も出てきません。どうやら「""」は効いているようです。本来は行わないインポート用テーブルの色フィールドの何も入っていないレコードにわざわざ「""」を入れても結果は同じでした。ここまでは、一番最初に質問した状況に戻ってしまったかんじです。結合の種類かなにかが悪いのでしょうか?

Nullではなく長さ0の文字列に変更したのですがうまくいきません。


ここまでで止まってしまいました。まだ、正しく理解できていないようです。

ただ、試しにと思って、表示された色が入っていない上記抽出結果をテーブルAに追加しようとすると「入力規則違反」とでるのですが。

お手数をおかけいたします。

毎日遅い時間にお付き合い頂き有難うございます。
本日よりお休みになりますのでお時間があるときで結構です。
お忙しいところ恐縮です。
よろしくお願いします。
・ツリー全体表示

【12529】Re:検索について
お礼  yoshi  - 14/4/26(土) 22:24 -

引用なし
パスワード
   返事遅れてすみませんでした。
よく調べてみたら単純な勘違いをしていました。
すみませんでした。
・ツリー全体表示

【12528】Re:クエリの抽出条件について
回答  かるびの  - 14/4/26(土) 0:44 -

引用なし
パスワード
   >>すいません。追加クエリで、商品名と色はどのテーブルに追加するのでしょうか?
 商品マスタテーブルです。だから、テーブルBですね。


>しかし、だれがどのタイミングでこのID番号をテーブルA(受注明細)に入れるのかがイマイチ理解できていません。
>
>受注情報を、入力フォームを作っての手入力ではなく、外部CSVから追加クエリで入れます。その外部CSV受注情報の中には商品名と色の情報しかなく、タグ項目の参照用として存在するテーブルB(商品マスター)に入らないとすれば、テーブルA(受注明細)の商品IDフィールドには誰に入れてもらえるのでしょうか?
>
>追加クエリでデータを追加する際に、(参照用)テーブルB(商品マスター)を参照して番号を取得するのでしょうか?
 テーブルAへの格納を追加クエリでやっているなら、
その追加クエリを、追加元のテーブルとテーブルBとを結合させたものから追加する
というるものにすればいいです。
 その場合、結合フィールドは、商品名フィールドと色フィールドにせざるを得ませんね。
 とすると、私がNo.12516で示した3つの方法のうち、2番目か3番目の方法を
使うことになります。
 SQLを使えるなら、テーブルの設定を変える必要がないという点で
3番目の方法がいいのかなと思いますが、
2番目と3番目のどちらを使うかは好みですね。
・ツリー全体表示

【12527】Re:クエリの抽出条件について
発言  イルカ  - 14/4/25(金) 23:18 -

引用なし
パスワード
   かるびのさま

何度か読み返しているうちに商品IDの考え方が理解が出来てきました。
受注明細に商品IDさえ入っていれば、商品名などは複数必要ありませんね。

さて、
かるびのさんのおっしゃる通りCSVから一旦インポート用テーブルに落とした後に追加クエリを実行しています。

追加クエリによって、商品IDを入れる事が出来ると教えて頂いたので、こちらでやってみたいと思います。

まず、行ったことは
1)長さ0の文字列なら結合できるという事で、自分なりに参考書などを見ながら該当テーブルのテーブルB(商品マスター)、インポート用テーブルの色フィールドのプロパティーを「値要求、空文字の許可、インデックス」すべてを「はい」にしました。

2)それから、何も入っていない商品マスター(テーブルB)の色フィールドのレコードすべてに「""」をいれました。

商品マスター(テーブルB)の商品IDは主キーで受注明細(テーブルA)に設けた商品IDフィールドとリレーションシップでつながっています。

と、ここまでやった上で、


そして、商品ID追加用の受注明細追加クエリにチャレンジしてみました。まず、追加すべきデータが正しく抽出できるかを、以下のようにやってみました。

はじめに、クエリデザイナー画面でインポート用テーブルと商品マスター(テーブルB)を表示し、商品名どうし及び色どうしを結びました。そしてデータシートビューで表示させたところ、色に何も入っていないレコードが出てきませんでした。表示させたフィールドは受注番号・単価・数量と、商品名と色を除いた受注明細固有のデータです。商品マスター(テーブルB)の何も入っていないレコードには「""」を入れたはずなのですが。 ためしに、色にIs Nullといれて表示させるとやはり何も出てきません。どうやら「""」は効いているようです。本来は行わないインポート用テーブルの色フィールドの何も入っていないレコードにわざわざ「""」を入れても結果は同じでした。ここまでは、一番最初に質問した状況に戻ってしまったかんじです。結合の種類かなにかが悪いのでしょうか?

Nullではなく長さ0の文字列に変更したのですがうまくいきません。

ここまでで止まってしまいました。まだ、正しく理解できていないようです。

ただ、試しにと思って、表示された色が入っていない上記抽出結果をテーブルAに追加しようとすると「入力規則違反」とでるのですが。

お手数をおかけいたします。

毎日遅い時間にお付き合い頂き有難うございます。
本日よりお休みになりますのでお時間があるときで結構です。
お忙しいところ恐縮です。
よろしくお願いします。
・ツリー全体表示

【12526】Re:表示・非表示について
回答  hatena  - 14/4/25(金) 8:03 -

引用なし
パスワード
   ページフッターにラベルを配置して、標題に表示したい文字を設定します。
名前は、ラベル1 とします。

* が表示されるフィールド名は、フィールド1 とします。

ページヘッダーの「印刷時」のイベントプロシージャに、

Me.ラベル1.Visible = False

詳細セクションの「印刷時」のイベントプロシージャに、

If Me.フィールド1 = "*" Then Me.ラベル1.Visible = True

と設定してださい。
・ツリー全体表示

【12525】Re:クエリの抽出条件について
回答  かるびの  - 14/4/25(金) 1:16 -

引用なし
パスワード
   >>すいません。追加クエリで、商品名と色はどのテーブルに追加するのでしょうか?
 商品マスタのテーブルです。ということは、テーブルBですね。


>タグ項目の参照用として存在するテーブルB(商品マスター)
 一般的に言えば、商品マスターテーブルには、
扱う全ての商品を格納することになります。
 タグを参照するものに限られるわけではありません。


>しかし、だれがどのタイミングでこのID番号をテーブルA(受注明細)に入れるのかがイマイチ理解できていません。
>
>受注情報を、入力フォームを作っての手入力ではなく、外部CSVから追加クエリで入れます。その外部CSV受注情報の中には商品名と色の情報しかなく、タグ項目の参照用として存在するテーブルB(商品マスター)に入らないとすれば、テーブルA(受注明細)の商品IDフィールドには誰に入れてもらえるのでしょうか?
>
>追加クエリでデータを追加する際に、(参照用)テーブルB(商品マスター)を参照して番号を取得するのでしょうか?
 テーブルA(受注明細)に格納した後に、
更新クエリによって、テーブルAの商品IDに値を振ることになるでしょう。
 テーブルAへの格納が、CSVファイルから直接インポートするのではなく、
CSVファイルを一旦インポート用のテーブルなどに格納し、
そのテーブルからテーブルAへの追加クエリを実行するというのであれば、
インポート用テーブルと商品マスターとを結合したクエリからテーブルAへと追加する
追加クエリによっても、テーブルAに商品IDが格納されます。

 追加クエリで行けるなら、更新クエリは避けた方がいいと思います。
 更新クエリは追加クエリよりも時間を要しますし、
更新クエリでテーブルを結合する場合、更新不可な結合の仕方にしてしまうと
更新クエリを実行できなくなるからです。


 ただ、この場合、更新クエリによるにせよ、追加クエリによるにせよ、
商品名フィールドと色フィールドを結合フィールドにして、
テーブルを結合させてやる必要が出てきますね。
 この場合は、私のNo.12516の回答で、
2つ目に示した方法又は3つ目に示した方法を使うことになります。
 私なら、テーブルの変更を伴わないということに着目して、
3つ目の方法(Nz関数を使っての結合)を使います。
 クエリデザイナを使って、更新クエリや追加クエリを作るやり方を知らず、
クエリを作る場合はいつもSQL文を手打ちしているからです。
・ツリー全体表示

【12524】Re:検索について
回答  hatena  - 14/4/24(木) 23:53 -

引用なし
パスワード
   >フォームにあるコンボボックスでテーブルを元に会員名で検索したデータを同じフォームに表示させるようにしているのですが、再クエリをすることによって「カレントレコード」をリセットされてしまい先頭のデータがフォームに表示されてしまいます。
>検索したデータを維持したままフォームに表示するにはどうすればよろしいのでしょうか。

検索は具体的にどのようにしていますか。

また、検索なら、再クエリする必要はないと思いますが、
なんのために再クエリをするのですか。
・ツリー全体表示

【12523】Re:クエリの抽出条件について
発言  イルカ  - 14/4/24(木) 23:32 -

引用なし
パスワード
   かるびのさま

連日、夜分遅くにありがとうございます。
この投稿の前の質問での補足です。
本日のアドバイスのあと考えてみて疑問がわきました。

アドバイス頂いたとおりテーブルA(受注明細)に「商品ID」を設けテーブルB(商品マスター)とつなぎました。
このテーブルA(受注明細)の商品IDにテーブルB(商品マスター)のID番号が入れば解決すると理解できました。

しかし、だれがどのタイミングでこのID番号をテーブルA(受注明細)に入れるのかがイマイチ理解できていません。

受注情報を、入力フォームを作っての手入力ではなく、外部CSVから追加クエリで入れます。その外部CSV受注情報の中には商品名と色の情報しかなく、タグ項目の参照用として存在するテーブルB(商品マスター)に入らないとすれば、テーブルA(受注明細)の商品IDフィールドには誰に入れてもらえるのでしょうか?

追加クエリでデータを追加する際に、(参照用)テーブルB(商品マスター)を参照して番号を取得するのでしょうか?

そこのところが理解できていません。

お手数をおかけします。

よろしくお願いします。


>>は、追加クエリをつかう場面でテーブルAではなくテーブルBに追加するという意味でしょうか?
> いいえ、違います。テーブルAのフィールドを
>   明細ID  (主キー)
>   受注番号 
>   商品ID
>   数量
>というようにするべきだということです。
・ツリー全体表示

39 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1078264
(SS)C-BOARD v3.8 is Free