重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

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

mdbに[項目][当日日付][前回日付][前々回日付]というフィールドを持ったレコードが複数存在します。
Excelで書き込みボタンを押した際に、元々書かれていた[当日日付]の値を[前回日付]へ、[前回日付]の値を[前々回日付]へ、そして[当日日付]に関しては[今日の日付]を入れようと考えています。
日付をスライドさせていくイメージです。


[書き込む前]
項目-------当日日付--------前回日付--------前々回日付--------
外出    20160510 20160420 20160303
出張 20160510 20160422 20160401
....


[書き込んだ後]

項目-------当日日付--------前回日付--------前々回日付--------
外出    20160517 20160510 20160420
出張 20160517 20160510 20160422
....



Const CON1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Const CON2 = "フォルダパス"
Dim Con As New ADODB.Connection
Dim Res As New ADODB.Recordset
Dim Col As ADODB.Field
Dim strKou,strSQL,strToday,r as String

Public Sub 書き込み処理()


strToday = Format(Now, "yyyymmdd")

strKou = Worksheets("シート名").Range("A1") '項目名 A2以降にも項目が書かれている為を、ループ処理を考えています

strSQL = "SELECT テーブル名.*" & vbNewLine
  strSQL = strSQL & "FROM テーブル名" & vbNewLine
  strSQL = strSQL & "WHERE (((テーブル名.項目名) = " & strKou & "));"

  Con.Open CON1 & CON2
Res.Open strSQL, Con, adOpenKeyset, adLockPessimistic

Res!当日日付 = strToday

  Res.Update
Set Res = Nothing
Con.Close: Set Con = Nothing

End Sub

このような形で、各種項目名に対して当日日付を入れる事は可能なのですが、前回の内容を隣のフィールドに入れるための処理が思いつきません。

書き込む処理前に一度全データを抽出しておき、各種項目の[当日日付][前回日付][前々回日付]を変数に保持しておく方法しかないでしょうか?
出来ればスマートに1回の接続でやりたいのですが無理でしょうか?

A 回答 (1件)

文字通りスライドしていきます。



Res!前々回日付 = Res!前回日付
Res!前回日付 = Res!当日日付
Res!当日日付 = strToday

順序に注意。
    • good
    • 0
この回答へのお礼

完全に盲点でした、こんなに簡単に行けるとは。
ありがとうございました。

お礼日時:2016/05/18 21:02

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