2017-01-10 4 views
0

У меня есть запрос append, который имеет лист Excel в качестве источника данных. Сегодня базовые данные одного из полей были изменены с String на Long. В моей таблице запроса я имел это конкретное поле рассчитывается как:Запрос доступа MS Access - поле не работает

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); 

EDIT: Уменьшенная Выбор в соответствии с комментариями:

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)); 
+0

Возможно, вам нужно использовать 'CStr()'? – Arvo

+0

'CStr'is все еще дает мне #Error – rohrl77

+0

Поместите в редактирование для удобства чтения. –

ответ

0

произошла проблема, потому что основные данные были broked/неполную запись источник. По причинам, о которых я пока не уверен, загрузилась только часть базовых данных в tbl_MopoRohdaten. Поскольку запрос использовал двойное соединение для сопоставления данных, он продолжал показывать ряд записей, которые соответствовали одному из соединений.

Однако результаты, которые были возвращены, никогда не содержали никаких данных для поля MSCI, с которым у меня были проблемы. Поэтому, естественно, когда я использовал CStr(), он возвратил ошибку, потому что поле было Null.

+0

Рад слышать, как вы это решили! :) Вы можете пойти дальше и принять свой собственный ответ, поэтому вопрос будет отмечен как разрешенный :) Счастливый запрос! ;) –

+0

Спасибо. Мне нужно подождать до завтра, чтобы принять свой собственный ответ. : -) – rohrl77

Смежные вопросы