2013-04-16 70 views
1

我是有聯繫的這一點,花了一個多小時與此擺弄之後,我恐怕已經放棄了......「類型的表達式不匹配」​​(MS SQL訪問)

A - 可能 - 容易的問題,雖然我沒有SQL的經驗。當我嘗試這在Access(其它變體中),我收到了 '在表達式類型不匹配':

SELECT Route_Leg_Passagier.[RouteID], Route_Leg_Passagier.[LegID], Leg.[Startpunt], Leg.[Eindpunt] 
FROM Route_Leg_Passagier, Leg 
WHERE Route_Leg_Passagier.[LegID] = Leg.[LegID] 
AND Route_Leg_Passagier.[RouteID] = '1'; 

這裏的訪問文件:

https://dl.dropboxusercontent.com/u/104521722/Vliegtuigmaatschappij%20-%20Database11.accdb

我想看到StartpuntEindpunt從那些Leg s其中RouteID是1. RouteIDLegID被存儲在實體Route_Leg_Passagier中,但StartpuntEindpunt在實體Leg中。

對不起,如果這不好,我沒有這個網站的經驗。但隨時批評我,並提前謝謝你! :)

回答

3

是不是Route_Leg_Passagier。[RouteID]一個整數值?在這種情況下,你的WHERE條件應該是這樣的:

AND Route_Leg_Passagier.[RouteID] = 1; 

行情是串或字符值

+0

姆姆,謝謝你的(非常快)答案! 唉,它仍然不起作用。也就是說,我用1代替'1',並給出了相同的錯誤。 – user2286565

+0

'RouteID'是文本數據類型。這是一個合理的猜測,但不是問題的原因。 – HansUp

1

Route_Leg_PassagierID.LegID是自動編號的數據類型;這實際上是一種數字數據類型,一種長整型的特殊形式。 是文本數據類型。而你的數據庫包含使用該字段的這兩個表之間的關係。

請嘗試以下步驟:

  1. 讓你的數據庫文件的備份副本。
  2. 刪除Route_Leg_PassagierIDLeg之間的關係。
  3. 將數據類型更改爲數字長整數。
  4. 測試以下查詢。
SELECT 
    rlp.Route_Leg_PassagierID, 
    rlp.LegID, 
    l.Startpunt, 
    l.Eindpunt 
FROM 
    Route_Leg_Passagier AS rlp 
    INNER JOIN Leg AS l 
    ON rlp.LegID = l.LegID 
WHERE rlp.RouteID='1'; 

您也可以爲您正確的數據類型後,如果需要重新建立關係。

相關問題