-1

いくつかのコントロールを設定するためにvb.netでsatamentを選択し、日付値を含むツリービューも選択しました。ツリービューの日付値はDD MON YYYYこの形式であり、パラメーターが渡される列形式もこの形式です。パラメーターを渡そうとしていますこのように

cmd.CommandText = "SELECT 'At CFO Approval ' || count(*) ||' Cheques' || ' of Rs.' ||nvl(to_char(sum(bpv_amt),'9,999,999,999'),0) CFOApp from check_data where sta_flg = 0 and bpv_date='" & TreeView1.SelectedValue & "'"

しかし、これがまったく機能していないのではないかと心配しています。何が問題なのか助けてください

4

2 に答える 2

0

パラメータ化されたクエリの使用に関する@Steveのコメントに心から同意しますが、この場合、適切な TO_DATE 呼び出しを追加して試してみることをお勧めします。これを試して:

cmd.CommandText = "SELECT 'At CFO Approval ' || count(*) || " &
                  "' Cheques' || ' of Rs.' || " &
                  "nvl(to_char(sum(bpv_amt),'9,999,999,999'),0) CFOApp " &
                  "from check_data where sta_flg = 0 and " &
                  "TRUNC(bpv_date)=TO_DATE('" & TreeView1.SelectedValue & "', 'DD MON YYYY')" 

編集

日付比較への TRUNC() 呼び出しを追加しました。

次のようにテストされます。

CREATE TABLE CHECK_DATA
  (BPV_AMT   NUMBER,
   STA_FLG   NUMBER,
   BPV_DATE  DATE);

INSERT INTO CHECK_DATA (BPV_AMT, STA_FLG, BPV_DATE) VALUES (100, 0, SYSDATE);
INSERT INTO CHECK_DATA (BPV_AMT, STA_FLG, BPV_DATE) VALUES (200, 0, SYSDATE-1);
INSERT INTO CHECK_DATA (BPV_AMT, STA_FLG, BPV_DATE) VALUES (300, 1, SYSDATE);
INSERT INTO CHECK_DATA (BPV_AMT, STA_FLG, BPV_DATE) VALUES (200, 0, SYSDATE);

次に、クエリを実行します。

SELECT 'At CFO Approval ' || count(*) ||
       ' Cheques' || ' of Rs.' ||
       nvl(to_char(sum(bpv_amt),'9,999,999,999'),0) CFOApp
  from check_data
  where sta_flg = 0 AND 
        TRUNC(bpv_date) = TO_DATE('29 Aug 2012', 'DD MON YYYY');

結果は

At CFO Approval 2 Cheques of Rs.           300

共有してお楽しみください。

于 2012-08-28T11:18:13.787 に答える
0

いつものように、文字列連結を使用して SQL テキストを作成しないでください。
常にパラメータ化されたクエリを使用します。なんで?リトル・ボビー・テーブルを見る

cmd.CommandText = "SELECT 'At CFO Approval ' || count(*) ||' Cheques' || " & _
                  "' of Rs.' ||nvl(to_char(sum(bpv_amt),'9,999,999,999'),0) CFOApp " & _
                  "from check_data where sta_flg = 0 and bpv_date=:bpvdate"

cmd.Parameters.AddWithValue(":bpvdate", Convert.ToDateTime(TreeView1.SelectedValue))

ツリービューには有効な日付が含まれていると思います

形式が DD MMM YYYY の場合、この変換を試すことができます (3 文字の月に注意してください)。

Dim d as DateTime = DateTime.ParseExact(TreeView1.SelectedValue.ToString(), _
                    "dd MMM yyyy", CultureInfo.CurrentCulture);
cmd.Parameters.AddWithValue(":bpvdate", d)

代わりに完全な月名がある場合、変換は次のようになります。

Dim d as DateTime = DateTime.ParseExact(TreeView1.SelectedValue.ToString(), _
                    "dd MMMM yyyy", CultureInfo.CurrentCulture);
于 2012-08-28T08:13:44.810 に答える