
No.35ベストアンサー
- 回答日時:
レコードカウントで採番する場合は、
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_テーブルでオートフォームでフォームを
つくり、あとボタンをくっつけた簡単な
フォームでやっています。
大変 お世話になりました
ようやく完成いたしました。
どの様にお礼を言って良いのかわかりませんが
今後とも よろしくお願いいたします。
ご指導ありがとうございました。
No.34
- 回答日時:
すこし状況がわかりました。
まず、最適化をしてください。
多分、何度もプログラムを入れ替えたり、
データをセットしたりするとファイルの
最適化が必要になることがあります。
この回答への補足
すいません
用事で外出していました 今戻りまして 遅くなりまてすいません
まずプログラム起動時に自動で最適化をしています
それと鉛筆マークは出ていません チェックボックスにチェックを入れ直しても同じで
2回実行しないとダメのようです ??
それと データベース2のT_データのナンバーを番号テーブルから取っていますが
T_データの最後のレコードを取得した方が良いようです
間違って番号テーブルのデータを消したらヌルでエラーになりますし
生成された番号が違う場合も有りうりますのでT_データの最終レコードを取得した方が確実なので
ご指導頂けますでしょうか
No.32
- 回答日時:
(2)
チェックを入れたときにチェックを入れたレコードの
左端に鉛筆マークが表示されたままボタンクリックを
するとレコードロックのエラーが表示されます。
したがって、鉛筆マークが消えるようにどれか他の
レコードのフィールドをクリックして鉛筆マークが
黒い三角マークになるようにしてください。
これでチェックを入れたレコードの事前処理が
確定したことになります。
この意味はチェックボックスもテキストボックスと
同様に一つのレコードの中のフィールドですから
レコードを確定させるためにチェックをいれたら
フォーカスを他のレコードに移動させて暗黙的に
レコードの更新を確定させるというものです。
したがって、2回ボタンを押したらできるということは
一つのレコードの更新が確定していないが二回押すことに
よりフォーカスが移動してレコードの更新が確定した
ということです。
単独のチェックボックスと違ってレコード帳票フォームなどの
レコードはチェックボックスのチェックを入れただけでは
レコードの確定がしない、ということです。
この回答への補足
ありがとうございます
チェックボックスの件 なんとか自己解決致しました
ありがとうございます
番号の件 よろしくお願いいたします。
No.31
- 回答日時:
T_データを表示しているのはサブフォームでは
ないですね。
(1)
End Sub の前に
Me.Requery
をいれてください。この場合はサブフォーム
でない場合です。
(2)
チェックを入れたときにチェックを入れたレコードの
左端に鉛筆マークが表示されたままボタンクリックを
するとレコードロックのエラーが表示されます。
したがって、鉛筆マークが消えるようにどれか他の
レコードのフィールドをクリックして鉛筆マークが
黒い三角マークになるようにしてください。
これでチェックを入れたレコードの事前処理が
確定したことになります。
これ以外に何かでていますか。
エラーが表示されていましたか。
テーブルを指定するとどうですか。
No.29
- 回答日時:
なお、データの削除の部分は単純に前のコードに
削除の部分を追加してだけです。その部分を
はずせば前のコードと同じです。
この回答への補足
ありがとうございます
データベース2のT_データのクエリーを造りそれをフォームに引き込みしチェックボタンを設定
チェックを要れPrivate Sub コマンド0_Click()を実行させると処理されますが
そのまま続けて違うレコードにチェックを入れPrivate Sub コマンド0_Click()を実行させると
処理ができません
おそらくクエリーで取っているためだと思いますが 続けて処理するにはどの様にすればよいでしょうか
ご指導お願いいたします。
No.28
- 回答日時:
字数がぎりぎりだったのでのですが、
たぶん全部一つにして掲示できたと思います。
追加した部分はたいした文字数ではないのですが、
一つにしようとして、既存のコメントの中の
長い部分を二つくらい除けました。
午前のつもりがお昼ですね。
Loopの終了後、データの削除が始まる前に、
MsgBox("データの転送終了。データの削除開始。")
End Subの前に
MsgBox("処理完了")
などを入れて終了確認をしてもいいかもしれません。
データが少なければあまり意味がないかもしれませんが、
一つの案です。
以上です。データの転送、削除を確認をしてみてください。
No.27
- 回答日時:
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 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
'T_データに紐付けられたT_データ明細レコード検出用
i = rsOutMain!番号
'データベース1のT_データへのレコードの追加
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
'データベース1のT_データ明細へのレコードの追加
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
'T_データの削除
rsOutMain.MoveFirst
Do Until rsOutMain.EOF
If rsOutMain!チェック = True Then
i = rsOutMain!番号
rsOutMain.Delete
'T_データ明細の削除
rsOutSub.MoveFirst
Do Until rsOutSub.EOF
If rsOutSub!番号 = i Then
rsOutSub.Delete
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
rsInNUM.Close
Set rsInNUM = Nothing
dbOut.Close
Set dbOut = Nothing
dbIn.Close
Set dbIn = Nothing
End Sub
お探しの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ランキング
-
時空間データベースを用いた研究
-
windows media player(その2)
-
ホームページとデータベースの連動
-
多量の画像整理をアクセスで
-
データベースの構築について
-
サーバーのスペック
-
Excel VBAでできること
-
顧客管理に向けて
-
「アナログ」の「データベース...
-
オラクルなどのデータベースの...
-
ACCESSで条件付き書式の設定方法
-
リスト形式の表とデータベース...
-
ウェブ、データベースに関して...
-
データベースの勉強について
-
関係データベースについて(I...
-
差込印刷ができない
-
こんなソフトはありますか?
-
VBとExcelどっちが適してます?
-
情報密度
-
4th Dimentionとは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
型 varchar から型 numeric へ...
-
エクセルのフォームについて(...
-
ハイフン無しの電話番号データ...
-
オラクルのLONG RAW型のテーブ...
-
エクセルの重複データの曖昧検索
-
ACCESSで条件付き書式の設定方法
-
OpenOfficeのBaseでExcelのデー...
-
カンマ区切りで格納するカラム...
-
データのインポートに失敗します。
-
【ACCESS】複数のパソコンから...
-
DBとテキストファイルの比較
-
【パフォーマンス】ファイル読...
-
別のACCESSデータベースのテー...
-
AccessとPowerPointの会社と家...
-
エクセルの行数が限界です。
-
POSTGRESQLにEXC...
-
98のデータをvistaにUSB接続...
-
なぜMySQLを使うのか。
-
最適なデータベースソフト
-
栄養成分を計算する簡単なソフ...
おすすめ情報