過去ログ

                                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

フォームロードでの編集不可にする手法がおかしいのか、
それともデータ表示でのコントロールへの値入れ込みの影響があったりするのか…
お心当たりがありましたら、どうぞ教えて下さい。宜しくお願いします。

 ───────────────────────────────────────  ■題名 : Re:フォームの編集不可/可の切り替え  ■名前 : うますけ <umasuke@cup.com>  ■日付 : 03/1/29(水) 15:04  -------------------------------------------------------------------------
   ども、うますけです。

> 実は昨日までは出来ていたのですが、
> 今は、フォームロードでもコマンド釦クリックでも、
> 編集不可がかからなくなってしまいました。

コードの内容は読んでいませんが、特に変更を加えていないのに挙動がこのよ
うに変化したならば、MDBの破損を疑う必要があるかも知れません。

例えば新規MDBに該当フォームとレコードソースのみをインポートしても同じ現
象が発生するでしょうか?

 ───────────────────────────────────────  ■題名 : Re:フォームの編集不可/可の切り替え  ■名前 : あおやま  ■日付 : 03/1/29(水) 16:18  -------------------------------------------------------------------------
   うますけさん、コメントありがとうございます。

>例えば新規MDBに該当フォームとレコードソースのみをインポートしても同じ現
>象が発生するでしょうか?
やってみました。
で、新規MDBを作ってみて一つ気がつきました。
問題のフォームには、サブフォームが含まれているのですが、
フォームが表示された直後には、
サブフォームでないところにフォーカスがあり、
このままテキストボックスや何かの値をいじると変わってしまいます。
フォーム表示後、一度サブフォームにフォーカスを移動してから戻ると、
テキストボックス他が編集不可になっているのです。
(元のMDBでも試してみたら、そういう現象がおこりましたので、
恐らく同じなのだと思います)

これはどういうわけなのでしょうか…
お心当たりはありませんでしょうか?

-----
自分で今思いつくのは、
フォームロード直後のフォーカス位置を工夫してみるくらいなので、
とにかくやってみます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 174