Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2072 / 2272 ツリー ←次へ | 前へ→

【4010】テーブルのレコードの更新 ROMI 04/12/10(金) 15:48 質問[未読]
【4013】Re:テーブルのレコードの更新 Gin_II 04/12/10(金) 17:38 回答[未読]
【4018】Re:テーブルのレコードの更新 ROMI 04/12/12(日) 1:30 質問[未読]
【4020】Re:テーブルのレコードの更新 MJ 04/12/13(月) 15:56 回答[未読]
【4021】Re:テーブルのレコードの更新 Gin_II 04/12/14(火) 2:57 回答[未読]

【4010】テーブルのレコードの更新
質問  ROMI  - 04/12/10(金) 15:48 -

引用なし
パスワード
   テーブルの中に「社員番号・社員氏名・社員スキル」があり、「更新する情報をフィールドのテキストボックスに入力し、更新ボタンを押すとテーブルの中から社員番号と社員氏名が一致した社員スキルだけを更新する。」というプログラムを組みたいのですが、DAOを使ってどうすればいいのかわかりません。教えてください。
o(´^`)o

【4013】Re:テーブルのレコードの更新
回答  Gin_II  - 04/12/10(金) 17:38 -

引用なし
パスワード
   > 社員番号と社員氏名が一致した
通常、社員番号は一意じゃないのでしょうか??

Dim strSql As String

strSql = "UPDATE [テーブル名] " _
    & "SET [社員スキル] = '" & Forms!フォーム名!社員スキル & "' " _
    & "WHERE [社員番号] = " & Forms!フォーム名!社員番号

Currentdb.Execute strSql

なんてのはどうでしょうか?

【4018】Re:テーブルのレコードの更新
質問  ROMI  - 04/12/12(日) 1:30 -

引用なし
パスワード
   ありがとうございます。更新うまくいきました(*・ェ・*)

そこでまた詰まってしまったことがあるのですが、
少しだけ条件を増やして、入力した社員番号と社員氏名が一致したときにレコード更新をして、そしてどちらか一方が間違っていたときにエラーを出したいと考えております。『Currentdb.Execute strSql』でSQLが実行され更新されると思うのですが、まず一致したレコードがあるかどうかを調べ、エラーをメッセージボックスで出力するときはどうすれば良いのでしょうか??
文章にして伝えるのが下手くそなので、きちんと伝わらないことがありかもしれませんが、教えてください。よろしくお願いします。

【4020】Re:テーブルのレコードの更新
回答  MJ  - 04/12/13(月) 15:56 -

引用なし
パスワード
   こんにちは。

> まず一致したレコードがあるかどうかを調べ、

DLookup関数を用いてみては如何でしょうか。

【4021】Re:テーブルのレコードの更新
回答  Gin_II  - 04/12/14(火) 2:57 -

引用なし
パスワード
   > まず一致したレコードがあるかどうかを調べ、
"事前に"、レコード件数を確認するのなら、DCount 関数だと思いますが、

> レコード更新をして、そしてどちらか一方が間違っていたときにエラーを出したいと
更新されたレコードがなければ、エラーだという考え方でいいのなら、


> Dim strSql As String
Dim dbs As DAO.Database
>
> strSql = "UPDATE [テーブル名] " _
>     & "SET [社員スキル] = '" & Forms!フォーム名!社員スキル & "' " _
>     & "WHERE [社員番号] = " & Forms!フォーム名!社員番号
>
> Currentdb.Execute strSql
' ↑修正
Set dbs = Currentdb
dbs.Execute strSql

If dbs.RecordsAffected > 0 Then
  MsgBox dbs.RecordsAffected & "件、更新しました。"
Else
  MsgBox "Err:更新レコードがありません。"
End If

のようにすれば大丈夫だと思います。

2072 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078217
(SS)C-BOARD v3.8 is Free