電子書籍の厳選無料作品が豊富!

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

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

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

A 回答 (35件中11~20件)

すみません。

返答があとからきたので
前後しましたが、データの量によりますが
最近のPCは性能がいいので動きを気にするほど
時間がかかるものではないと思いますが。
たしかにテーブルのリンクが出来ないので
若干の時間はかかる傾向はありますが。
1万とか2万とかのレコード数でもクエリ
ほどではないにしろ少しの時間で済む
と思いますが。

必要なら送ったレコードを削除するように
しましょうか。

この回答への補足

すいません入れ違いになりました

削除の方向でお願いいたします。

補足日時:2010/06/28 02:14
    • good
    • 0

ただし、ボタンを誤って押してしまうと


チェックがすべてはずれてしまうので
送る予定のものが分からなくなるので
チェックボックスを一つ用意をしておいて、
それにチェックを入れるとボタンが
使えるようにしましょうか。

この回答への補足

ありがとうございます

転送したレコードを削除する様にしたいのですが
いかがなものでしょうか

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

補足日時:2010/06/28 02:12
    • good
    • 0

ボタンクリックでT_データのチェックの


フィールドをすべてFalseにします。
これでチェックがすべてはずれます。

Private Sub コマンド100_Click()
Dim db As Database
Dim rs As Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("T_データ", dbOpenDynaset)

rs.MoveFirst
Do Until rs.EOF
rs.Edit
rs!チェック = False
rs.Update
rs.MoveNext
Loop
End Sub

この回答への補足

ありがとうございます

でも これですとデータが溜まっていき動きが悪くなっていきませんでしょうか
チェックを入れたレコードを削除したほうが いいのではないでしょうか

どの様なものなのでしょうか
遅くまですいません

補足日時:2010/06/28 02:01
    • good
    • 0

安心しました。



>データベース2のチェックフィールドにチェックを
>入れたデータを転送後に消すにはどの様にすれば良いでしょうか

少しお待ちを。
    • good
    • 0

最初のコメントの部分が間違っていたようです。


データの流れはデータベース2からデータベース1です。

Private Sub コマンド0_Click()
Dim dbOut As Database 'データベース2
Dim dbIn As Database 'データベース1
Dim rsOutMain As Recordset 'データベース2のT_データ
Dim rsOutSub As Recordset 'データベース2のT_データ明細
Dim rsInMain As Recordset 'データベース1のT_データ
Dim rsInSub As Recordset 'データベース1のT_データ明細
Dim rsInNUM As Recordset 'データベース1のT_番号
Dim h As Long
Dim i As Long
Dim j As Long

Set dbOut = CurrentDb '送り出し:データベース2
Set dbIn = DBEngine.Workspaces(0).OpenDatabase("C:\データベース1.mdb")
Set rsOutMain = dbOut.OpenRecordset("T_データ", dbOpenDynaset)
Set rsOutSub = dbOut.OpenRecordset("T_データ明細", dbOpenDynaset)
Set rsInMain = dbIn.OpenRecordset("T_データ", dbOpenDynaset)
Set rsInSub = dbIn.OpenRecordset("T_データ明細", dbOpenDynaset)
Set rsInNUM = dbIn.OpenRecordset("T_番号", dbOpenDynaset)

'T_データのエクスポート(データベース2からデータベース1へ)
rsOutMain.MoveFirst
Do Until rsOutMain.EOF
If rsOutMain!チェック = True Then
i = rsOutMain!番号

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

'T_データ明細のエクスポート(データベース2からデータベース1へ)
'T_データに紐付けられたT_データ明細のエクスポート
rsOutSub.MoveFirst
Do Until rsOutSub.EOF
If rsOutSub!番号 = i Then
rsInSub.AddNew
rsInSub!番号 = j
rsInSub!名前 = rsOutSub!名前
rsInSub!住所 = rsOutSub!住所
rsInSub!電話 = rsOutSub!電話
rsInSub.Update
End If
rsOutSub.MoveNext
Loop
'T_番号の更新
rsInNUM.Edit
rsInNUM!番号 = rsInNUM!番号 + 1
rsInNUM.Update
End If
rsOutMain.MoveNext
Loop

rsOutMain.Close
Set rsOutMain = Nothing
rsOutSub.Close
Set rsOutSub = Nothing
rsInMain.Close
Set rsInMain = Nothing
rsInSub.Close
Set rsInSub = Nothing
rsInNUM.Close
Set rsInNUM = Nothing
dbOut.Close
Set dbOut = Nothing
dbIn.Close
Set dbIn = Nothing
End Sub

この回答への補足

ありがとうございます!

理解できました>
データ転送できましたありがとうございます
しかし ボタンを押せば何回同じデータを転送してしまいます
データベース2のチェックフィールドにチェックを入れたデータを転送後に消すにはどの様にすれば良いでしょうか

すいません ご指導をお願いいたします

補足日時:2010/06/28 01:37
    • good
    • 0

すみません。

一度コードのコメントを入れて
送りなおします。どうやらデータベース1
とデータベース2を反対にしていたようです。
さきほどコメントについてもご破算にしておいて
ください。
コードは間違いないのですが。すもません。
データの送り出しは、
データベース2からデータベース1ですね。
コメントが反対になっていました。
少しお待ちを。
    • good
    • 0

わたしも混乱していました。



はい、取っています。dbIn(データベース1)のrsInNUM(T_番号)

でいいのです。

それと訂正です。

Dim rsInNUM As Recordset 'データベース2のT_番号

これは、

Dim rsInNUM As Recordset 'データベース1のT_番号

です。
これが混乱の元かもしれません。
    • good
    • 0

>はい、取っています。

dbIn(データベース1)のrsInNUM(T_番号)

ではなく、

はい、取っています。dbIn(データベース2)のrsInNUM(T_番号)

です。
間違えていました。
    • good
    • 0

>dbInの番号を取得してそれに+1しなければいけないように思うのですが



はい、取っています。dbIn(データベース2)のrsInNUM(T_番号)
の番号というフィールドから取り出して1をくわえたものを
送り込んだレコードの番号としています。

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

rsInMain!番号 = rsInNUM!番号 + 1
この部分です。


>重複エラーになっています
どのようなエラーですか。

提示したコードの中では番号だけで表現しているので
番号Noと番号を保持しているテーブルのフィールド名
などが分かりにくいかもしれませんが。

コード表にデータベースとテーブルとフィールドの
関係のコメントをすべていれましょうか。

この回答への補足

ありがとうございます

>重複エラーになっています
どのようなエラーですか。

番号の重複エラーです

コード表にデータベースとテーブルとフィールドの
関係のコメントをすべていれましょうか。

すいません お願いできますでしょうか

補足日時:2010/06/28 00:51
    • good
    • 0

一応、動作確認をしています。


番号を保持するテーブルの名前をT_番号、フィールドの名前を番号
とします。
IDはインポートすればオートナンバーなので他のデータが
入れば自動的に番号が発行されるのでこれはエクスポートの
対象外ですね。それでは以下です。

Private Sub コマンド0_Click()
Dim dbOut As Database 'データベース1
Dim dbIn As Database 'データベース2
Dim rsOutMain As Recordset 'データベース1のT_データ
Dim rsOutSub As Recordset 'データベース1のT_データ明細
Dim rsInMain As Recordset 'データベース2のT_データ
Dim rsInSub As Recordset 'データベース2のT_データ明細
Dim rsInNUM As Recordset 'データベース2のT_番号
Dim h As Long
Dim i As Long
Dim j As Long

Set dbOut = CurrentDb
Set dbIn = DBEngine.Workspaces(0).OpenDatabase("C:\データベース1.mdb")
Set rsOutMain = dbOut.OpenRecordset("T_データ", dbOpenDynaset)
Set rsOutSub = dbOut.OpenRecordset("T_データ明細", dbOpenDynaset)
Set rsInMain = dbIn.OpenRecordset("T_データ", dbOpenDynaset)
Set rsInSub = dbIn.OpenRecordset("T_データ明細", dbOpenDynaset)
Set rsInNUM = dbIn.OpenRecordset("T_番号", dbOpenDynaset)

'T_データのエクスポート(データベース2からデータベース1へ)
rsOutMain.MoveFirst
Do Until rsOutMain.EOF
If rsOutMain!チェック = True Then
i = rsOutMain!番号

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

'T_データ明細のエクスポート(データベース2からデータベース1へ)
'T_データに紐付けられたT_データ明細のエクスポート
rsOutSub.MoveFirst
Do Until rsOutSub.EOF
If rsOutSub!番号 = i Then
rsInSub.AddNew
rsInSub!番号 = j
rsInSub!名前 = rsOutSub!名前
rsInSub!住所 = rsOutSub!住所
rsInSub!電話 = rsOutSub!電話
rsInSub.Update
End If
rsOutSub.MoveNext
Loop
'T_番号の更新
rsInNUM.Edit
rsInNUM!番号 = rsInNUM!番号 + 1
rsInNUM.Update
End If
rsOutMain.MoveNext
Loop

rsOutMain.Close
Set rsOutMain = Nothing
rsOutSub.Close
Set rsOutSub = Nothing
rsInMain.Close
Set rsInMain = Nothing
rsInSub.Close
Set rsInSub = Nothing
rsInNUM.Close
Set rsInNUM = Nothing
dbOut.Close

この回答への補足

ありがとうございます

早速ご指導頂きましたコードを実行しましたが 重複エラーになっています
dbInの番号を取得してそれに+1しなければいけないように思うのですが

すいませんです
度々で申し訳ありませんがよろしくお願いいたします

補足日時:2010/06/28 00:02
    • good
    • 0

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