2012-08-28 2 views
-1

I Vous avez sélectionné satament dans vb.net pour remplir certains contrôles et également une vue arborescente avec une valeur de date. La valeur de date de treeview est dans ce format DD MON YYYY ainsi que le format de colonne pour lequel paramter est passes est dans ce format .Je suis en train de passer le paramètre de cette manièreLe paramètre oracle sql ne fonctionne pas dans vb.net

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 & "'" 

Mais je suis inquiet cela ne fonctionne pas de quelque façon que ce qui peut b le isuue s'il vous plaît aider

Répondre

0

Comme d'habitude, don n'utilisez pas la concaténation de chaînes pour créer un texte SQL.
Utilisez toujours des requêtes paramétrées. Pourquoi? Voir Little Bobby Tables

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)) 

Je suppose que le TreeView contient des dates valides

Si le format est JJ MMM AAAA alors vous pourriez essayer avec cette conversion (notez trois mois de lettres)

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

Si au lieu vous avez des noms de mois complets puis la conversion doit être

Dim d as DateTime = DateTime.ParseExact(TreeView1.SelectedValue.ToString(), _ 
        "dd MMMM yyyy", CultureInfo.CurrentCulture); 
+0

'Chaîne n'a pas été reconnue comme un DateTime valide. Voici l'erreur après votre suggestion – user1583775

+0

Comme je l'ai dit, je suppose que l'arborescence contient des dates valides. Alors, quelle est la valeur de SelectedValue? C'est un datetime? – Steve

+0

Non Je Déjà Wirte Dans mon format Question de Les deux est 'DD MON YYYY' mais l'erreur montre – user1583775

0

Alors que je suis tout à fait d'accord avec le commentaire de @ Steve sur l'utilisation de requêtes paramétrées, dans ce cas, je suggère simplement d'ajouter un appel TO_DATE approprié pour essayer de vous lancer. Essayez ceci:

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')" 

EDIT

Ajouté TRUNC() appeler à la comparaison de la date.

Testé comme suit:

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); 

Maintenant, l'exécution de la requête:

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'); 

résultats dans

At CFO Approval 2 Cheques of Rs.   300 

Share and Enjoy.

+0

Ce did'nt travaillé pour moi – user1583775

+0

@ user1583775 - J'ai changé la requête, en ajoutant un appel TRUNC() pour la comparaison de la date. Les tests indiquent que cela devrait fonctionner.Essaie. –

+0

'" SELECT 'à l'approbation CFO' || count (*) || ' Vérifie '||' de Rs. ' || nvl (to_char (somme (bpv_amt), '9,999,999,999'), 0) CFOApp de check_data où sta_flg = 0 et bpv_dte = '23 AUG 2012 '"' Cela fonctionne mais quand je répalce la date avec "& TreeView1.SelectedVlaue & "alors aucune donnée trouvée – user1583775