Bonjour,
D'abord la description initiale de mon contexte et de mes besoins.
Je fais une migration d'une appli "full Access 2007" pour stocker les données dans SQLServer 2005.
Les tables 'normales' sont donc migrées. Il me reste à traiter le cas des tables temporaires. Elles sont actuellement stockées dans les bases de code. De fait, chaque utilisateur a ainsi sa propre copie de cette table et cela permet d'isoler les données.
Beaucoup de formulaires, de requêtes, d'états utilisent ces tables temporaires et on me demande de trouver une solution qui fonctionne avec SQLServer 2005 et qui NE NÉCESSITE PAS D'INTERVENIR SUR LE CODE EXISTANT.
J'ai donc imaginé la soution suivante pour ces tables :
* je considère qu'une table temporaire est une table 'normale' et je la migre directement dans SQLServer 2005 avec un nouveau nom
* je rajoute une colonne 'spid' qui a comme valeur par défaut @@SPID (qui me renvoie le n° de la connexion)
* je crée une vue (avec le même nom que la table dans Access) qui filtre sur cette table avec comme critère 'spid=@@SPID'
* je peux alors 'attacher' la table temporaire vers la vue SQLServer.
Voici un exemple de script dans SQLServer :
Sous Access, je peux alors insérer des données depuis la table attachée sur la vue (elles sont bien stockées dans la table) , mais je ne vois pas les données renvoyées par la vue, j'ai des enregistrements #supprimé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE TABLE [dbo].[TableTemp]( [id] int IDENTITY PRIMARY KEY , [libelle] [varchar](50) NULL, [spid] [int] NOT NULL DEFAULT (@@spid) ) ON [PRIMARY] create view vTableTemp as select id, libelle from TableTemp where spid=@@SPID
J'ai fait des tests complémentaires, et c'est la clause 'spid=@@SPID' dans la vue qui pose problème. Si je remplace par une valeur en dur, cela fonctionne bien (mais ne me convient pas dans mon cas). J'ai essayé de passer par une UDF, mais toujours le même problème.
Quelqu'un a-t-il une piste ?
Merci par avance pour vos réponses
Partager