1

私はしばらくの間探していましたが、ここで問題を見ることができません:

Option Compare Database
Option Explicit

Private Sub cmd_Refresh_Click()

Dim sSQL_Select                     As String
Dim Qdb                             As Database
Dim Qry                             As QueryDef    

sSQL_Select = "SELECT * FROM T_TIME_SCHEDULE"

Set Qdb = CurrentDb
Set Qry = Qdb.CreateQueryDef("QTS", sSQL_Select)
DoCmd.OpenQuery "QTS", acViewNormal
Me.F_Child_Result.Form.RecordSource = "QTS"
Me.F_Child_Result.Requery

Qdb.QueryDefs.Delete ("QTS")
Set Qdb = Nothing

End Sub

この行:

Me.F_Child_Result.Form.RecordSource = "QTS"

次のエラーが発生します。
実行時エラー「2467」:入力した式は、閉じているか存在しないオブジェクトを参照しています。
構文が正しく構築されている必要があり、サブフォームの名前を再確認しました。
希望、エラーが残っています。

4

1 に答える 1

3

レコードソースをクエリに設定せず、SQL文字列のみに設定してください。

sSQL_Select = "SELECT * FROM T_TIME_SCHEDULE"

''Set Qdb = CurrentDb
''Set Qry = Qdb.CreateQueryDef("QTS", sSQL_Select)
''DoCmd.OpenQuery "QTS", acViewNormal
Me.F_Child_Result.Form.RecordSource = sSQL
''Me.F_Child_Result.Requery

再クエリする必要はありません。レコードソースが変更されると、フォームが再クエリされます。

レコードソースをクエリに設定できたとしても(できません)、引用符で囲まれないことに注意してください。

チャットから

問題には2つの混合ストランドがあるようです。必要なのは、サブフォームコントロールに含まれるフォームではSource Objectなく、サブフォームコントロールのをクエリに設定する手段です。Record Source

ソースオブジェクトは次のように設定できます。

Me.F_Child_Result.SourceObject="Query." & sQueryName

ソースオブジェクトが、このフォームでのみ使用される保存済みクエリの名前にすでに設定されている場合は、リセットする必要はありません。クエリのSQLを変更するだけです。

Set qdf = CurrentDB.QueryDefs("JunkQuery")
qdf.SQL = sSQL
于 2012-08-07T10:22:02.160 に答える