システムwiki

再クリーニング、recalc、更新、または再描画

NVMaxin 解決済 最終更新日:2021-06-14 18:16

アクセス2016

私はいくつかのサブフォームを持つ主な形をしています.

メインフォーム名:certinput

サブフォーム:[サブフォームProdInfo]と[サブフォームADDLINFO]

私は変数HDText

を作成しました

[Subform ProdInfo]の[Lot NO]という名前のコントロールのOneXitでは、次のコードがあります.

nulltozero(フォーム!certinput![サブフォームADDLINFO]フォーム!text1)= 0
フォーム!CertInput![サブフォームAddLInfo] .form!text1= hdtext
フォーム!CertInput![サブフォームADDLINFO] .FORM.RECALC


の場合は終わります

エラーなしで実行されますが、フォーカスを[サブフォームaddtlinfo]に移動すると、値はフィールドtext1にあります.空白です.

あなたは助けることができますか?

返信リスト(回答:10)

10 #
DirkGol

Recalc、Requery、Refresh、Repaintではなく、これらのもののいずれかを実行する必要はありません.この変数HDTextはどこに定義されていますか?行にブレークポイントを設定してその値を確認しましたか.

フォーム!CertInput![サブフォームADDLINFO].form!text1= hdtext

そして、コードがブレークポイントで停止したときに、HDTextの値が何であるかを確認するときは?

応答10# ->にスキップ
9 #
NVMaxin

はい、私は次のように変数を定義し、テストしました.

Variant

として薄暗いHDTEXT

hdtext= dlookup( "text1"、 "addtlinfoItems"、 "info= 'dfars'")

MsgBox HDText

ブレークポイントを管理する方法はわかりません.

応答9# ->にスキップ
8 #
DirkGol

しかし、それを見てみることができます.

応答8# ->にスキップ
7 #
NVMaxin

OneXitコード全体は次のとおりです.

プライベートサブLOT_NO_EXIT(整数としてキャンセル)
Variant As As Variant As
Forms![CERTINPUT]![NEWTEXT]= "YES"またはME.Newrecord
私!= Dlookup( "[熱番号"、 "Lot Nos"、 "[Lot No]=フォーム![CERTINPUT]![サブフォームProdInfo] [LOT NO]")
iSnullでない場合(私![熱番号])それから
私!= Dlookup( "Dfars"、 "Heat Nos"、 "Forme![CertInput]![サブフォームProdInfo]![HATH NO]」)

の場合は終了 私!= Dlookup( "[Size]"、 "Lot Nos"、 "[Lot No]=フォーム![CertInput] [Subform ProdInfo] [Lot NO]")
ME![仕様]= Dlookup( "[仕様]"、 "仕様"、 "[加熱NO]=フォーム![CERTINPUT]![サブフォームProdInfo]![熱番号]」)

の場合は終了 IF(フォーム![CERTINPUT]![NewText]= "YES"またはME.Newrecord)そしてMe!HEATDFARS= true
HDText= dlookup( "text1"、 "addtlinfoItems"、 "info= 'dfars'")
nulltozero(フォーム!certinput![サブフォームADDLINFO]フォーム!text1)= 0
フォーム!CertInput![サブフォームAddLInfo].form!text1= hdtext


の場合は終わります の場合は終わります

終了SUB

変数が作成され、有効です.それは問題ではありません.[TEXT1]コントロールの他のサブフォーム[サブフォームADDLINFO]に表示する変数の値が表示されます.

応答7# ->にスキップ
5 #
DirkGol

フォーム/サブフォームセットアップの説明によると、わたしがわかる限り有効です.したがって、ステートメントが実行されていないか、変数HDTEXTにはNULLまたはブランク値があります.その実行を支配するIFステートメントが2つあります.
ブレークポイントを設定してコードをデバッグする理由はそれほど役に立ちます.このように、実行を追跡するために一時的にdebug.printステートメントを一時的に追加できます.

IF(フォーム![CERTINPUT]![NewText]= "YES"またはME.Newrecord)そしてMe!HEATDFARS= true
debug.print "*** ifステートメントの場合は***"

HDText= dlookup( "text1"、 "addtlinfoItems"、 "info= 'dfars'")
debug.print "hdtext="&hdtext
nulltozero(フォーム!certinput![サブフォームADDLINFO]フォーム!text1)= 0
debug.print "***秒の場合は***"
"
フォーム!CertInput![サブフォームAddLInfo].form!text1= hdtext


の場合は終わります の場合は終わります

その後、コードをトリガーした後は、Immediatewindows を調べて、debug.printステートメントが表示されているものを確認できます.

NullToZero()関数が行い、NZ()関数との違いについて興味があります.引数値がテキストの場合でも、常に0を返しますか?

応答5# ->にスキップ
6 #
NVMaxin

モジュールで:何年も前に私に書かれました.

関数NullTozero(Variant As Asabale)

isNull(anyValue)の場合
nulltozero= 0


NullTozero= AnyValue

の場合は終了 終了関数

あなたが提案したようにコードを実行しました.どちらのdebug.printステートメントも、その両方が実行されたことを示しました.

応答6# ->にスキップ
4 #
DirkGol

HDTextの値として表示されたのは何ですか?

応答4# ->にスキップ
3 #
NVMaxin

HDTextの値は

として正しく表示されます.

「材料はDFARSに準拠しています.」

応答3# ->にスキップ
2 #
DirkGol

私が理解していないというあなたのセットアップについて何かがなければなりません.このデータベースを投稿することも、OneDriveまたはDropboxのようなファイル共有サービスで、問題を証明できる最小限のversionで、OneDriveまたはDropboxにリンクしてください.またはそれがあれば
大きすぎませんので、あなたは私のWebサイトから取得できるアドレスで私に電子メールを送ることができます.

応答2# ->にスキップ
1 #
NVMaxin 1

遅れて申し訳ありません.私は深呼吸をして別の角度からそれを見た.

サブフォームProdInfoに隠しフィールドtext1を作成し、値を付与しました.その後、サブフォームAddLInfoのメインフォームのCertInputから、その値をサブフォームAddLInfoのフィールドtext1に転送することができました.今ではAOKが機能しています.

プライベートサブLOT_NO_EXIT(整数としてキャンセル)
Forms![CERTINPUT]![NEWTEXT]= "YES"またはME.Newrecord
私!= Dlookup( "[熱番号"、 "Lot Nos"、 "[Lot No]=フォーム![CERTINPUT]![サブフォームProdInfo] [LOT NO]")
iSnullでない場合(私![熱番号])それから
私!= Dlookup( "Dfars"、 "Heat Nos"、 "Forme![CertInput]![サブフォームProdInfo]![HATH NO]」)
私の場合!HEATDFARS= true
me!text1= dlookup( "text1"、 "addtlinfoItems"、 "[info]=""DFARS" ")


私!TEXT1= NULL

の場合は終了
の場合は終了
の場合は終了 終了SUB

プライベートサブサブフォーム_ADDLINFO_ENTER()
Forms![CERTINPUT]![NEWTEXT]= "YES"またはME.Newrecord
フォーム!CertInput![サブフォームADDLINFO]!TEXT1=フォーム!CertInput![サブフォームProdInfo]!text1

の場合は終了 終了SUB

あなたの助けとガイダンスをありがとう.私はブレークポイントを見上げて、何か新しいことを学びました.