2017-07-14 3 views
0

J'essaye de créer un rapport dans BIRT. J'ai créé un proc stocké dans SQL Server 2008 qui fonctionne parfaitement. Toutefois, lorsque j'essaie d'exécuter le rapport dans BIRT, il ne s'exécutera pas avec la valeur NULL.Maximo/BIRT - valeurs nulles optionnelles

var DepartmentValue = params["DepartmentValue"].value; 
var AccountValue = params["AccountValue"].value; 

sqlText = " EXEC SP_Report_ByDept '"+DepartmentValue+"','"+AccountValue+"','"+startdt+"','"+enddt+"' "; 

Fonctionne parfaitement s'il existe une valeur AcccountValue valide. Une idée de comment passer une valeur nulle pour AccountValue?

Cheers.

+0

Les variables de liaison sont la solution au lieu de créer une chaîne SQL manuellement. Cela résoudra votre problème de sécurité d'injection SQL et le problème de valeur nulle en même temps. – hvb

Répondre

0

Si je comprends bien, vous voulez passer la chaîne 'null' lorsque le paramètre réel est null?

var DepartmentValue = params["DepartmentValue"].value; 
var AccountValue = params["AccountValue"].value; 

if (AccountValue == null){ 
    AccountValue = 'null'; 
} 

sqlText = " EXEC SP_Report_ByDept '"+DepartmentValue+"','"+AccountValue+"','"+startdt+"','"+enddt+"' "; 
+0

Salut Jeroen. J'ai essayé cela. Ça n'a pas l'air de marcher. –

+0

Si vous activez le débogage dans BIRT, vous pouvez voir la requête réelle envoyée à la base de données. Veuillez ajouter cette information à votre message d'origine. – Jeroen