2010-12-15 21 views
0

SQLクエリを作業EnteredBy、EventTypeSelectedためは、MS-Accessで

INSERT INTO tblTmpEventLog(TrackingNumber, PartNumber, PartNumberChgLvl, 
          EnteredBy, EventTypeSelected, EventDate) 
SELECT DISTINCT tblRevRelLog_Detail.RevRelTrackingNumber, 
     tblRevRelLog_Detail.PartNumber, tblRevRelLog_Detail.ChangeLevel, 
     [Forms]![frmEventLog_Input]![EnteredBy] AS EnteredBy, 
     [Forms]![frmEventLog_Input]![EventTypeSelected] AS EventTypeSelected, 
     CDate([Forms]![frmEventLog_Input]![EventDate]) AS EventDate 
    FROM tblRevRelLog_Detail LEFT JOIN tblEventLog 
    ON (tblEventLog.PartNumber = tblRevRelLog_Detail.PartNumber) 
    AND (tblEventLog.PartNumberChgLvl = tblRevRelLog_Detail.ChangeLevel) 
WHERE ((([tblRevRelLog_Detail]![RevRelTrackingNumber]) = 
      [Forms]![frmEventLog_Input]![TrackingNumber])) 
    AND ((tblEventLog.PartNumber) NOT IN 
      (SELECT tblEventLog.PartNumber FROM tblEventLog 
       WHERE tblEventLog.EventTypeSelected = 'pn REMOVED From Wrapper' 
       AND tblEventLog.TrackingNumber = 
         tblRevRelLog_Detail.RevRelTrackingNumber 
       AND tblEventLog.PartNumber = tblRevRelLog_Detail.PartNumber 
       AND tblEventLog.PartNumberChgLvl = 
         tblRevRelLog_Detail.ChangeLevel 
      )); 

DISTINCTキーワードはworking..I平均ではありませんされていない私はDISTINCTキーワードを使用する場合、これらの列のデータが表示されません。

EVENTDATEは問題なく動作していますが、なぜEneteredByとEventTypeSelected列に表示されないのかわかりません。

これをどのように処理するか教えてもらえますか?

+3

- スタートあなたの質問に対する答えを選ぶ。 –

+1

ヘルプが必要な場合は、クエリ全体を表示する必要があります – mwolfe02

+0

@Jack、OK今から選択します... – user397316

答えて

0

最終的なデータ型としてフォームから正しく解釈できないことがあります。ただし、日付フィールドでは、関数CDATE(...)でラップしています。したがって、SQLエンジンは結果の型を知っています。私は他の分野についても同じことをお勧めします。例:CAST(...あなたのフォームコントロールをDateTimeとして)OtherColumnなどとしています...私はアクセスはキャスティングを許可しますが、ポジティブではないと考えます。それ以外の場合は、フォームの値を宣言されたデータ型変数に事前にプルして、実行中にAS ASTERCOLUMというクエリでTHAT変数を使用します。

また、@ジャックはあなたのアカウントに戻って、あなたの歴史的な質問を見て、実際に助けられた/何か問題を解決することができます。いくつかの質問は答えを得ることは決してありません。それは大丈夫です。

+0

ありがとう...それは今働いています。私は今私の古い質問の答えを選択します – user397316

+0

これは、パラメータとしてSQLステートメント内のフォームコントロールへの参照を宣言することは常に良い考えです。これにより、クエリオプティマイザの処理が向上し、信頼性が向上します(特に、いずれかのコントロールがNULLの場合)。 –

0

VBAでフォームコントロールの値を設定し、そのコントロールをクエリで使用すると、これまでのAccessの古いバージョンはわかりませんでしたVBAで設定した値を参照してください。ユーザーがコントロールを正常に編集する場合、クエリは期待値を表示します。多分それはここで起こったことです。

これを回避するには、目的の値を返すVBA関数を宣言できます。例えば、これに代えて:

SELECT ..., Forms!MainForm!TextEntry AS TextEntry, ... FROM ... 

使用この:このとともに

SELECT ..., GetTextEntry() AS TextEntry, ... FROM ... 

:あなたは14個の質問をしただけで33%のための答えを選択した

Public Function TextEntry() As Variant 
    TextEntry = Forms!MainForm!TextEntry 
End Function 
+0

"SELECT ...、" "&Forms!MainForm!TextEntry' – Fionnuala

+0

いいえ、私は次のような動作をしていることを意味しています(おそらくAccess 97 - 私はAccess 2003または2010でそれを再現できませんでした):(1)XからYにテキストボックスコントロール値を変更します。(2)テキストボックスコントロールの値に依存するクエリを実行します。 (3)クエリは値Yではなく値Xを見ることに注意してください。それはずっと前です。私がAccessFieldオブジェクトまたは他のいくつかの特色について知る前に、 – phoog

関連する問題