Comment attaquer une procedure stockée SQL depuis le code Navision ?



Créer les variables suivantes :


ADOConn : Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Connection 
ADOrs Automation : 'Microsoft ActiveX Data Objects 2.8 Library'.Recordset 
ConnStr : Text 200


 


 


Ajouter le code suivant :
//Connexion ADO
CREATE(ADOConn);
ConnStr :=
'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=AdventureWorks;' +
'Data Source=ELYASSIR01\SQLEXPRESS';


ADOConn.Open(ConnStr);
CREATE(ADOrs);


 


//Procèdure stockée


PSSql := STRSUBSTNO('EXEC StoreProcName ''%1'',''%2'',''%3''', Param1, Param2, Param3);



ADOrs.Open();


ADOrs := ADOConn.Execute(PSSql);



ADOrs.Close;
ADOConn.Close;
CLEAR(ADOrs);
CLEAR(ADOConn);

Comments (1)

  1. Merci pour l’astuce mais, je vois beaucoup d’inconvénients à ce procédé :

    – il faut stocker le nom du serveur SQL quelquepart (si on change de serveur…)

    – comment tester si la procédure s’est bien déroulée ?

    – dans quel contexte de transaction va s’exécuter la procédure ? (autrement dit, si on aborte avec ERROR() dans Navision après l’exécution de la procédure, est-ce que les données modifiées par cette procédure subissent un rollback ?)

    – on sort de la logique métier Navision une fois dans la procédure stockée, attention <<danger>> (donc la procédure stockée doit être limitée à manipuler des données hors dehors des tables Navision)

    Voila !

Skip to main content