Access VBA質問箱 IV

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

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


446 / 500 ページ ←次へ | 前へ→

【4248】Re:二つのテーブルをフォームで使用したい...
お礼  nemotake  - 05/1/24(月) 11:04 -

引用なし
パスワード
   ▼クロ さん:
ありがとうございます。
サブフォームで処理しまた。
・ツリー全体表示

【4247】Re:「NULL値は挿入できません。」エラーを...
お礼  みほ  - 05/1/24(月) 9:59 -

引用なし
パスワード
   かろちんさん、処理方法のご提案と
現在の回避策の改良方法の指示、
本当にありがとうございます。

時間があまりとれないので、とにかく助かりました。
これで、無意味にたくさん書いてしまったコードを
ひとまとめにすることができます!

本当にご親切に・・(涙)です。
・ツリー全体表示

【4246】Re:フォームについて
お礼  ROMI  - 05/1/23(日) 22:52 -

引用なし
パスワード
   ヘルプで発見しました。
ありがとうございました。。
・ツリー全体表示

【4245】Re:「NULL値は挿入できません。」エラーを...
回答  かろちん  - 05/1/23(日) 17:07 -

引用なし
パスワード
   みほ さん こんにちは

方法は無いわけではありませんが、あまり良い方法とはいえません。
記述されているソースを見る限り、未入力の場合に元の値に戻す処理
だと思います。
最終的に画面を終了する際にと仰っていますが、どの程度のデータを
登録や更新されるのか分かりませんが、ご存知のとおりDBは1レコード
単位の処理となると思います。
したがって、画面終了タイミングは、1レコード分の入力を終えた後
ということになります。
これで、通常運用が可能かどうかは不明ですが、1レコード単位で
あれば、面倒ですが、コントロールは非連結にし、フォーム起動時
もしくは、検索処理時にデータをテーブルより抽出し各コントロール
にセットされる方が良いかと思います。
上記は、あくまで私がそう思うことですので、仕様的にはどの方法が
良いのかは、ご自分で判断してください。

以下に、現状UPされている処理を纏めて行う方法を記載します。

フォームの「エラー時」イベントで以下のコードを記述します。

Private Sub Form_Error(DataErr As Integer, Response As Integer)

  If DataErr = 3314 Then
    Response = acDataErrContinue
    Me.ActiveControl.Undo
    Exit Sub
  End If

End Sub

DataErr引数は、未入力のエラーコードです。
Response = acDataErrContinueはメッセージを出力しないコードです。
・ツリー全体表示

【4244】Re:フォームについて
回答  Gin_II  - 05/1/23(日) 3:40 -

引用なし
パスワード
   >「フォーム3」から「フォーム2」を閉じるということはできるのでしょうか?

Close メソッドのヘルプを確認してください。
フォーム名を指定できますよ。
・ツリー全体表示

【4243】フォームについて
質問  ROMI  - 05/1/23(日) 1:54 -

引用なし
パスワード
   初歩的なことをお伺いします。
「フォーム1」、「フォーム2」、「フォーム3」という順番で三つのフォームが開いていたときに、「フォーム3」から「フォーム2」を閉じるということはできるのでしょうか?
・ツリー全体表示

【4241】「NULL値は挿入できません。」エラーを非...
質問  みほ  - 05/1/22(土) 17:44 -

引用なし
パスワード
   いつもお世話になっています!
WindowsXP、Access2000使用です。

フォーム入力中に、値要求を設定している項目について、
テキストボックスを空にしてタブを移動すると、
「フィールドに必要なプロパティが・・・NULL値は挿入できません。
値を入力してください。」というアクセスのエラーが表示されます。
こういったNULLチェックは画面終了時にまとめて行いたいので
このアクセスのエラーを非表示にしたいのですが
よい方法はないでしょうか。

現在、各テキストボックスのBeforeUpdateイベントに、下記のコードを書いて
回避しているのですが、全ての必須項目についていちいちコードを
書かなくてはならず、メンテナンスも大変です。
一発解決ですとか、せめて各テキストボックスのBeforeUpdateイベント
に書かなくても済む方法はないでしょうか。
<コード>
  If IsNull(Me!各項目) Then
    Cancel = True
    Me!各項目.Undo
  End If

皆様のお知恵をお待ちしております。お願いします。
・ツリー全体表示

【4239】Re:存在チェック
回答  Gin_II  - 05/1/21(金) 22:08 -

引用なし
パスワード
   If DCount("*","仕上種別","仕上CD=" & Me!TXT仕上コード) = 0 Then
  Me!TXT仕上コード.SetFocus
  MsgBox "該当する仕上コードは存在しません。"
End If

でもいいかと (^^ゞ
・ツリー全体表示

【4238】Re:二つのテーブルをフォームで使用したい...
発言  クロ  - 05/1/21(金) 17:39 -

引用なし
パスワード
   > 違うもうひとつのテーブルを使用したい

使用の仕方が分かりませんが、案を2つ
1)クエリで両テーブルを結合させてレコードソースにする。
2)もう一つのテーブルはサブフォームにする。
・ツリー全体表示

【4237】二つのテーブルをフォームで使用したい場...
質問  nemotake  - 05/1/21(金) 15:57 -

引用なし
パスワード
   フォームでひとつは入力用のテーブルで、プロパティのレコードソースで指定すれば使用できますが、違うもうひとつのテーブルを使用したい場合はどうすればいいですか?
教えてください。初心者です。
・ツリー全体表示

【4236】Re:存在チェック
お礼  Aiz  - 05/1/21(金) 14:07 -

引用なし
パスワード
   ▼Gin_II さん:
レスが遅くなってすいません。
何時間か前まで煮詰まってました^^;

私の説明が足りなかったようで、申し訳ないです。
入力したデータがテーブルに存在するかのチェックで、以下のようにしたら解決しました。
お手数かけて申し訳ありませんでした。


  Dim db As DAO.Database
  Dim RS As DAO.Recordset
  Dim criteria As String

'接続
  Set db = CurrentDb
  
  '抽出条件の判定 -----> 入力した仕上コードを仕上マスタでチェック
  criteria = "SELECT 仕上CD FROM 仕上種別 where 仕上CD= " & Me.TXT仕上コード.Value & ";"
  
  'レコードセットを取得
  Set RS = db.OpenRecordset(criteria, dbOpenSnapshot)

  If RS.RecordCount = 0 Then
    '該当コードがテーブル内に存在しない場合。
    Me.TXT仕上コード.SetFocus
    Call showError("該当する仕上コードは、存在しません。")
    RS.Close: Set RS = Nothing
    db.Close: Set db = Nothing
    Exit Sub
  Else
    '存在する場合、何もしない。
  End If
  
  '終了
  RS.Close: Set RS = Nothing
  db.Close: Set db = Nothing
・ツリー全体表示

【4235】Re:DCountでファイルの有無を調べる方法
お礼  はな  - 05/1/21(金) 11:11 -

引用なし
パスワード
   ありがとうございました。
解決出来ました。
・ツリー全体表示

【4234】Re:解決
発言  クロ  - 05/1/21(金) 8:35 -

引用なし
パスワード
   そんなもんです...自分も永遠に悩んで解決すれば
大したことがないということは結構あります。
お疲れさまでした。

※【4229】存在チェックにレスが付いてます。
 独自で解決されているようですがレスした方失礼ですので
 ちゃんとレスをどのように解決したかを明記の上レスを返
 してください。
 何処のBBSでも暗黙のルールですので...
・ツリー全体表示

【4233】Re:サブフォームについて
お礼  えび  - 05/1/20(木) 21:51 -

引用なし
パスワード
   ありがとうございます。

試させてもらいます。
・ツリー全体表示

【4232】Re:GetOpenFilenameのChDir
お礼  なっちん  - 05/1/20(木) 21:42 -

引用なし
パスワード
   ▼Gin_II さん:
>[ファイルを開く] ダイアログを表示する方法
>http://www.f3.dion.ne.jp/~element/msaccess/AcTipsGetFileName.html

平素よりお世話になっております。
こういう方法もあったんですね。
ありがとうございました。
・ツリー全体表示

【4231】Re:存在チェック
回答  Gin_II  - 05/1/20(木) 20:57 -

引用なし
パスワード
   >1.コンボボックスにて出力形式を選ぶ
>2.テキストボックスに値を入力
>3.テーブルの中に、コンボボックスで選んだ出力形式で、テキストボックスに
>入力した値が存在するかチェックする。

3は??
出力形式?

単にテキストボックスに入力されたデータがテーブルに存在するかどうかって
ことなら、DCount 関数などを使えばいいと思いますけど。
・ツリー全体表示

【4230】解決
お礼  Aiz  - 05/1/20(木) 19:43 -

引用なし
パスワード
   クロさんありがとうございました。
問題解決しました。

列幅が0になっていたからのようです。

お手数かけてすいませんでした。
・ツリー全体表示

【4229】存在チェック
質問  Aiz  - 05/1/20(木) 19:14 -

引用なし
パスワード
   テキストボックスに入力した値がDBに存在するかのチェックもやっているんですが、煮詰まってます...。
すいません。どなたか助言のほうをお願いします。

処理の流れとしましては、

1.コンボボックスにて出力形式を選ぶ
2.テキストボックスに値を入力
3.テーブルの中に、コンボボックスで選んだ出力形式で、テキストボックスに入力した値が存在するかチェックする。

です。
すいません、よろしくお願いします。
・ツリー全体表示

【4228】Re:コンボボックスへのセット方法
発言  Aiz  - 05/1/20(木) 18:02 -

引用なし
パスワード
   ▼クロ さん:
実行後のプロパティでは値集合ソースにはcriteriaのSQLソースになっていました。
後、
値集合タイプ:テーブル/クエリ

列数:2

列幅:0cm;2.54cm

となっていました。

何度もすいません。ご助言のほうお願いします。
・ツリー全体表示

【4227】Re:コンボボックスへのセット方法
回答  クロ  - 05/1/20(木) 17:46 -

引用なし
パスワード
   一度、フォームプロパティの「デザイン変更の許可」を「すべてのビュー」として
フォームロード後にフォームのコンボボックスにフォーカスのある状態でプロパティ
で値集合ソースがcriteriaのSQLになっていないか確認してみてください。
※既存の値集合ソースがあるとデザインにしたときは既存のSQLになってしまうかも?

それと併せて
値集合タイプ/列数/列幅なども再確認してください。
・ツリー全体表示

446 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084748
(SS)C-BOARD v3.8 is Free