エラー メッセージは表示されませんが、何を選択しても結果が 5 つしか表示されないため、SQL ステートメントに問題があると思われます。SQL 2008 r2データベースに接続するのが面倒なnode.jsを使用しています。以前のステートメントは機能しましたが、それは post date where 句を含む単純な select ステートメントでした。列名にスペースが含まれていることはわかっていますが、これは適切な方法ではありませんが、データベースは Navision によって使用されているため、これについてできることはありません。通常、改行はありません。より整然と見えるようにするために改行しました。
SELECT
TA.[Amount],
TA.[Posting Date],
TA.[Entry No_],
TA.[Document No_],
TB.[Salesperson Code]
FROM [ShowTex Belgie NV$G_L Entry] as TA
LEFT OUTER JOIN [ShowTex Belgie NV$Sales Invoice Header] as TB
ON TA.[Document No_]=TB.[No_]
WHERE TA.[Posting Date]>'05/01/2015'
AND TA.[Document Type]='2'
AND TA.[Gen_ Posting Type]='2'
奇妙なことに、SQL は問題ではないことが判明しました。JSON.stringify から JSON.parse への変換です。私は以前にこれをうまくテストしたと確信していました。しかし、おそらく私は怠慢でした。とにかく私のコードは次のようになります。Console.log(retVal) を実行すると、予想どおり約 100 レコードのデータが正しく表示されます。
retVal = JSON.stringify({result:dataSet});
fn(retVal);
function fn(retVal){
var obj = JSON.parse(retVal);
for(var i = 0; i<Object.keys(obj.result[0]).length;i++){
console.log(obj.result[i]);
}
}
fn 関数内で console.log(retVal) を実行しても、期待どおりにテキストの壁が表示されます。しかし、FOR ステートメント内では、最初の 5 つのレコードしか取得できません。うーん、今のところ新人のミスで頭突きをしているに違いない。:/