Accessのテーブルデータを一気にVBAで追加したい・・

Accessに一時商品登録データというテーブルがあり、
問題なければ商品登録データにデータを流し込みたいと思っています

テーブルのデータ構造は全く同じです

VBAで一時商品登録のテーブルから一件ずつデータを読み取って
商品登録データに追加することは出来るのですが
一気にデータを追加する方法があれば教えていただけないでしょうか?

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

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

A 回答 (3件)

本当にいろいろな方法があります。



一番簡単なのは、
あらかじめ「追加クエリ」を作成しておき

 Docmd.OpenQuery "追加クエリ名"

あるいは DAO で

 Set dbs = CurrentDB
 dbs.Excute "追加クエリ名"

追加クエリを使用しない場合は
追加クエリの SQL文 に相当するSQL を 実行。

 strSQL="INSERT INTO 商品登録データ SELECT 一時商品登録データ.* FROM 一時商品登録データ"

 Docmd.RunSQL strSQL

あるいは DAO で

 Set dbs = CurrentDB
 dbs.Excute strSQL

とか。

直書き、間違いがあったら御免。
    • good
    • 0
この回答へのお礼

まさに、自分が知りたかったSQL構文でした

追加クエリーを作成するとはいいアイデアですね

活用させてもらいます

ありがとうございました

お礼日時:2010/09/14 17:57

Do Until rs2.EOF



の前に

rs2.MoveFirst

を追加して、

rs2.MoveFirst
Do Until rs2.EOF

としてください。
    • good
    • 0

方法はいろいろですが、以下のような方法があります。



テーブルのフィールド名を商品名、価格とします。
DAOを使っているのでコード表のツール、参照設定
からDAOの一番高いバージョンを選択してください。


Private Sub コマンド0_Click()
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset

If MsgBox("データを転送していいですか?", vbYesNo) = vbYes Then

Set db = CurrentDb
Set rs1 = db.OpenRecordset("商品登録データ", dbOpenDynaset)
Set rs2 = db.OpenRecordset("一時商品登録データ", dbOpenDynaset)

Do Until rs2.EOF
rs1.AddNew
rs1!商品名 = rs2!商品名
rs1!価格 = rs2!価格
rs1.Update
rs2.MoveNext
Loop
rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
End If
End Sub



なお、フィールド名が増加する場合は、
rs1.AddNew
rs1!商品名 = rs2!商品名
rs!価格 = rs2!価格
rs1.Update
のところに、フィールド名を追加してください。
    • good
    • 0
この回答へのお礼

ありがとうございました

参考にさせてもらいます

お礼日時:2010/09/14 18:00

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

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

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

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

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

Qテーブル構造を支える脚の材料と太さの計算方法

テーブル構造を支える脚の材料と太さの計算方法

こんにちは。テーブル構造を支える脚の材料と太さの計算方法と材料を教えて頂きたいです。

条件は:
条件1中央の脚一本でテーブル板を支える
条件2テーブル板の重量は決定済み、M=6kg
条件3脚の下の固定は別途設計するので、倒れることは考えなくても良い
条件4脚とテーブル板の固定は別途設計するので、倒れることは考えなくても良い
条件5テーブルは携帯式なので、脚を出来るだけ細くできればよい
と考えています。

質問1十分な強度を得られ、しかも軽量な材質は何でしょうか?
質問2そのときの脚の太さの計算方法は?

条件3と4で述べたとおり固定方法も考える必要もあるのですが、とりあえず脚が決まってからの方が良いと思いましたので、質問させていただいている次第です。

ご教授ありがとうございます。

Aベストアンサー

計算式
(耐荷重+固定荷重)÷木材の許容圧縮応力度÷脚本数=必要断面積(cm2)
上記計算式でテーブル脚をルート断面積で正方形の脚の寸法が求められます。
耐荷重とは、貴方がテーブルに上げる最大重量です。(kg又はN)
木材の許容圧縮応力度は、材料強度です。
建築基準法同施行令に参考になる材料強度表が書かれています。
材種を決めて計算する事が大事です。
ご参考まで

QACCESS ACCESS VBA テーブル テーブル変換 番号 個数 変換

私はプログラム初心者です。
業務の中でACCESSを使っております。
ACCESSでテーブルの変換についてのプログラムが分からなかったので
質問させて頂きました。


以下のようなテーブル(テーブル1)があります。
管理番号|NO|名前
1|NO.1|スプーン
2|NO.2|スプーン
3|NO.3|スプーン
4|NO.1|フォーク
5|NO.2|フォーク
6|""|ナイフ
7|NO.1|お鍋
以上のテーブルを新たにテーブル(テーブル2)を作成し、次のようなにしたいです。
管理番号|台数|名前
1|3|スプーン
4|2|フォーク
6|1|ナイフ
7|1|お鍋

テーブル変換の機能
・名前が同じ物の個数を表示する
・名前が同じ物の管理番号は若い番号にする

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

Aベストアンサー

Access2003でのクエリ作成手順になります。(他バージョンでもほぼ同じでしょう)

・「デザインビューでクエリを作成する」から対象のテーブルを表示させます。

・クエリデザインツールバーにある「Σ」をクリックします。
 (デザインの欄に「集計」が追加されます)

 もしくは、クエリの種類を1度「クロス集計」にし、「選択」に戻しても同じ状態になります。

・テーブル内の「管理番号」をダブルクリックします。
 フィールドに「管理番号」、テーブルに対象テーブル名、集計に「グループ化」が表示されます。
 集計のところを「最小」に変更します。
 並べ替えのところを「昇順」に変更します。

・テーブル内の「NO」をダブルクリックします。
 フィールドに「NO」、テーブルに対象テーブル名、集計に「グループ化」が表示されます。
 集計のところを「カウント」に変更します。

・テーブル内の「名前」をダブルクリックします。
 フィールドに「名前」、テーブルに対象テーブル名、集計に「グループ化」が表示されます。

・ここで、表示を「データシートビュー」に切り替えます。(注1)
 管理番号の最小、NOのカウント、名前 の表が表示されます。
 名前「ナイフ」部分のカウントが得たいものではなく「0」になっています。
 これは、NULLのデータはカウント対象外となっているためです。

・表示を「SQLビュー」に切り替えます。
 1行目中ほどに 「 Count(テーブル名.[NO]) AS NOのカウント, 」があります。
 NOに限定した個数を求めるのでなく、単にレコード数を得たいので
 これを 「 Count(*) AS 台数, 」に書き換えます。
 XXXXX AS YYYY は、XXXXXをYYYY名で、という意味合いになるので、
 同様に「管理番号の最小」->「管理番号」に修正します。

・表示を「データシートビュー」に切り替えます。

これで求めたいクエリは作成することができました。
このクエリをそのまま使うのではなく、結果をテーブルに書き出すには続いて以下を行います。

・表示を「クエリ デザイン」に切り替えます。

・メニューの「クエリ」->「テーブル作成」をクリックします。
 テーブル名を入力し、「OK」

 クエリデザイン上変化はありませんが、以上で終了です。

確認)
表示を「SQLビュー」に切り替えます。
1行目最後あたりに、「 INTO テーブル名 」が追加されています。
これが結果をテーブルに書き出す命令部分になります。


(注1)
「'*'で選択したフィールドはグループ化できません。」というメッセージが出たら、クエリ作成をいったんあきらめます。
(クエリデザインの画面を閉じます)
メニューの「ツール」->「オプション」の「テーブル/クエリ」タブの「クエリ デザイン」部分の「全てのフィールドを表示する」チェックを外し「OK」します。
クエリ作成を初めからやり直します。

(注2)
(注1)の変更は、以降も変更されたままとなるので、今回だけ回避するには、
表示を「SQLビュー」にし、1行目最後の「 テーブル名.名前, * 」の「 , * 」を削除します。


書く練習がてら、初心者向けに書いてみましたがいかがでしたでしょうか。

Access2003でのクエリ作成手順になります。(他バージョンでもほぼ同じでしょう)

・「デザインビューでクエリを作成する」から対象のテーブルを表示させます。

・クエリデザインツールバーにある「Σ」をクリックします。
 (デザインの欄に「集計」が追加されます)

 もしくは、クエリの種類を1度「クロス集計」にし、「選択」に戻しても同じ状態になります。

・テーブル内の「管理番号」をダブルクリックします。
 フィールドに「管理番号」、テーブルに対象テーブル名、集計に「グループ化」...続きを読む

QDIYテーブルの折りたたみ脚について

天版を蝶番で付けて真ん中を繰り抜き、七輪テーブルを作成しました。
現状は、余っているキャンプ用テーブルの脚をガムテープで固定しています。
ユニフレームの焚き火テーブルと同じ高さの折りたたみ脚を付けたいと思ってますが良いアイデアもしくは脚の販売先はありますでしょうか?
焚き火テーブルの高さは37cm、七輪テーブルの天版の厚さは約1.5cmなので、最低でも35cmの脚が必要になるかと思います。30cmの脚は結構見かけるのですが・・・。

Aベストアンサー

市販品にこだわらず、木などで作れば高さ自由ですよ。

1)別板を2枚クロスさせて天板を置く
2)蝶番つけて折りたたみ足にする
3)ナット埋めてねじ込みにする
4)テーブルを箱型にして、七輪+火種のケースとしてもそのまま使う

↑これらは高さの微調整にはアジャスタフットなりが必要ですが、
こういうの↓はアジャスタ機能もってますね

5)パイプの入れ子構造にして、内パイプは外パイプとねじ止めする。
 または外側の先端に割りをいれておいてクランプやホースバンドなどで締めて内パイプを固定する
6)天板の下にハの字形に広がるように左右脚をつけて、間をロープでつないで開き具合を調節する


ま、私なら4か6にしますね。
6のみ、簡単に絵にしておきます。

QACCESSでVBA等を用いて既存テーブルにフィールドを追加する

タイトルどおりです。

ACCESS97以降で、VBA等を用いた「既存テーブルにフィールドを追加する」方法を調べています。

業務で、デザインビューを使用せずにテーブルフィールドの追加が発生したので、その対応のためです

Aベストアンサー

[ACC2003] プログラムを使用してオートナンバー型フィールドを作成し、その "新規レコードの値" プロパティを "ランダム" に設定する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;304418

こちらが参考になると思います。
(DAOが使ってあるので、たぶん、Acc97でも大丈夫です。)

参考URL:http://support.microsoft.com/default.aspx?scid=kb;ja;304418

Qテーブルの脚を取り換えたい

ローテーブルの脚を取り換えて、脚の長いダイニングテーブルにしたいです。
幕板付きなので幕板はそのままで、脚だけを取り換えようと思ってます。

テーブルの画像を添付しました。
左画像はテーブルの正面から右側の脚にかけて、右画像は同じ部分をテーブル裏側から撮影してます。

1本の脚付近には、3本のネジがあります。
そのうち2本(銀色のネジ)は、幕板を天板にとりつける為のものだと思います。
あとの1本が脚と幕板を固定してるものだと思います。

このテーブルを組み立てた時の様子は忘れたのですが
ホゾ(?)みたいに凹凸で組まれていてネジは補強なのだと思います。
でも私にはそんな技術はありませんので
ネジで幕板と脚を固定するつもりです。

幕板は飾りとして
脚と天板の接する部分にそれぞれ金物をつけて取り付ける。

これで大丈夫でしょうか?
結構な重量のあるテーブルですので
高さのある脚にした時の強度が心配です。
他に何かよい方法はありますか?

また、家具のリメイクをしてるお店に頼む場合、
今ある幕板の凹凸に合わせて脚をつくってもらってホゾ組にしてもらうとしたら
どれくらいの値段がするのでしょう?
1万円で済むなら頼んだ方が良いと思ってますが
そんなお安くないですよね?
運送費だけでも相当な事になりそうで、現実的ではない気はしてるのですが・・・

ローテーブルの脚を取り換えて、脚の長いダイニングテーブルにしたいです。
幕板付きなので幕板はそのままで、脚だけを取り換えようと思ってます。

テーブルの画像を添付しました。
左画像はテーブルの正面から右側の脚にかけて、右画像は同じ部分をテーブル裏側から撮影してます。

1本の脚付近には、3本のネジがあります。
そのうち2本(銀色のネジ)は、幕板を天板にとりつける為のものだと思います。
あとの1本が脚と幕板を固定してるものだと思います。

このテーブルを組み立てた時の様子は忘れたので...続きを読む

Aベストアンサー

プロに依頼は 費用的に 全く無理ですから

ご自身で ホ-ムセンタ-で角脚も 丸い脚も

座金も 販売されていますので

取り付けられれば 1万で済むでしょう。

写真の幕板は無視することに成ります。

幕板を利用して脚を固定する方法は 様々ありますが

隅木 又は 隅金具でボルト締めが簡単です。

プロに依頼は其れなりの費用が掛かります。

QCSVデータ→ACCESSに変換。また新しいCSVデータをACCESSに追加できない?

ACCESSでCSV形式のデータを取り込みします。
※このCSVのデータを[a.txt]とします。

[a.txt]を一度取りこみ。
この段階で[a.txt]の中を空にします。
しばらくしてから
[a.txt]にデータたまりだして、
再度ACCESSで取り込みしようとした場合、
先ほど取り込んだACCESSに追加ってできないものなんでしょうか?

よろしくお願いします

Aベストアンサー

>ワークテーブルへインポート・・・の意味が

最終的に追加したいテーブルと同じカラムを持つ、空のテーブルを用意し、
それにインポートして、問題なければ、最終的に追加したいテーブルへインサート。
問題があるならば、インポート先のテーブルをTRUNCATEして再処理。
最終的に作業が完了したら、空のテーブルをTRUNCATEしておく。

Q無垢テーブル固定のねじが使用半年で折れ落ちたり、脚がとれたりするものですか?

無垢のダイニングテーブルを半年前に購入しました。素材はナラだったと思います。3日前にいすの上に折れたねじがあり、よく見るとテーブルのねじが折れて落ちたものでした。購入店に連絡すると、このようにねじが折れ落ちることはよくあるといわれました。修理にこられ、折れた場所の斜めにねじ固定されました。よく見るとほかのねじも数本抜けていました。修理のときにテーブルの脚も緩んでいたのでしめてもらいましたが、翌日テーブルと脚に隙間がある事に気づき再度締めようとしたら脚がとれました。再度修理してもらいましたが、このように半年でねじが折れたり、ぬけおちたり、脚が取れたりするものでしょうか?

Aベストアンサー

購入から半年では ねじが折れ落ちることは通常ありません。

よくあるなんていうのは 言い逃れです。

欠陥品ですね。商品の取替え交渉です。

QACCESS 入力フォームでテーブルへデータを複数追加したい

ACCESS 入力フォームでテーブルへデータを複数追加したいと考えているのですが、
自力で解決出来ないので、アドバイスお願いします。

現在、工数取得の為の入力フォームを作成しています。

工数の取得はまとめて取得し、かかった工数を台数で割ってクエリで抽出したいと考えています。
最大5台分までで、作業によっては1台や2台でもデータを保存できるように1つのテーブルに入れたいのですが、1台入力すると4台分が空白で保存されてしまいます。
また、保存した後に、次のレコードに進んで新規で入力したいのですが、保存したレコードが表示されたままで、次のレコードに進む事が出来ません。

当方、アクセス勉強して間もないので知識や定義を理解していない部分があるのですが、アドバイスお願いします。

例)
☆ 入力フォーム
________________________________________________________
本体シリアル [0001] [0002] [0003] [0004] [0005]
作業者 [山田太郎]
開始時間 [9:00]
終了時間 [9:30]
台数 [5]

[ 保存 ]
_______________________________________________________________


☆ テーブルデータ
_______________________________________________________________
山田太郎 0001 9:00 9:30
山田太郎 0002 9:00 9:30
山田太郎 0003 9:00 9:30
山田太郎 0004 9:00 9:30
山田太郎 0005 9:00 9:30
_______________________________________________________________

コード

Dim rs As DAO.RecordSet
Set rs = CurrentDB.OpenRecordset("テーブル名")
For i = 1 to 5
rs.AddNew
rs!シリアル = Me("シリアル" & i).Value
rs!開始時間 = Me("開始時間").Value
rs!終了時間 = Me("終了時間").Value
rs!台数 = Me("台数").Value

If Me("シリアル" & i).Value = "" Then Exit For

rs.Update
Next
rs.Close
Set rs = Nothing
Me.Refresh

DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord acDataForm, "工数フォーム", acNext

ACCESS 入力フォームでテーブルへデータを複数追加したいと考えているのですが、
自力で解決出来ないので、アドバイスお願いします。

現在、工数取得の為の入力フォームを作成しています。

工数の取得はまとめて取得し、かかった工数を台数で割ってクエリで抽出したいと考えています。
最大5台分までで、作業によっては1台や2台でもデータを保存できるように1つのテーブルに入れたいのですが、1台入力すると4台分が空白で保存されてしまいます。
また、保存した後に、次のレコードに進んで新規で入力...続きを読む

Aベストアンサー

シリアル欄が空白かどうかを判断する方法が間違っています。
Access のテキストボックスの場合、未入力だと値は Null になります。
場合によっては "" (空の文字列) の場合もあります。
従いまして以下のように Nz 関数を使って Null を空の文字列に変換してから判断してみてください。
If Nz(Me("シリアル" & i).Value, "") = "" Then Exit For

そして、この判断を行う場所は For の直後 (AddNew する前) でいいと思います。
For i = 1 To 5
 If Nz(Me("シリアル" & i).Value, "") = "" Then Exit For
 rs.AddNew
 ・・・
 rs.Update
Next

ただし質問文のコードでは
[シリアル001] ← 入力した
[シリアル002] ← 空欄
[シリアル003] ← 入力した
という入力パターンがあった場合 [シリアル002] 以降は保存されません。
もしこのように歯抜け入力もあるのであれば、

For i = 1 To 5
 If Not(Nz(Me("シリアル" & i).Value, "") = "") Then
  rs.AddNew
  ・・・
  rs.Update
 End If
Next

というようにすると良いかと。

シリアル欄が空白かどうかを判断する方法が間違っています。
Access のテキストボックスの場合、未入力だと値は Null になります。
場合によっては "" (空の文字列) の場合もあります。
従いまして以下のように Nz 関数を使って Null を空の文字列に変換してから判断してみてください。
If Nz(Me("シリアル" & i).Value, "") = "" Then Exit For

そして、この判断を行う場所は For の直後 (AddNew する前) でいいと思います。
For i = 1 To 5
 If Nz(Me("シリアル" & i).Value, "") = "" Then Exit For
 rs.Add...続きを読む

Qテーブルの別売りの脚について

もうじき引っ越す予定です。
現在は脚の短いテーブルで座布団での生活ですが、
新しい場所がフローリングのLDKのためダイニング
のセット(椅子とテーブル)にしようかな、と
考えました。

しかし、現在のテーブルも捨てがたく、できれば
このテーブルの脚だけ長いものに交換できないか
と考えています。(脚にはネジが、テーブルには
ネジ穴があるタイプです。)

どこかで、テーブルの脚を別売りしてくれるお店
などありませんでしょうか?

ネットでもリアルでもかまいませんが、リアルの
場合、首都圏で紹介していただけると助かります。

よろしくお願いします。

Aベストアンサー

東急ハンズ渋谷店、
http://shibuya.tokyu-hands.co.jp/guideonfloor_back.html

4Aの家具 組立家具で各種取り揃えていますよ。

Q別のACCESSデータベースのテーブルのレコードを追加したいのです

別のACCESSデータベースのテーブルのレコードを追加したいのです

同じ内容のデータベースが二つあります
データベース1とデータベース2を其々別の人がデータを入力しています
データベース1にデータベース2のテーブルで T_データT_データ明細の二つのレコードを追加したいのですがどの様にすればよいでしょうか

ご指導をお願いいたします。

Aベストアンサー

レコードカウントで採番する場合は、

rsInMain.AddNew
rsInMain!番号 = rsInNUM!番号 + 1
rsInMain!項目1 = rsOutMain!項目1
rsInMain!項目2 = rsOutMain!項目2
j = rsInMain!番号
rsInMain.Update

のところで、

rsInMain!番号 = rsInNUM!番号 + 1



rsInMain!番号 = rsInMain.RecordCount + 1

に置き換えればいいです。

それと、

'T_番号の更新
rsInNUM.Edit
rsInNUM!番号 = rsInNUM!番号 + 1
rsInNUM.Update

の部分はコメントアウトするか削除します。


こちらの環境では、レコードソースを
クエリ、テーブル、SQLどれも問題はないのですが。
一応、簡単にT_テーブルでオートフォームでフォームを
つくり、あとボタンをくっつけた簡単な
フォームでやっています。


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

人気Q&Aランキング