Bonjour,
Je fais appel à vous pour résoudre ce qui est pour moi un mystère.![]()
Il ne s'agit pas vraiment dé résoudre un problème puisque j'ai trouvé une parade (que j'explique rapidement plus bas) mais plutot de pouvoir me donner une explication.
Le contexte:
J'ai à charge de résoudre un problème sur une application développée en Visual Basic qui fait appel à des informations stockées dans une BD gérée par MS SQL server.
Cette application, lorsque la machine est connectée au réseau de l'entreprise et donc à une BD du serveur de la boite, marche nickel.
Cette application est aussi conçue pour tourner sur un poste déconnecté du réseau avec bien sur MS SQL Server et une copie conforme du schéma de la Bd installés dessus. Or en mode local l'application plantait.
Explication et erreur rencontrée :
- Les personnes qui ont développé la Bd ont crée un type LIBELLE4 qui correspond à un varchar(4)
(Les champs de ce type contiennent des nombres à quatre chiffres par exemple "0004" ).
- Une fonction crée comme suit:
CREATE nomfonction ( @objet as varchar(4) ) [..corps de la fonction]
- Cette fonction est appelée dans le programme avec en paramètre un objet de type LIBELLE4. (déjà j'ai trouvé ca étrange!)
- l'erreur en mode local survient dans le corps de la fonction lors du traitement suivant:
Select untruc
From autreTable
Where champTable= cast(@object as int)
Le truc c'est que dans la table "autreTable" le champ "champTable" est de type LIBELLE4, donc le cast sert rien et plante l'application en local![]()
- Résolution du problème en local:
J'ai donc modifié la déclaration de la fonction en
CREATE nomfonction ( @objet as LIBELLE4 ) [..corps de la fonction]
et j'ai viré le cast en int dans le corps de la fonction
On en arrive donc enfin à mes questions (si vous avez compris ce que j'ai tenté d'expliquer au dessus):
1.Comprenez vous pourquoi cette fonction qui manifestement est du grand n'importe quoi arrive à marcher lorsque l'application s'execute sur une machine connectée au réseau et plante (logiquement?) en mode local?
2.Etant donné que je débute, je lance une hypothèse farfelue :
Y'aurait-il une sorte de traitement des exceptions/erreur coté serveur entreprise qui(à l'insu de mon plein gré) pourrait expliquer la bonne execution de l'application?
Partager