アクセスの同テーブル内に下記レコード(1)(2)が有ります。
(1)レコードのフィールドにはほぼデータが入っていますがNULLのフィールドもあります。
(2)レコードのフィールドはほとんどNULLです。
(1)のレコードのフィールド、データーを取得して
(2)のレコードのフィールドがNULLの場合は(1)のフィールドのデーターを貼付ける
例えば下記の(3)様にしたいです。
|数値型 |テキスト型 |日付型 |通貨型 |メモ型 |Yes/No型 |
|ID |名前 |入力日 |金額 | |チェック |
(1)|01 | さる |07/28 |1,000 | |-1 |
(2)|02 |とら | | | | |
(3)|02 |とら |07/28 |1,000 | |-1 |
自分なりに考えた所
DLookUp で一つ一つ(1)フィールドを取得して(2)フィールドNULLの場合は挿入し(3)にする方法を
考えましたが、フィールド数が実際には100ほど有り方法が良くないと思いました。
Cloneメソッドを使用して同じフォームに(1)と(2)データーを表示させて上手く出来ないか
考えたりもして見ましたが上手く行きません
良い方法が思いつきません
こんな方法があるとか
このサイトを参考にしなさいとか
どなたかご教授頂けませんでしょうか
よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
以下のような雰囲気ではどうでしょう
必ず並び順を指定してレコードを得ておいてから
・Clone を作成( rsC )
・同調させてから rs を1レコード先行
・rs 内が Null なら rsC から代入
Public Sub Samp1()
Dim rs As New ADODB.Recordset
Dim rsC As ADODB.Recordset
Dim i As Long
Dim bChg As Boolean
rs.Source = "SELECT * FROM テーブル名 ORDER BY 並び順;"
rs.Open , CurrentProject.Connection, adOpenStatic, adLockOptimistic
If (Not rs.EOF) Then
Set rsC = rs.Clone
rsC.Bookmark = rs.Bookmark
rs.MoveNext
While (Not rs.EOF)
bChg = False
For i = 0 To rs.Fields.Count - 1
If (IsNull(rs(i))) Then
rs(i) = rsC(i)
bChg = True
End If
Next
If (bChg) Then rs.Update
rs.MoveNext
rsC.MoveNext
Wend
rsC.Close
Set rsC = Nothing
End If
rs.Close
End Sub
30246kiku様
早速ご回答頂きましてありがとうございました。
クエリで2レコード事前に選択しておいてコード実行させ
希望していた結果が得られました。
コードを拝見すると1つ1つはある程度理解出来のですが
到底一から自分で作る事は出来ません知識の無さを痛感します。
方法を教えて頂くどころか作って頂いてしまい恐縮です。
また精進します。
この度は本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Access(アクセス) Accessフォームで複数条件でフィールドの値を表示する方法 4 2022/07/21 10:47
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのフィールド名に半角括...
-
テーブルのデータ型の変更がで...
-
オートナンバー型を抽出条件に...
-
Access VBA 添付型フィールド
-
クリスタルレポートのテキスト...
-
Access 2010で実行時エラー3061
-
accessでフィールド追加のあと...
-
ACCESSデータベースにV...
-
DataTableに特定のフィールドが...
-
2つ目のレコードの値を取得す...
-
日付と文字列を条件としてDLook...
-
ACCESS VBA Parametersで or演...
-
AccessのDAOでフィールド名を配...
-
INT64対応のprintf系関数はあり...
-
アクセス 横スクロールの分割
-
ノーツ:ユーザ名から別名を取...
-
AccessVBAで他テーブルのデータ...
-
DataTableのselectメソッド
-
VBA 変数名に変数を使用したい。
-
VB.NETで1→A、2→B、26→Z、27→AA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
accessでフィールド追加のあと...
-
Accessのフィールド名に半角括...
-
INT64対応のprintf系関数はあり...
-
テキストファイルのフィールド...
-
2つ目のレコードの値を取得す...
-
DataTableに特定のフィールドが...
-
Access 2010で実行時エラー3061
-
Access VBA 添付型フィールド
-
日付と文字列を条件としてDLook...
-
AccessのDAOでフィールド名を配...
-
ACCESSで日別集計をする場合
-
Accessの画像挿入のVBAコード
-
アクセスでADO 並べ替えが適用...
-
クリスタルレポートで文字列の...
-
オートナンバー型を抽出条件に...
-
ACCESSデータベースにV...
-
テーブルのデータ型の変更がで...
-
ADOでNullフィールドの抽出
-
Access クエリで変数を参照する...
-
AccessVBAで他テーブルのデータ...
おすすめ情報