Page 174 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼フォームの編集不可/可の切り替え あおやま 03/1/29(水) 11:39 ┗Re:フォームの編集不可/可の切り替え うますけ 03/1/29(水) 15:04 ┗Re:フォームの編集不可/可の切り替え あおやま 03/1/29(水) 16:18 ─────────────────────────────────────── ■題名 : フォームの編集不可/可の切り替え ■名前 : あおやま ■日付 : 03/1/29(水) 11:39 -------------------------------------------------------------------------
こんにちは。今回は、表題の件で参りました。 データ(今はDAOで取得)をフォームに表示し、編集不可にして、 その後、コマンド釦クリックで編集可・不可を切り替える、 ということをやりたいのです。 (つまり、データ表示用と入力用のフォームを兼用したい。) 実は昨日までは出来ていたのですが、 今は、フォームロードでもコマンド釦クリックでも、 編集不可がかからなくなってしまいました。 常に編集可の状態です。 フォームを表示する段階で DoCmd.OpenForm "フォーム名", , , , acFormReadOnly とやってみたりもしましたが、ダメでした。 コードは(省略していますが)概ね下記のようなものです。 Option Compare Database Option Explicit '関数の戻り値 Public Const C_OK As Integer = 0 Public Const C_NG As Integer = 1 Public Const C_ERR As Integer = 2 Private Sub Form_Load() Dim intResult As Integer '関数戻り値 'データ表示 intResult = DataHyouji() If intResult <> C_OK Then MsgBox "データ表示で失敗" End If '編集不可にする Me.AllowAdditions = False Me.AllowDeletions = False Me.AllowEdits = False End Sub Private Function DataHyouji() As Integer Dim strSQL As String Dim DBdao As DAO.Database Dim RSdao As DAO.Recordset On Error GoTo errTrap '戻り値初期化 DataHyouji = C_NG strSQL = "SELECT * FROM [table1] WHERE [table1].[fieldA] = '値1'" Set DBdao = CurrentDb() Set RSdao = DBdao.OpenRecordset(strSQL) Set Me.Recordset = RSdao 'コントロールに値を代入 Me.txt_A = [fieldA] Me.cmb_B = [fieldB] Me.txt_C = [FieldC] '戻り値設定 DataHyouji = C_OK exitFnc: Set RSdao = Nothing Set DBdao = Nothing Exit Function errTrap: '戻り値設定 DataHyouji = C_ERR MsgBox Err.Description Resume exitFnc End Function フォームロードでの編集不可にする手法がおかしいのか、 それともデータ表示でのコントロールへの値入れ込みの影響があったりするのか… お心当たりがありましたら、どうぞ教えて下さい。宜しくお願いします。 |
ども、うますけです。 > 実は昨日までは出来ていたのですが、 > 今は、フォームロードでもコマンド釦クリックでも、 > 編集不可がかからなくなってしまいました。 コードの内容は読んでいませんが、特に変更を加えていないのに挙動がこのよ うに変化したならば、MDBの破損を疑う必要があるかも知れません。 例えば新規MDBに該当フォームとレコードソースのみをインポートしても同じ現 象が発生するでしょうか? |
うますけさん、コメントありがとうございます。 >例えば新規MDBに該当フォームとレコードソースのみをインポートしても同じ現 >象が発生するでしょうか? やってみました。 で、新規MDBを作ってみて一つ気がつきました。 問題のフォームには、サブフォームが含まれているのですが、 フォームが表示された直後には、 サブフォームでないところにフォーカスがあり、 このままテキストボックスや何かの値をいじると変わってしまいます。 フォーム表示後、一度サブフォームにフォーカスを移動してから戻ると、 テキストボックス他が編集不可になっているのです。 (元のMDBでも試してみたら、そういう現象がおこりましたので、 恐らく同じなのだと思います) これはどういうわけなのでしょうか… お心当たりはありませんでしょうか? ----- 自分で今思いつくのは、 フォームロード直後のフォーカス位置を工夫してみるくらいなので、 とにかくやってみます。 |