2017-02-24 8 views
0

ように私は、この持っている:私は変更する必要がどのようなSQLアクセスIIF(aantal_instroom)instroom

sql = "SELECT " & _ 
     "proces_id, " & _ 
     "proces_naam, " & _ 
     "voorraad, " & _ 
     "voorraad_te_laat, " & _ 
     "voorraad_verificatie, " & _ 
     "voorraad_verificatie_te_laat, " & _ 
     "teamplanning, " & _ 
     "teamplanning_verificatie, " & _ 
     "Iif(IsNull(teamplanning_totaal), 0, teamplanning_totaal) + Iif(IsNull(teamplanning), 0, teamplanning) AS totaal_teamplanning, " & _ 
     "Iif(IsNull(teamplanning_totaal_verificatie), 0, teamplanning_totaal_verificatie) + Iif(IsNull(teamplanning), 0, teamplanning_verificatie) AS totaal_teamplanning_verificatie, " & _ 
     "Round(Iif(IsNull(teamplanning), 0, (teamplanning * proces_normtijd * Iif(IsNull(productiviteit_factor), 1, productiviteit_factor))/60), 2) AS teamplanning_uren, " & _ 
     "Round(Iif(IsNull(teamplanning_verificatie), 0, (teamplanning_verificatie * proces_normtijd_verificatie * Iif(IsNull(productiviteit_factor), 1, productiviteit_factor))/60), 2) AS teamplanning_uren_verificatie, " 
    If IsNull(Datum) Then 
     sql = sql & "null AS verschil, " & _ 
      "null AS verschil_verificatie, " 
    Else 
     sql = sql & "Iif(IsNull(voorraad), 0, voorraad) - Iif(IsNull(teamplanning), 0, teamplanning) - Iif(IsNull(teamplanning_totaal), 0, teamplanning_totaal) AS verschil, " & _ 
      "Iif(IsNull(voorraad_verificatie), 0, voorraad_verificatie) - Iif(IsNull(teamplanning_verificatie), 0, teamplanning_verificatie) - Iif(IsNull(teamplanning_totaal_verificatie), 0, teamplanning_totaal_verificatie) AS verschil_verificatie, " 
    End If 
    sql = sql & "proces_normtijd, " & _ 
     "proces_normtijd_verificatie, " & _ 
     "Iif(IsNull(realisatie_cases), 0, realisatie_cases) AS realisatie_cases_aantal, " & _ 
     "Iif(IsNull(realisatie_cases_verificatie), 0, realisatie_cases_verificatie) AS realisatie_cases_aantal_verificatie, " & _ 
     "Iif(IsNull(ingeplande_cases), 0, ingeplande_cases) AS ingeplande_cases_aantal, " & _ 
     "Iif(IsNull(ingeplande_cases_verificatie), 0, ingeplande_cases_verificatie) AS ingeplande_cases_aantal_verificatie, " & _ 
     "volgorde, " 
    sql = sql & "Iif(IsNull(voorraad_gisteren), 0, voorraad_gisteren) AS instroom, " & _ 
     "Iif(IsNull(voorraad_verificatie_gisteren), 0, voorraad_verificatie_gisteren) AS instroom_verificatie " 
    sql = sql & "FROM tmp_planning_proces " & _ 
     "WHERE userid = '" & EscapeString(LCase(mod_global.RealUser)) & "' " & _ 
     "AND team_id = " & TeamID & " " & _ 
     IIf(IsNull(MedewerkerGroepID), "AND medewerker_groep_id is null ", "AND medewerker_groep_id = " & MedewerkerGroepID & " ") & _ 
     IIf(IsNull(Datum), "AND week = " & week & " AND jaar = " & jaar & " ", "AND datum = #" & Format(Datum, "yyyy-mm-dd") & "# ") & _ 
     "ORDER BY volgorde ASC " 

されています:

「IIF(IsNullの(voorraad_gisteren)、0、voorraad_gisteren)AS机 "。

それはする必要があります:

"IIF(IsNullの(aantal_instroom)、0、aantal_instroom)instroom AS"。

問題は、instroomという別のテーブルから来ているということです。クエリは、私は自分自身をしなかったし、私が試したので、私は、クエリのスキルが限られているこの:

"instroom AS IIF(IsNullの(instroomからaantal_instroomを選択)、0、aantal_instroom)" が、それは動作しません、突然、データはもう表示されません。

誰でもこの方法を知っていますか?

+0

まず、 'instroom'テーブルをクエリに含めていないので、SQLはそのテーブルまたはその中のフィールドについて何も知らないようにします。第二に、そのテーブルを追加した後、フィールドに別名を与えて、それを見ている人に混乱させてしまう「instroom」と呼んでいることに注意してください。 –

+0

また、上記のクエリはクエリまたはテーブル 'tmp_planning_proces'に基づいているため、そのクエリ/テーブルには必要なフィールドがありますか? –

答えて

0

まず第一に行うためのより良い方法があります:

IIf(IsNull(voorraad_gisteren), 0, voorraad_gisteren) 

それは次のとおりです。あなたの質問に今

Nz(voorraad_gisteren, 0) 

。まず、テーブルinstroomがSQLステートメントのFROMセクションの一部であることを確認する必要があります。例:

FROM tmp_planning_proces INNER JOIN instroom ON ... [whatever fields link the two tables together] 

は、その後、あなたがこのようにテーブルの上に任意のフィールドを参照することができます。

instroom.aantal_instroom 

IIf(IsNull(instroom.aantal_instroom), 0, instroom.aantal_instroom) AS instroom 

またはより良い:

Nz(instroom.aantal_instroom,0) AS instroom 

私も同じものを使用することをコメントに同意しますテーブル名としてのフィールドエイリアスは、おそらく、あまりにも悪い考えであり、将来混乱を招く可能性があります。