![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.15
- 回答日時:
一応、動作確認をして出来上がったのですが、今一度
確認をしたいのですが。
>T_データ明細のフィールド ID(オートナンバー) 番号No 明細No 内訳.......
の中で、番号NoというのはT_データの番号Noと同じとして、
その他のID(オートナンバー)、明細Noの二つのものは
どういうものでしょうか。エクスポートの対象になるもの
ですか。
この回答への補足
ありがとうございます。
番号NoというのはT_データの番号Noと同じです
ID(オートナンバー) キーが設定してあります
明細Noは明細を入力するたびに生成されエクスポートの対象となります
ID(オートナンバー)は追加されればいいのでエクスポートの対象ではありませんが
移転先の最終ナンバーに追加しなければなりません
上手く説明できていますでしょうか
No.13
- 回答日時:
ようやく全体像がつかめました。
以下のことがわかれば先ほどのコードを若干
変更することで何とかなりそうです。
(1)
それで、質問ですが、番号を保持するテーブルは
どちらのデータベースにおいていますか。
(2)
番号を取得した後はそのテーブルの番号を
更新するということですね。
この回答への補足
ありがとうございます
(1)テーブルは元々同じdbですからそれぞれ同じものがあります
(2)番号を取得した後はそのテーブルの番号を
更新するということですね
其々独立してデータを更新していきます
時々 データを移すことがあります
No.12
- 回答日時:
>T_データのフィールドに番号(連番)が入っています(入力順に自動で入ります)
これはオートナンバーとします。
>そしてT_データ明細のフィールドにT_データの番号と明細の番号が
>入っています(明細との関連付けのため)
T_データの番号の番号が明細にあるのでT_データの番号に
紐付けられた明細のデータをおくりだすようにします。
したがって、T_データ明細にはチェックは必要ありません。
T_データにチェックがあればいいです。
その場合、送り出すT_データはデータベース2に新規に追加
しますから送り出すT_データは番号を除いてください。
以下、コードです。
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 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)
'T_データのエクスポート(データベース2からデータベース1へ)
rsOutMain.MoveFirst
Do Until rsOutMain.EOF
If rsOutMain!チェック = True Then
'送り出す側の番号を、明細を検索するために取得
i = rsOutMain!番号
rsInMain.AddNew
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
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
dbOut.Close
Set dbOut = Nothing
dbIn.Close
Set dbIn = Nothing
End Sub
確認してみてください。
この回答への補足
昨日は遅くまでありがとうございました
一日悪戦苦闘しています
やはり 重複エラーで 追加できませんでした
エキスポートする前にT_データの現在のレコードの最終番号を取得してそれに1プラスして追加させないといけないようです そして 明細の方にもT_データの番号の番号がありますので
T_データのフィールド 番号No 区分 名前........
T_データ明細のフィールド ID(オートナンバー) 番号No 明細No 内訳.......
こんな構造です
何卒ご指導をお願いします
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_15.png?e8efa67)
No.11
- 回答日時:
NO1です。
すでに大勢の方がコメントされていますが、私の検討の結果をお示しします。合体させたいテーブルをどちらか一つのファイルに、インポートしたあとで、片方のテーブルをコピーし、もう一つのテーブルに追加貼り付けをやったら成功しました。ただしオートナンバーのフィールドは除外しています。幼稚な方法ですみません。
No.10
- 回答日時:
(1)
>T_データのフィールドに番号(連番)が入っています(入力順に自動で入ります)
これはオートナンバーですか、それとも何か
プログラムで採番しているのですか。
(2)
この番号の順番は重要なのですか。
レコードが一意に特定できればいいというのであれば、
もしオートナンバーならばT_データは番号以外を
エクスポートし、T_データ明細の番号フィールドは
T_データをエクスポートした時点でのデータベース1
での番号を取得し、その番号をエクスポートした
T_データ明細の番号フィールドにそれぞれ割り当てることは
できると思いますが。
また番号がプログラムで採番しているのならば
その方法で番号を取得できると思います。
(そのあたりは確認してみます)
その場合は最後の番号を保持するテーブルなどを
作ったりしておくものですが、そのあたりはどうですか。
No.9
- 回答日時:
書き忘れていましたが、
チェックがTrueになるのはサブフォームで
表示されているレコードのみです。
この回答への補足
大変親切なご指導ありがとうございます
とっても 勉強になります
先ほどのレコードの転送につきまして
気付いたのですが T_データのフィールドに番号(連番)が入っています(入力順に自動で入ります)
そしてT_データ明細のフィールドにT_データの番号と明細の番号が入っています(明細との関連付けのため)
T_データのフィールドに番号は重複禁止になっています
すると そのままエキスポートすると番号が重複してしまうのでエラーが起きないでしょうか
ご指導をお願いいたします。
No.8
- 回答日時:
メインフォームに作ったチェックボックスのプロパティ
シートを表示し、更新後処理に以下のコードを設定します。
チェック0はチェックボックスの名前です。適時
変更してください。
サブフォームCtlというのはメインフォームでサブフォーム
を表示するコントロールの名前で、サブフォームの名前では
ありません。このあたりは分かっておられると思います。
初期値では埋め込み0というような表示がされます。
設定している名前に変更してください。
チェックボックスの既定値は特にこの場合
設定しなくてもいいようにコードで処理を
していますが、何となく灰色のチェックボックスが
気になるようだったら、既定値をFalseにしてください。
Private Sub チェック0_AfterUpdate()
Dim rs As Recordset
Set rs = Forms!メインフォーム名!サブフォームCtl.Form.RecordsetClone
If Me!チェック0 = True Then
rs.MoveFirst
Do Until rs.EOF
rs.Edit
rs!チェック = True
rs.Update
rs.MoveNext
Loop
End If
Set rs = Nothing
End Sub
これで、サブフォームのすべてのレコードのチェックボックスが
Trueに設定されます。
確認してみてください。
No.7
- 回答日時:
>T_データとT_データ明細は別のテーブルですので
これは失礼しました。T_データT_データ明細は一つの
テーブル名と解釈していました。
(1)
それでは、T_データのレコードととT_データ明細の
レコードをデータベース2へ移すということでいいの
でしょうか。
(2)
これら二つのテーブルにはチェック(YesNo型)のフィールドが
作られるとうことでいいですか。
>Set rsOut = dbOut.OpenRecordset("T_データ", dbOpenDynaset)
>Set rsOut = dbOut.OpenRecordset("T_データ明細", dbOpenDynaset)
ではなく、T_データとT_データ明細は別々のレコードセットオブジェクト
を設定する必要があります。
二つのテーブルに設定する(YesNo型)のフィールドの名前を両方とも
チェックとします。以下がコードです。パス、フィールド名は変更、
追加してください。データベース2のフォームでのボタンクリック
イベントはかわりません。
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 strPathOut As String
Dim strPathIn As String
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)
'T_データのエクスポート(データベース2からデータベース1へ)
rsOutMain.MoveFirst
Do Until rsOutMain.EOF
If rsOutMain!チェック = True Then
rsInMain.AddNew
rsInMain!項目1 = rsOutMain!項目1
rsInMain!項目2 = rsOutMain!項目2
rsInMain.Update
End If
rsOutMain.MoveNext
Loop
'T_データ明細のエクスポート(データベース2からデータベース1へ)
rsOutSub.MoveFirst
Do Until rsOutSub.EOF
If rsOutSub!チェック = True Then
rsInSub.AddNew
rsInSub!名前 = rsOutSub!名前
rsInSub!住所 = rsOutSub!住所
rsInSub!電話 = rsOutSub!電話
rsInSub.Update
End If
rsOutSub.MoveNext
Loop
rsOutMain.Close
Set rsOutMain = Nothing
rsOutSub.Close
Set rsOutSub = Nothing
rsInMain.Close
Set rsInMain = Nothing
rsInSub.Close
Set rsInSub = Nothing
dbOut.Close
Set dbOut = Nothing
dbIn.Close
Set dbIn = Nothing
End Sub
確認してみてください。
この回答への補足
度々ご面倒をお掛け致しまして申し訳ございません
T_データとT_データ明細の関係ですが
T_データのサブで繋げています
T_データのレコードNo1の明細がT_データ明細レコードNo1レコードNo2で
1つのデータとなっています
このとき
チェックボックスは T_データのレコードNo1のフィールドに設定ここにチェックが入るとT_データ明細
T_データ明細レコードNo1レコードNo2にも自動でフィールドにチェックが入る事が出来るのでしょうか
すいません
初心者で 面倒でしょうか ご指導をお願いいたします。
No.6
- 回答日時:
テーブルのチェックのフィールドをチェックという
名前にします。rsOut.MoveFirstを追加しましたが、
他の部分は変更ありません。
Private Sub コマンド0_Click()
Dim dbOut As Database
Dim dbIn As Database
Dim rsOut As Recordset
Dim rsIn As Recordset
Dim strPathOut As String
Dim strPathIn As String
Set dbOut = CurrentDb
Set dbIn = DBEngine.Workspaces(0).OpenDatabase("C:\データベース1.mdb")
Set rsOut = dbOut.OpenRecordset("T_データT_データ明細", dbOpenDynaset)
Set rsIn = dbIn.OpenRecordset("T_データT_データ明細", dbOpenDynaset)
rsOut.MoveFirst
Do Until rsOut.EOF
If rsOut!チェック = True Then
rsIn.AddNew
rsIn!名前 = rsOut!名前
rsIn!住所 = rsOut!住所
rsIn!電話 = rsOut!電話
rsIn.Update
End If
rsOut.MoveNext
Loop
rsOut.Close
Set rsOut = Nothing
rsIn.Close
Set rsIn = Nothing
dbOut.Close
Set dbOut = Nothing
dbIn.Close
Set dbIn = Nothing
End Sub
適当なファイルで確認してみてください。
この回答への補足
ありがとうございます
お尋ねしても良いでしょか
Set rsOut = dbOut.OpenRecordset("T_データT_データ明細", dbOpenDynaset)
とありますが
Set rsOut = dbOut.OpenRecordset("T_データ", dbOpenDynaset)
Set rsOut = dbOut.OpenRecordset("T_データ明細", dbOpenDynaset)
T_データとT_データ明細は別のテーブルですので
これでいいのでしょうか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- JavaScript Q&Aの掲示板を作成していてヤフー知恵袋やgoo質問のように質問ごとにURLを生成したい 5 2023/08/04 01:22
- Oracle 参照関係のフィールドについて 1 2023/05/27 17:49
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
型 varchar から型 numeric へ...
-
データのインポートに失敗します。
-
エクセルのフォームについて(...
-
【パフォーマンス】ファイル読...
-
Web2.0のデータは次世代のイン...
-
ACCESSで条件付き書式の設定方法
-
AndroidからのAccessデータベー...
-
キャッシュとバッファの違いは?
-
ODBC経由の処理が遅い
-
データベースの最適化をマクロ...
-
エクセルでのテプララベル作成
-
クエリをキャンセルしたいので...
-
accessの勉強ができるサイトは?
-
データベースの2GBって・・・?
-
sp_columnsでデータベース名を...
-
希望の位置へフィールドを追加...
-
エクセルのマクロ
-
DB2 UDBって?
-
GerberデータからBmpデータへの...
-
構文エラー:演算子がありませ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
型 varchar から型 numeric へ...
-
オラクルのLONG RAW型のテーブ...
-
エクセルのフォームについて(...
-
カンマ区切りで格納するカラム...
-
エクセルの重複データの曖昧検索
-
ハイフン無しの電話番号データ...
-
ACCESSで条件付き書式の設定方法
-
DBとテキストファイルの比較
-
OpenOfficeのBaseでExcelのデー...
-
ODBCを使わないでExcelへ連携
-
【パフォーマンス】ファイル読...
-
データのインポートに失敗します。
-
複数のPCで、同じ1つのシート...
-
データベースソフトのTCARDにつ...
-
SQL Server 縦方向のデータを列...
-
csvデータをデータベース化
-
コンピュータ用語、データベー...
-
CSVでDLしたデータにダブルクォ...
-
データ.mydファイルのテキス...
-
商品カタログ
おすすめ情報