2012-09-04 28 views
0

我試圖在Access數據庫上運行一個查詢,我習慣了SQL查詢,但這似乎沒有以同樣的方式工作。這裏是我的查詢:C#中的MS Access查詢代碼#

OleDbCommand command = new OleDbCommand(); 
command.Connection = connect; 
command.CommandText = "SELECT RecordID, TimeStamp, EmployeeName, AreaDescription  FROM LoginRecords r, Employees e, Areas a WHERE((e.EmployeeID = r.EmployeeID) && (a.AreaID =r.AreaID) && (TimeStamp > startDate AND < endDate)) ORDER BY TimeStamp;" 

我似乎無法得到這個運行,但在技術上從SQL的角度來看,這應該是一個很好的查詢。這些表是LoginRecords,Employees,Areas。如果這會有幫助,我可以加載表格。我很感激任何有關爲什麼在Access中不起作用的反饋。 startDate和endDate是來自用戶輸入框的變量。

+0

* 「這似乎並不奏效以同樣的方式」 * - *「似乎無法得到這個運行「* - 是否有任何錯誤?你有什麼跡象表明它不起作用? – David

+0

它說command.Execute()運行時在command.CommandText上缺少表達式。 – Psyllex

+0

@Verber向我們展示您的代碼。 –

回答

1

試試這個,

這是SQL-92

SELECT  RecordID, 
      TimeStamp, 
      EmployeeName, 
      AreaDescription  
FROM  LoginRecords r 
       INNER JOIN Employees e 
        ON e.EmployeeID = r.EmployeeID 
       INNER JOIN Areas a 
        ON a.AreaID = r.AreaID 
WHERE TimeStamp > startDate AND 
     TimeStamp < endDate 
ORDER BY TimeStamp; 

使用SQL-92格式而SQL-89格式,因爲SQL-89除了老式)易於去CROSS JOIN如果不能正確處理。

,這是SQL-89

SELECT  RecordID, 
      TimeStamp, 
      EmployeeName, 
      AreaDescription  
FROM  LoginRecords r, Employees e, Areas a 
WHERE (e.EmployeeID = r.EmployeeID) AND 
     (a.AreaID = r.AreaID) AND 
     (TimeStamp > @startDate AND 
     TimeStamp < @endDate) 
ORDER BY TimeStamp; 

MSACCESS:INNER JOINOUTER JOIN (LEFT and RIGHT)

+0

我收到錯誤:查詢表達式'e.EmployeeID = r.EmployeeID INNER JOIN區域a ON a.AreaID = r.AreaI'中的語法錯誤(缺少運算符)。 我不確定Access是否具有不同的語法......我無法找到有關在MSDN上編碼查詢的任何內容。他們只是舉了一些超級簡單的例子,但沒有與連接或類似的東西。 – Psyllex

+0

@Verber你正在使用什麼版本的ms訪問? –

+0

@Verber在上面看到你的評論,你能告訴我們你的ado的一些代碼嗎? –