Access SQL заявление ничего не возвращает! - PullRequest
0 голосов
/ 21 октября 2010

У меня проблема с оператором доступа sql SELECT.проблема в том, что когда сервер работает с ACCESS-2007, он работает;однако, когда бэкэнд является sql-server-2008, он ничего не возвращает.вот утверждение:

SELECT IIf([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.11*Other*','1.11 Other',[Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]) AS [Occurrence Code], Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]) AS [Count]
FROM [Lab Occurrence Form]
WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between  Forms!Meeting_Reasons_Frequency!Text4  And  Forms!Meeting_Reasons_Frequency!Text2 )) And [Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.*'
GROUP BY IIf([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.11*Other*','1.11 Other',[Lab Occurrence Form].[1 0 Preanalytical (Before Testing)])
HAVING ((Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]))<>0)
ORDER BY IIf([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.11*Other*','1.11 Other',[Lab Occurrence Form].[1 0 Preanalytical (Before Testing)])

обратите внимание, что не работает следующее: Forms!Meeting_Reasons_Frequency!Text4 и это Forms!Meeting_Reasons_Frequency!Text2 - когда я заменяю их постоянными значениями, они работают;однако проблема в том, что если они по какой-то причине неправильно читают то, что находится в текстовом поле.

снова: этот запрос работает FINE с доступом в качестве бэкэнда, однако, когда бэкэнд переключается на сервер SQL, это не такза работой!причина снова в том, что forms!text вещь.кто-нибудь знает почему?

обновление благодаря предложению Боба я запустил профиль на sql-сервере и нашел что-то забавное.он действительно работает правильно, однако возвращает дату, подобную этой:

@P1 datetime,@P2 datetime','2010-04-30 00:00:00','2010-04-01 00:00:00'

Ответы [ 3 ]

1 голос
/ 21 октября 2010

Вы не можете просто вставить элементы управления в вашу строку.

Between  Forms!Meeting_Reasons_Frequency!Text4  
 And  Forms!Meeting_Reasons_Frequency!Text2 

Вам нужно отделить их, а затем посмотреть на строку SQL в ближайшем окне.

"<beginning query> Between " & Forms!Meeting_Reasons_Frequency!Text4 & _
" And " & Forms!Meeting_Reasons_Frequency!Text2 & " <rest of query>"

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

1 голос
/ 22 октября 2010

Попробуйте определить ссылки на элемент управления формы в качестве параметров:

  PARAMETERS [Forms]![Meeting_Reasons_Frequency]![Text4] DateTime, 
     [Forms]![Meeting_Reasons_Frequency]![Text2] DateTime;
  SELECT IIf([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.11*Other*','1.11 Other',[Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]) AS [Occurrence Code], Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]) AS [Count]
  FROM [Lab Occurrence Form]
  WHERE ((([Lab Occurrence Form].[Occurrence Date]) Between  Forms!Meeting_Reasons_Frequency!Text4  And  Forms!Meeting_Reasons_Frequency!Text2 )) And [Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.*'
  GROUP BY IIf([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.11*Other*','1.11 Other',[Lab Occurrence Form].[1 0 Preanalytical (Before Testing)])
  HAVING ((Count([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)]))<>0)
  ORDER BY IIf([Lab Occurrence Form].[1 0 Preanalytical (Before Testing)] Like '*1.11*Other*','1.11 Other',[Lab Occurrence Form].[1 0 Preanalytical (Before Testing)])
0 голосов
/ 21 октября 2010

Это выстрел в темноте, но я думаю, что это ваш как.Access использует * в качестве подстановочных знаков, в то время как SQL Server использует%.Даже если синтаксис переведен в t-sql, мне интересно, если он также изменит * на%.Попробуйте ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...