2017-01-20 3 views
1

Crystal Reportsでレポートを作成していますが、列の順序はSSDBGridに表示されている順序と一致する必要があります。VB6です。VB6のSSDBGridから列インデックスを取得する

これを行うには、グリッド内の各列をループして、パラメータフィールド値を正しい見出しに設定するのが最善であると判断しました(したがって、列0のキャプションはパラメータフィールド@ COL1、など)

とにかく、私はこのために持っているコードは

Dim c As Column 
Dim cName As String 

For Each c In FShow_All_Accounts.grd_accounts.Columns 
    cName = "@Col" & c.ListIndex 
    Call setColumnHeaders(c.Index) 
    crxReport.ParameterFields.GetItemByName(cName).AddCurrentValue ("f") 
Next 

問題は、すべての最初の、柱にcの種類を設定し、grd_accountsに各cをループすることは正しくないと思われることです - grd_accountsはSSDBGridで、インデックスを返そうとするとエラーになります。

だから、私の質問(複数可):

  • SSDBGridの各列をループする正しい方法は何ですか?
  • 次に、関数に渡すために正しい列の列インデックスを取得する方法はありますか。

答えて

4

答えは実際にはあなたが想像しているよりも簡単です。あなたのコードは非常にです。

Dim c As Column 
Dim i As String 
Dim cname As String 

i = 0 

For Each c in grd_accounts.Columns 
    i = i + 1 
    cName = "@Col" & i 
    crxReport.ParameterFields.GetItemByName(cName).AddCurrentValue (c.Caption) 
Next 

ヘルパー機能は不要です。これは、各列を繰り返し、cNameを "@Col"とi(また列番号)の値に設定するため、レポートのパラメータフィールドにはその列のキャプションが付いています。

+0

これはほぼ同じですが、列の順序を変更しても同じ順序で列が印刷されるという点が異なります。 – Harambe

+0

心配しないで、私はちょうど今のように、列を固定された順序で保管しています。 – Harambe

関連する問題