Reports for WinForms
ユーザーにパラメータの入力を求める
C1Report の使い方 > イベントの使用 > ユーザーにパラメータの入力を求める

データベースに格納されている追加注文レベルより少ない製品を強調表示する代わりに、ユーザーに、使用する追加注文レベルの入力を求めることができます。

ユーザーから値を取得するには、レポートのRecordSource プロパティを変更して、パラメータクエリーを使用します。パラメータクエリーの構築方法については、次の項を参照してください。

Visual Basic コードの書き方

Visual Basic
コードのコピー
c1r.DataSource.RecordSource = _        
  "PARAMETERS [Critical Stock Level] Short 10;" & _        
  c1r.DataSource.RecordSource

C# コードの書き方

C#
コードのコピー
c1r.DataSource.RecordSource =          
"PARAMETERS [Critical Stock Level] short 10;" +          
c1r.DataSource.RecordSource;

このように設定すると、コントロールは、"Critical Stock Level" 値の入力をユーザーに求めます。この値は、VBScript のグローバル変数に格納されるため、イベントがその値を使用できるようになります。変数のデフォルト値は 10 に指定されています。

ユーザーによって指定された値を使用するには、スクリプトを次のように変更します。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim script As String = _        
  "level = [Critical Stock Level]" & vbCrLf & _        
  "If UnitsInStock < level Then" & vbCrLf & _        
  "  ProductNameCtl.ForeColor = RGB(255,0,0)" & vbCrLf & _       
  "  ProductNameCtl.Font.Bold = True" & vbCrLf & _       
  "Else" & vbCrLf & _        
  "  ProductNameCtl.ForeColor = RGB(0,0,0)" & vbCrLf & _        
  "  ProductNameCtl.Font.Bold = False" & vbCrLf & _        
  "End If"        
c1r.Sections("Detail").OnPrint = script

C# コードの書き方

C#
コードのコピー
string  script =          
  "level = [Critical Stock Level]\r\n" +          
  "if (UnitsInStock < level) then\r\n" +          
  "ProductNameCtl.ForeColor = rgb(255,0,0)\r\n" +          
  "ProductNameCtl.Font.Bold = true\r\n" +         
  "else\r\n" +          
  "ProductNameCtl.ForeColor = rgb(0,0,0)\r\n" +        
  "ProductNameCtl.Font.Bold = false\r\n" +          
  "end if\r\n";        
c1r.Sections.Detail.OnPrint = script;

変更したのは、スクリプトの最初の2行です。上のスクリプトは、"UnitsInStock" フィールドの現在値を、データベースに格納されている追加注文レベルと比較するのではなく、ユーザーによって入力されて VBScript 変数の [Critical Stock Level] に格納された値と比較します。