AKB48の推しメンをセンターにできちゃうかもしれない!? >>

Accessで、2つのテーブルがあります。

touroku_m テーブル……ID、登録No、氏名、携帯メール
keitai_m テーブル……ID、登録No、携帯メール

keitai_mの方には、携帯メールフィールドに、アドレスが入力されています。
touroku_mテーブルの携帯メールフィールドは空なので、登録Noを比較して、共通だったらkeitai_mに入力してある携帯メールアドレスをtouroku_mに一気に入れたいのです。

こんなことは可能でしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

レス遅くなってすみません。


えっと、追加クエリはテーブル名を見て追加しますので、追加クエリが実行されるときにtouroku_mの名前のテーブルに追加されます。
なので最初touroku_mという名前のテーブルが名前を変えると、それには追加されませんが、またtouroku_mに戻せば追加されるようになりますよ。
要は追加クエリを実行したいテーブルの名前をtouroku_mにしとけば大丈夫です。
    • good
    • 2
この回答へのお礼

お礼が遅くなって申し訳ありません。
ついうっかりしてしまいました。m(_ _)m
できました。
どうもありがとうございました。

お礼日時:2006/10/15 12:27

少し、面倒ですが結果的にはできます。


前準備として、
1.touroku_mテーブルをコピー
2.テーブル構造のみを貼り付けます。
3.テーブル名をtouroku_newとしたとします。
4.クエリに移り、「デザインビューでクエリを作成する」を選ぶ
5.上段のテーブルを表示するところで右クリックしSQLビューを選択
6.以下のSQL文を書き込む。

INSERT INTO touroku_new ( ID, 登録No, 氏名, 携帯メール )
SELECT touroku_m.ID, touroku_m.登録No, touroku_m.氏名, keitai_m.携帯メール
FROM touroku_m LEFT JOIN keitai_m ON touroku_m.登録No=keitai_m.登録No;

実行すれば、touroku_newのテーブルに欲しいデータが入ります。
7.touroku_mの名前を変更し、touroku_newの名前をtouroku_mに書き換える。

以上
SQL文の内容が知りたいのであればレスください。
    • good
    • 2
この回答へのお礼

コメントありがとうございます。
早速やってみようと思ってひとつ気になったことがあります。
touroku_m テーブルには、追加クエリを使ってデータが追加されることが
あるのですが、追加クエリに設定してある最初の touroku_m を別の名前に
すると、追加クエリもこちらに対して行われることになりますか?
(試してみればいいんですね(^^;)

お礼日時:2006/08/16 07:09

> こんなことは可能でしょうか。


とお訊きになっているのでは、Accessを使っている意味がありません。
お訊ねのようなことは「更新クエリ」で実現可能です。
言わばクエリ自体が「vlookup」のようなものなのです。
さらにいえば、Access自体がより強力な「vlookup」を実現する為の道具なのです。
もし、Accessを正しく使おうとするなら「集計表」という概念は捨て、「巻物を横にしたものの一部を見ている」というイメージを持ってください。
具体的な方法は質問者さんのAccessに対する知識レベルでは、ここに書いても無理と思われますので(失礼はご勘弁を...オートマ車しか知らない人に「クラッチが..」と説明するのに似てます)、
Accessの入門書を入手され「クエリ」(特に「更新クエリ」)を参照してみてください。
    • good
    • 5

vlookupみたいなことがやりたいということは


Excelからの転向者でしょうか

Excelは表計算、Accrssはデータベース
見掛けは同じような表を使いますが、まったく異なるジャンルのソフトです
Excelの延長で考えていては絶対にAccessは理解できません

まずvlookupですが、Access(DB)では複数のテーブルを使って
物事を表すというのが基本ですから、
他のテーブルを参照するのに関数を使ったりしません
もっと強力なクエリというものがあります

また、データはひとつのテーブルのみで管理するというのが基本です
つまり
>keitai_m テーブル……ID、登録No、携帯メール
こういうテーブルに登録Noとメルアドが登録されているのであれば
>touroku_m テーブル……ID、登録No、氏名、携帯メール
には携帯メールフィールドを設けません
登録NOで結合したクエリを作ればメルアドはkeitai_mからいつでも引っ張ってくることができます

ということでこの質問そのものが無意味ということになりますね

Accessをやろうとお考えならば、Excelのことは忘れて
1からきちんと入門書等で勉強されることをお勧めします
特にテーブルやクエリについてよく勉強してください
    • good
    • 3
この回答へのお礼

ありがとうございます。
もともと空白になっていた携帯メールアドレスのデータをエクセルで
もらったので、それを一気に流し込めないかと虫のいいことを考えて
いたのですが、無理のようですね。

お礼日時:2006/08/09 14:57

 「選択クエリ」を使えば、ご希望のようなことは出来ます。


http://www.mahoutsukaino.com/ac/ac2002/ac2002/so …
http://www.moug.net/tech/acopr/0041.htm

 二つのテーブルを、「登録No」で「結合」して、必要な「フィールド」を選べば良いでしょう。

参考URL:http://www.mahoutsukaino.com/ac/ac2002/ac2002/so … http://www.moug.net/tech/acopr/0041.htm
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
でも…したいこととちょっと違うみたいでした。

お礼日時:2006/08/09 14:58

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QAccess 別テーブルにある値を抽出条件にしたい

OS:WindowsXP SP3
使用ソフト: Microsoft Access2003


選択クエリにて、別テーブルのフィールドにある値すべてを抽出条件にできますか?


ホームページに来て頂いた方の検索キーワードを集計しております。
テーブル1には『検索キーワード履歴』フィールドがあり、お客様が使用した検索キーワードが入力されています。(約2万件)
テーブル2には『除外キーワード候補』フィールドがあり、不要なキーワードが入力されています。(約10件)


クエリにて、『検索キーワード履歴』から『除外キーワード候補』の値を全て除いた結果を出力させたいのですが、
抽出条件をどのように指定したらいいのか分かりません。

そもそも、別テーブルのフィールドにある値すべてを除外させる抽出条件って指定できるのでしょうか。
SQLを用いる方法でも構いませんので教えてください。

Aベストアンサー

SELECT * FROM テーブル1
WHERE NOT EXISTS
(SELECT * FROM テーブル2 WHERE テーブル1.検索キーワード履歴 = テーブル2.除外キーワード候補)
OR 検索キーワード履歴 IS NOT NULL
とか
SELECT * FROM テーブル1
WHERE 検索キーワード履歴 NOT IN (SELECT 除外キーワード候補 FROM テーブル2 )
ということ?
1フィールドに1キーワードの場合です。

QACCESSで、EXCELのVlookup的なことをしたい

ACCESSで悩んでいます。ご回答頂けると幸いです。

<やりたいこと>
他のテーブルを参照して、一括でフィールドを変換する更新クエリを作りたい。

<元テーブル1 : データ >
コード│内容1│内容2
001│あああ│AAA
002│あああ│BBB
003│いいい│AAA
004│いいい│BBB

<元テーブル2 : 内容2マスタ>
内容1│AAA│BBB
あああ│アアア│亜亜亜
いいい│イイイ│伊伊伊

<作りたいテーブル>
コード│内容1│内容2
001│あああ│アアア
002│あああ│亜亜亜
003│いいい│イイイ
004│いいい│伊伊伊

内容1が「あああ」で内容2が「AAA」の場合、
マスタテーブルを見てクロスするところの「アアア」に、
内容2を変更したい、という感じです。
ひらがなをカタカナにしたい、ということではありません。
実際のデータは、テーブル1は文字列型、
テーブル2は日付型になる予定です。

当方初心者のため、できればクエリのデザイン画面で
できるとうれしいですが、難しければSQLも頑張ります。
ご回答、よろしくお願い致します。

ACCESSで悩んでいます。ご回答頂けると幸いです。

<やりたいこと>
他のテーブルを参照して、一括でフィールドを変換する更新クエリを作りたい。

<元テーブル1 : データ >
コード│内容1│内容2
001│あああ│AAA
002│あああ│BBB
003│いいい│AAA
004│いいい│BBB

<元テーブル2 : 内容2マスタ>
内容1│AAA│BBB
あああ│アアア│亜亜亜
いいい│イイイ│伊伊伊

<作りたいテーブル>
コード│内容1│内容2
001│あああ│アアア
002│あああ│亜亜...続きを読む

Aベストアンサー

提示された分だけしか検証してませんが

SELECT コード, 内容1,
DLookup(DLookup("内容2","データ","コード='" & [コード] & "' AND 内容1='" & [内容1] & "'"),"内容2マスタ","内容1='" & [内容1] & "'") AS 内容2
FROM データ
ORDER BY コード;

直にテーブルを作成するのなら、FROM の前に INTO 作りたいテーブル名 を入れてみてください。

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

QACCESSでフォームを使って、テーブルを参照、データ入力、データ更新をしたいのです

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入力画面
       ↓
レコード番号を入れると、そのレコードのデーターが画面に表示され、
その画面で修正可能
       ↓
 保存 ボタンで保存

という流れです。

レコードナンバーはIDを使おうと思っています。

データの量が莫大な為、コンポボックスなどは使えません。

できるだけ、VBAなどは使わずに作りたいです。

よろしくお願い致します。

フォームを使って、テーブルを参照、データ入力、データ更新をしたいのです。

売上テーブル

 ID   商品コード  日付    金額 
 1    G1     20080101  532153
 2    G1     20080101  564281
 3    G1     20080301  538123
 4    J4     20080301  124531
 5    J4     20080302  125483

ID:オートナンバー 商品コード:数値型 日付:数値型 金額:数値型

これを使い、
フォームではまず

レコードナンバーを入...続きを読む

Aベストアンサー

まずそのテーブルを基にしてフォームを作成します。
そのフォームのヘッダー部分にテキストボックスを配置後、一旦
上書き保存。
フォームのレコードソースを
SELECT *
FROM テーブル名 WHERE ID=[Forms]![フォーム名]![テキストボックス名]
とします。
次にテキストボックスの更新後処理に
Me.Requery
とすれば完成です。
フォームを開いてテキストボックスにID入力後エンターしてください。

保存に関しては、コマンドボタン作成後クリック時イベントに
DoCmd.RunCommand acCmdSaveRecord
とすれば良いでしょう。

この手のモノは検索すれば相当数ヒットするので、そちらを参考にされるのもよろしいかと。

QACCESS 重複データを1つだけ表示したい(初心者です)

ACCESSで複数のフィールドに全く同じレコードが複数存在します
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
愛知      田中      12
愛知      田中      12
三重      山本      23
三重      山本      23
岐阜      鈴木      33
岐阜      鈴木      33

もともと他のデーターベースからCSVで落としたものをインポートしているので、データの存在自体はどうしようもありませんが、これらの重複しているデータを1件だけ表示したいのです。つまり
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
三重      山本      23
岐阜      鈴木      33

どのようにすればよいでしょうか。

Aベストアンサー

クエリにて[固有のレコード]プロパティーを[はい]にします

QExcelのVlookupでアクセスを参照したい

質問があります。

掲題の通りですが、ExcelのVlookupでACCESSのクエリを参照してレコードを取得したいです。

今まで、ACCESSのクエリをExcelにエクスポートして、それをExcelでVlookupで持ってきていました。それを、Accessから直接Vlookupでもってきたいです。

ADO+VBAでやるだろうとは理解していますが、どうも難しくわからないです・・・。コードの記述を含めてやり方を教授して頂けると幸いです。
画像をアップロードしたのでよろしくお願いいたします。
画像のA1-D5がExcelで、下のテーブルはACCESSのものです。

ACCESSのテーブルをExcelのシートにコピペしてVlookupすれば良いのですが、後学のため、それと応用を利かすためにAccessのクエリを直接参照してデータを取得する方法を知りたいです。

よろしくお願いいたします。

それと、もし、その他オフィスの項目で聞くべきでしたら教えて頂ければ幸いです。

よろしくお願いいたします。

Aベストアンサー

ADO+VBAで正解です

エクセルのファイルとアクセスのファイルが同じ場所にあるという前提で

'先ずは宣言を行います
Dim ws As Workspace
Dim db As DAO.Database
Dim rs, As DAO.Recordset
Dim strSQL As String

'保存場所の設定
dbNAME = "アクセスファイル名.mdb"
mydb = ActiveWorkbook.Path & "\" & dbNAME

'ワークスペースとデータベースの設定
Set ws = DBEngine.Workspaces(0)
Set db = OpenDatabase(mydb)

'エクセル上で実行するクエリ文の作成と実行
strSQL = "select * from テーブル名 Where 商品名 = " & "りんご" & ";"
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

'セルに出力
range("D2") = rs!出荷数


で実現出来るかと思います。

データベースはアクセス、作業はエクセルでと割り切ると良いかと思います。
実際のテーブルはもっと縦も横も多いと思いますので、SQL文を

strSQL = "select * from テーブル名 Where 商品名 = " & "りんご" & "and 品種 = " & "陸奥" & ";"

と変えれば追加できます。

上記 "りんご" 部分を cells(2, 1) と参照する形でも対応できますし、
for next Do loop 文で cells(i, 1) と変数を入れれば動的な処理もできます。

それでは~

ADO+VBAで正解です

エクセルのファイルとアクセスのファイルが同じ場所にあるという前提で

'先ずは宣言を行います
Dim ws As Workspace
Dim db As DAO.Database
Dim rs, As DAO.Recordset
Dim strSQL As String

'保存場所の設定
dbNAME = "アクセスファイル名.mdb"
mydb = ActiveWorkbook.Path & "\" & dbNAME

'ワークスペースとデータベースの設定
Set ws = DBEngine.Workspaces(0)
Set db = OpenDatabase(mydb)

'エクセル上で実行するクエリ文の作成と実行
strSQL = "select * from テーブル名 Where 商品...続きを読む

Qアクセスのクエリに、VLOOKを設定したい。

質問のタイトルが正しいかどうかはわからないのですが、やりたいことは以下のとおりです。
初心者ですので、考え方自体間違っているかもしれません。ご教授ください。

アクセスにORDER DETAILというテーブルがあります。ここに、追加クエリを利用して、データを追加していけるようにしたいと思います。
その追加クエリは、ORDER DETAILに追加 という名前のテーブルからできており、このテーブルに入ったものがクエリを使うことでORDER DETAILに入るようになっています。

このとき、
1、ORDER DETAILに追加、という名前のテーブルの中身のデータは、エクセルからインポートします。何度も繰り返し使います(何度も追加する)ので、インポートのたびに、まず、テーブルの中身をすべて消してから、インポートするようにします。それから追加クエリを使って、ORDER DETAILに追加を行います。
2、このとき、エクセルのデータには、商品番号しか入っておりません。これをインポートしたとき、ORDER DETAILに追加 テーブルには、たくさんのフィールドがありますので、それを埋める必要があります。そこで、VLOOKのようなものを使用したいのです。アクセス内に、商品 という名前のテーブルがありますので、ORDER DETAILに追加 テーブルのフィールドである’DESC1'に、商品 テーブルの’Description1’を入れるようにしたいのです。このときサブクエリを使うのでしょうか?SQLでしょうか?単なるテーブルのリレーションシップで解決しないと思ったので、お尋ねしました。
詳しい方がいらっしゃいましたらどうぞお願いいたします。

質問のタイトルが正しいかどうかはわからないのですが、やりたいことは以下のとおりです。
初心者ですので、考え方自体間違っているかもしれません。ご教授ください。

アクセスにORDER DETAILというテーブルがあります。ここに、追加クエリを利用して、データを追加していけるようにしたいと思います。
その追加クエリは、ORDER DETAILに追加 という名前のテーブルからできており、このテーブルに入ったものがクエリを使うことでORDER DETAILに入るようになっています。

このとき、
1、ORDER DETAILに追加...続きを読む

Aベストアンサー

No.2です。

> 私の書き方が悪かったな、と気づいたところがありましたので、ANo.3さんに対する
> 補足内容をご参照ください。

いえ、ami0607さんの意図は、きちんと伝わっています(恐らくMARU4812さんにも)。
「フィールドに値を入れたい」というご希望はわかった上で、「関数で値が特定できる
データは、テーブルにフィールドを用意しないのが、Access等での一般的な使用法
ですよ」とアドバイスをした、ということです。

・・・とはいえ、どうしても『ORDER DETAIL』テーブルに『DESC1』フィールドを設置
したいということでしたら、回答者からそれを強く推すのもおせっかいにしかなりません
ので(汗)、その方法をご説明します。

といっても、
> 双方の『商品番号』フィールドを結合させた選択クエリを作成するについてですが、
> これは私にでもすぐにできそうです。
とのことでしたら、そんなに難しい話ではありません。

1)デザインビューで、上記の通りの選択クエリを作成する
2)上記の選択クエリを追加クエリに変更し、追加先となるテーブルを指定
3)追加元と追加先で同名のフィールドの場合は、『レコードの追加』欄に自動で
 フィールド名が入るので、確認
 ※同じフィールドを複数回指定していると追加実行時にエラーとなるので注意※
4)追加元と追加先で名前が異なる場合は、空白になっている『レコードの追加』欄
 の右端をクリックして、そこのリストから、追加したいフィールドを指定
5)追加が必要なフィールドを全て指定したら、保存して閉じる


・・・以上です。
画像を添付しますので、併せて参考まで。

No.2です。

> 私の書き方が悪かったな、と気づいたところがありましたので、ANo.3さんに対する
> 補足内容をご参照ください。

いえ、ami0607さんの意図は、きちんと伝わっています(恐らくMARU4812さんにも)。
「フィールドに値を入れたい」というご希望はわかった上で、「関数で値が特定できる
データは、テーブルにフィールドを用意しないのが、Access等での一般的な使用法
ですよ」とアドバイスをした、ということです。

・・・とはいえ、どうしても『ORDER DETAIL』テーブルに『DESC1』フィールドを設置
し...続きを読む

QAccessのクエリで、Left関数を使用して、7桁の数値を抜き出す方

Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。
IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。
いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。
元のテーブルに入力されているIDを変更することなく、
クエリで、7桁だけにして、その取り出した7桁で区別し、グループとして認識し合計を出したいと考えているのですが、どうすればよいのでしょうか。
宜しくお願い致します。

Aベストアンサー

>Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。

関数を加えるのでは無く、関数だけ(演算フィールドのみ)のクエリを作成をして実行させます
単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します

全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです

先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング