(1)はいろいろとあるのですが、Daoのレコードセットを使う
方法が良いと思います。
Dim R As Dao.Recordset
Dim SQL As String
SQL = "SELECT MAX(貸出日) FROM レンタル品マスター"
SQL = SQL & " WHERE 品番='" & textレンタル品番 & "'"
SQL = SQL & " GROUP BY 品番"
Set R = CurrentDb.OpenRecordset(SQL, dbOpenSnapshot);
If R.EOF Then
'該当データがない場合の処理
Else
text貸出日 = R.Fields(0) '日付を表示
End If
R.Close
(2)も同じようにSQLを使った更新が良いでしょう。
ボタンのクリック時イベントでプロシージャを定義します。
Private Sub command返却_Click()
Dim SQL As String
SQL = "UPDATE レンタル品マスター SET"
SQL = SQL & " 返却日=#" & text返却日 & "#"
SQL = SQL & " WHERE 品番='" & textレンタル品番 & "'"
SQL = SQL & " AND 貸出日=#" & text貸出日 & "#"
CurrentDb.Execute SQL
End Sub
別法としてレコードセットを使う方法もあります。
Dim R As Dao.Recordset
Dim SQL As String
SQL = "SELECT * FROM レンタル品マスター"
SQL = SQL & " WHERE 品番='" & textレンタル品番 & "'"
SQL = SQL & " AND 貸出日=#" & text貸出日 & "#"
Set R = CurrentDb.OpenRecordset(SQL, dbOpenDynaset);
If R.EOF Then
'該当データがない場合の処理
Else
R.Edit
R.Fields("返却日") = text返却日
R.Update
End If
R.Close
但し、将来DBを他のDBシステムに変更し、リンクテーブルとして
処理するようになった場合、DLookUp等の関数を使う方法や、
レコードセット内の検索、あるいはレコードセットでの更新は
とても効率が悪く、場合によっては使い物にならないほど遅い
こともあります。
質問者
補足
nda23さん、丁寧に教えて下さりありがとうございます。
まず、どういった動きになるか確認しようと思い
上記コードをコピペしたところ、下記のところでエラーが発生してしまいました。
ネット検索してみたのですが、何が原因かは私にはわかりませんでした。
すみませんが、教えて頂いてもよろしいでしょうか?
(1) Set R = CurrentDb.OpenRecordset(SQL, dbOpenSnapshot);
(2) Set R = CurrentDb.OpenRecordset(SQL, dbOpenDynaset);
コンパイルエラー:構文エラー
上記構文がグレー&Private Sub・・・ が黄色でした。
コピペがいけなかったのかなと思い、手打ちしていたら
作成中に上記コードの最後「;」がエラーで作成もできませんでした。
お手数お掛け致しますが、何卒宜しくお願い致します。
また、自分でも引き続き調べてみます。
お礼
Hardkingさん、ありがとうございます。 丁寧な説明、ヒント、提案とても有難かったです。 まだ、ACCESS始めたばかりで勉強中の私にとって ヒントという記載方法はとても勉強になりました。 ヒントを見ながら自分で調べてやっていると理解もし易かったです。 また、1つのやる事に対して方法がいろいろある事も 興味深かったので、これからも時間をかけ 勉強を続けていこうと思います。