2017-01-10 19 views
0

データシートとしてExcelシートを持つ追加クエリがあります。現在、フィールドの基礎データはStringからLongに変更されました。 、残念ながら...私はそれを変更し、基になるデータフォーマットの変更を補償するためにMS Access Append Query - フィールドが機能しない

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:コメントごとのように減少選択:基になるデータがbroked /不完全なレコードを持っていたので

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'はまだ私に#Errorを与えています – rohrl77

+0

読みやすくするために編集を入れてください。 –

答えて

0

問題が発生しましたソース。私がまだ確信していない理由のために、tbl_MopoRohdatenの根底にあるデータの一部しかロードされていません。クエリはデータのマッチングにダブル・ジョインを使用していたため、ジョインの1つに一致した数のレコードを表示し続けました。

しかし、私が問題を抱えていたMSCIフィールドのデータは返されませんでした。当然、私がCStr()を使用したとき、フィールドはNullだったのでエラーを返しました。

+0

あなたがそれを聞いてうれしい! :)あなたは先に進んで自分の答えを受け入れることができるので、質問は解決済みとマークされます:) Happy querying! ;) –

+0

ありがとうございます。私は自分の答えを受け入れるために明日まで待つ必要があります。 : - ) – rohrl77