-1

エラー メッセージは表示されませんが、何を選択しても結果が 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 つのレコードしか取得できません。うーん、今のところ新人のミスで頭突きをしているに違いない。:/

4

2 に答える 2

0

あなたが望むものに完全に依存しますが、ここにベン図のチートシートがあります. http://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_orig.jpgこれにより、自分が何をしているかをより論理的に確認できるようになります。

于 2015-06-10T18:30:03.570 に答える
-1

うわー、私は私の問題を見つけました。本当に恥ずかしいです。SQL は正しかったです。json ファイルの列数を数えていましたが、毎回 5 が返されました。人の時間を無駄にしてごめんなさい。フィードバックをお寄せいただきありがとうございます。私はSQLステートメントが苦手なので、SQLステートメントを間違えることに固執していたという意味で役に立ちました。あなたのフィードバックは役に立ちました。このような初歩的なミスにまだ出くわす可能性があるとは思いもしませんでした。

i<Object.keys(obj.result[0]).length

する必要があります

i<Object.keys(obj.result).length
于 2015-06-11T08:39:33.657 に答える