パラメータのテーブルを参照するSQLコードの修正
以下のコードを使用すると、正しい結果が得られます
WHERE(TblSvcSetB.ToSelect)= True AND QSvcRemindB.HoursWorkedAfterLastSvc>460;
同じ値が記載されている表を参照すると、エラーは発生しませんが、一部のレコードがドロップされます
WHERE(TblSvcSetB.ToSelect)= True AND QSvcRemindB.HoursWorkedAfterLastSvc>Dlookup( "[KomSetupReminder]"、 "[ USysTblLevel] ");
[KomSetupReminder] "、" [USysTblLevel]-フィールドタイプは数値、フィールドサイズは長整数、小数点は自動です
クエリを入力する代わりに、tableからパラメータを参照できるようにするために、何を修正したらよいかアドバイスしてください.
返信リスト(回答:11)
この作業はありますか?
ここで、ここで(tblsvcsetb.toselect)= trueとqsvcremindb.hoursWorkedAfterLastSvc>Val(Dlookup( "[KomSetupreminder]"、 "[usystbllevel]"));
応答1# ->にスキップ2 #IrshadA先生、
機能しませんでした.エラーはありませんが、適切な結果はありません.
それから、クエリの上部でパラメータを宣言しようとしましたが、エントリのdailogがポップアップして結果が表示されないので、間違っています.
クエリの上部で、以下を使用しました
パラメータ[table]![USysTblLevel]![KomSetupReminder] INTEGER;
そして最後に使用された行で:
WHERE(TblSvcSetB.ToSelect)= True AND QSvcRemindB.HoursWorkedAfterLastSvc>[Tables]![USysTblLevel]![KomSetupReminder];ここで、QSvcRemindB.HoursWorkedAfterLastSvcフィールドが以下の方法で作成されたことにも触れておきます.ソースQSvcRemindBに問題がある可能性があります:
HoursWorkedAfterLastSvc:Format(NZ([CurrentSMR]、0)-NZ([LastSvcSMR]、0)、 "#、#00.0")
確認してアドバイスしてください.
応答3# ->にスキップ4 #IrshadA先生、
完全なクエリは次のとおりです:
a)正常に機能している
SELECT QSvcRemindB.Model、QSvcRemindB.SerialNo、QSvcRemindB.SvcDue、QSvcRemindB.HoursWorkedAfterLastSvc、TblSvcSetB.LineNo、TblSvcSetB.JobDesc、TblSvcSetB.SvcAction、TblSvcSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetReset>
FROM(QSvcRemindB INNER JOIN TblSvcSetA ON(QSvcRemindB.SvcDue=TblSvcSetA.SvcCategory)AND(QSvcRemindB.Model=TblSvcSetA.MachModel)AND(QSvcRemindB.ModelV=TblSvcSetA.ModelVTblSvcSetA.ModelVTblSvcSetA.ModelSsetB.SetSvcSetB.SetSet.FormNo
WHERE(TblSvcSetB.ToSelect)= True AND QSvcRemindB.HoursWorkedAfterLastSvc>460;
b)460をtableから取得したいので正常に機能しないため、以下はエラーなしで機能しますが、すべてのレコードが上記のようにプルされるわけではありません.
SELECT QSvcRemindB.Model、QSvcRemindB.SerialNo、QSvcRemindB.SvcDue、QSvcRemindB.HoursWorkedAfterLastSvc、TblSvcSetB.LineNo、TblSvcSetB.JobDesc、TblSvcSetB.SvcAction、TblSvcSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetReset>
FROM(QSvcRemindB INNER JOIN TblSvcSetA ON(QSvcRemindB.SvcDue=TblSvcSetA.SvcCategory)AND(QSvcRemindB.Model=TblSvcSetA.MachModel)AND(QSvcRemindB.ModelV=TblSvcSetA.ModelVTblSvcSetA.ModelVTblSvcSetA.ModelSsetB.SetSvcSetB.SetSet.FormNo
WHERE(TblSvcSetB.ToSelect)= True AND QSvcRemindB.HoursWorkedAfterLastSvc>Val(Dlookup( "[KomSetupReminder]"、 "[USysTblLevel]"));
確認とアドバイスをお願いします.
応答4# ->にスキップ5 #HansVMV即時windows (Ctrl + G)、入力またはコピー/貼り付けをアクティブにすると返される
? Dlookup( "[KomSetupreminder]"、 "[usystbllevel]")
Enterを押す?
応答6# ->にスキップ7 #HansVMVありがとうございます.これは変なので、それがうまくいかない理由はわかりません.
usySTBLLEVELには1つのレコード、または複数のレコードのみが含まれていますか?
応答7# ->にスキップ8 #IrshadA先生、
Applicationのいくつかの設定でこのレコードフィールドを使用しているため、レコードは1つしかありません.
テストのために、>460のWHEREをクエリから削除しました.同じクエリに基づくレポートの1つにvbaを適用し、それが機能した
レポートのオープンイベント
文字列を暗くする
myfilter="[HoursWorkedAfterLastSvc]>"&DLookup( "[KomSetupReminder]"、 "[USysTblLevel]")
Me.Filter=myfilter
Me.FilterOn=True
すべての記録をもたらします.しかし、問題は、多くのレポートを検索して、このクエリが使用されている場所として編集する必要があるだけなので、クエリに条件を適用するので、いくつかのレポートで作業する必要はありません.
他のアイデアを適用して達成できるかどうかをガイドしてください.
応答8# ->にスキップ9 #HansVMVどうですか
SELECT QSvcRemindB.Model、QSvcRemindB.SerialNo、QSvcRemindB.SvcDue、QSvcRemindB.HoursWorkedAfterLastSvc、TblSvcSetB.LineNo、TblSvcSetB.JobDesc、TblSvcSetB.SvcAction、TblSvcSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetB.ReblSBSetReset>
FROM(QSvcRemindB INNER JOIN TblSvcSetA ON(QSvcRemindB.SvcDue=TblSvcSetA.SvcCategory)AND(QSvcRemindB.Model=TblSvcSetA.MachModel)AND(QSvcRemindB.ModelV=TblSvcSetA.ModelVTblSvcSetA.ModelVTblSvcSetA.ModelSetTabSetB.SetSvcSetB.SetSvcSetB.SetSvcSetB.SetSvcSetB.SetSvcSetB.SetSvcSetA.TblSvcSetB.SetSvcSetB.SetSvcSetA.TblSvcSetB.SetSvcSetB.SetSvcSetB.SetSvcSetB.Set.Inset FormNo、
WHERE TblSvcSetB.ToSelect=True AND QSvcRemindB.HoursWorkedAfterLastSvc>
USysTblLevel
USysTblLevel.KomSetupReminder√
応答8# ->にスキップ11 #KenSherKomSetupReminderには単一の行しか含まれていないため、tableと現在のクエリの現在の結果tableのデカルト積を返すことができるはずです.したがって、DLookup関数の呼び出しは避けてください.
SELECT QSvcRemindB.Model、QSvcRemindB.SerialNo、 QSvcRemindB.SvcDue、
QSvcRemindB.HoursWorkedAfterLastSvc、TblSvcSetB.LineNo、TblSvcSetB.JobDesc、
TblSvcSetB.SvcAction、TblSvcSetB.ReqCategory、TblSvcSetB.ReqPartNo、
TblBqReqPartNo、
TblSvcSetSqbTclSqtSetTabSvcSetSet (QSvcRemindB INNER JOIN TblSvcSetA
ON(QSvcRemindB.SvcDue=TblSvcSetA.SvcCategory)
AND(QSvcRemindB.Model=TblSvcSetA.MachModel)
AND(QSvcRemindB.ModelV=TblSvcSetA.ModelV)
TblSvcSetB ON TblSvcSetA.FormNo=TblSvcSetB.FormNo
WHERE TblSvcSetB.ToSelect=TRUE
AND QSvcRemindB.HoursWorkedAfterLastSvc>USysTblLevel.KomSetupReminder;√