2009-04-23 4 views
0

現代の言語を使用して古いスタイルのCOBOL/RPGレポートを生成する能力を失っているようです。方法:レコード数を持たないデータエリアを使用する

レコードの数に依存するDataReaderを使用してコードを表示することがよくあります。したがって、必要でない場合には、追加の集計クエリが存在します。

このコードでは、ほとんどの状況で、利用可能な別のレコードがあるかどうかを知る必要があります。言い換えれば、私が最後のレコードにいるかどうかを教えて、レコードセパレータを表示することができます。次のように

単純なアルゴリズムは次のようになります。


Dim available As Boolean = rdr.Read() 
While available 
    DisplaySearchRecord(rdr) 
    available = rdr.Read() 
    If available Then DisplaySeparator() 
End While 

してください、このアルゴリズムでは簡単な変更で十分だろうときCOUNT(*)またはデータテーブル/データセットを使用しないでください。

+1

これは質問ですか、あなたを悩ますものですか? –

+0

かなり正しいです。これは質問ではありません。私は尋ねていません。私は言っている。質問掲示板のための奇妙な種類。しかし、うまくいけば誰かがこれを見つけ、ahaの瞬間を持つでしょう。これまでの3つのコメントは私には不思議に思う.... –

答えて

0

whileの後にセパレータを表示しないのはなぜですか?

While rdr.Read() 
     DisplaySearchRecord(rdr) 
    End While 
    DisplaySeparator() 
0

あなたは()を呼び出すreader.Read維持する必要があり、この

Dim IsFirst As Boolean = True 

While rdr.Read() 
    If Not IsFirst 
    DisplaySeparator() 
    Else 
    IsFirst = False 
    End If 

    DisplaySearchRecord(rdr) 
End While 
0

ような何かを試すことができ、それ以上のレコードが存在しない場合にはfalseを返します。

は、だから私はどうなるのかList<YourRecord>にDBからデータをダンプし、私はリストが取り込まれた後に...ループ(私は++)のためにそれを反復処理し、list.Count

に対して私がチェックしています
関連する問題