DISTINCT не работает - PullRequest
       3

DISTINCT не работает

0 голосов
/ 15 декабря 2010

SQL-запрос в 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 для EnteredBy, EventTypeSelected не работает. Я имею в виду, что данные по этим столбцам не отображаются, когда я использую ключевое слово DISTINCT.* EVENTDATE работает нормально, но я не понимаю, почему он не отображается для столбцов EneteredBy и EventTypeSelected.

Может кто-нибудь сказать мне, как справиться с этим?

Ответы [ 2 ]

0 голосов
/ 15 декабря 2010

В прошлом я обнаружил (я не помню, какая это была старая версия Access), что если вы установите значение элемента управления формы в VBA, а затем используете этот элемент управления в запросе, запрос не увидит значение, которое вы установили в VBA. Если пользователь редактирует элемент управления нормально, запрос видит ожидаемое значение. Возможно, именно это и произошло здесь.

Чтобы обойти это, вы можете объявить функцию VBA, которая возвращает желаемое значение. Например, вместо этого:

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

используйте это:

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

вместе с этим:

Public Function TextEntry() As Variant
    TextEntry = Forms!MainForm!TextEntry
End Function
0 голосов
/ 15 декабря 2010

Возможно, запрос не может правильно интерпретировать форму непосредственно как конечный тип данных.Однако в поле даты вы помещаете его в функцию CDATE (...).Итак, движок SQL знает тип результата.Я бы предложил сделать то же самое для других полей.Пример: выполнение CAST (... элемента управления вашей формой ... как DateTime) в качестве OtherColumn и т. Д. ... Я ДУМАЮ, что Access разрешает приведение, но не является положительным.В противном случае, предварительно извлеките значение формы в объявленную переменную типа данных и используйте переменную THAT в запросе AS OtherColumn, как вы делаете.

В дополнение к тому, что упомянуто @Jack, вы всегда можете вернуться к своей учетной записи,посмотрите на свой исторический вопрос и выберите ответы, которые действительно помогли / решили ваши проблемы.Некоторые вопросы никогда не получают ответов, и это нормально, просто отдайте должное тем, кто действительно помогает.

...