MS Access追加查询 - 字段无效

时间:2017-01-10 13:50:44

标签: sql ms-access

我有一个附加查询,其中包含Excel Sheet作为数据源。今天,其中一个字段的基础数据已从String更改为Long。在我的查询表中,我将此特定字段计算为:

MSCI: Left([bp_msci_ic_key];2)

为了补偿基础数据格式的变化,我把它改为......

MSCI: Left(*Str*([bp_msci_ic_key]);2)

不幸的是,查询会生成#ERROR ... 为什么这种方法不起作用?

这里是整个SQL语句的语法:

INSERT INTO tbl_Position( 
    MoPo_ID, 
    AssetClass_Sub_ID, 
    VALOR, 
    ISIN, 
    [Currency], 
    Position_Name, 
    Weight, 
    Rating, 
    Asset_Country, 
    Issuer_Country, 
    Position_Duration, 
    Position_YieldToMaturity, 
    MSCI_Code, 
    PosValue)
SELECT 
    qry_Position_Load_step1.MoPo_BM_ID, 
    qry_Position_Load_step1.AssetClass_Sub_ID, 
    qry_Position_Load_step1.VALOR, 
    qry_Position_Load_step1.ISIN, 
    IIf([qry_Position_load_step1]![ccy] Is Null And Left([qry_Position_load_step1]![classsub],2)="M_", Mid([qry_Position_load_step1]![classsub],3,Len([qry_Position_load_step1]![classsub])-1),[qry_Position_load_step1]![CCY]) AS CCY,
    qry_Position_Load_step1.NAME_SHORT, 
    qry_Position_Load_step1.Val, 
    tbl_MopoRohdaten.rating_clir, 
    tbl_MopoRohdaten.ass_domi_country, 
    tbl_MopoRohdaten.iss_domi_country, 
    tbl_MopoRohdaten.pos_dur_mod, 
    tbl_MopoRohdaten.pos_ytm, 
    Left(Str([bp_msci_ic_key]),2) AS MSCI, 
    tbl_MopoRohdaten.pos_eop_value
FROM 
    qry_Position_Load_step1 
        LEFT JOIN tbl_MopoRohdaten ON 
            (qry_Position_Load_step1.MoPo_Name_Avaloq = tbl_MopoRohdaten.portf_name) AND 
            (qry_Position_Load_step1.ISIN = tbl_MopoRohdaten.asset_isin);

编辑:根据评论减少选择:

SELECT 
    tbl_MopoRohdaten.[bp_msci_ic_key] AS MSCI
FROM 
    qry_Position_Load_step1 
        LEFT JOIN tbl_MopoRohdaten ON 
            (qry_Position_Load_step1.MoPo_Name_Avaloq = tbl_MopoRohdaten.portf_name) AND 
            (qry_Position_Load_step1.ISIN = tbl_MopoRohdaten.asset_isin)
WHERE 
    (((tbl_MopoRohdaten.[bp_msci_ic_key]) Is Not Null));

1 个答案:

答案 0 :(得分:0)

出现问题是因为基础数据有一个经纪/不完整的记录源。由于我还不确定的原因,ContextMenu中只有一小部分基础数据被加载。由于查询在匹配数据时使用了双连接,因此它不断显示与其中一个连接匹配的记录。

但是,返回的结果从未包含我遇到问题的MSCI字段的任何数据。很自然地,当我使用tbl_MopoRohdaten时,它返回了一个错误,因为该字段为CStr()

相关问题