Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

peut on modifier une vue en asp.net VB

3 réponses
Avatar
JohnPaulGeorgesRingo
bonjour
je travaille en asp.net / VB
j'ai une base contenant une table A
cette table contient 5 pointeurs (en fait les index des 5 autre table a1,a2
etc...)
lorsque j'affiche cette table A l'utilisateur ne voit pour ces champs que
des n° , ce qui n'est pas pratique convenons en !
j'ai donc créé une vue qui elle affiche en clair le libelle des fichiers a1
,a2 etc.... en faisant une corrélation entre les pointeurs

j'arrive à ajouter des enregistrement à partir de cette vue
mais des que je fais une modification j'ai ce message....
"[SqlException: La vue ou la fonction 'R_produits' ne peut pas être mise à
jour car la modification affecte les tables de base multiples.]


r_produits est ma requête ms SQL

merci a vous

3 réponses

Avatar
Paul Bacelar
A moins d'avoir de très bonnes raisons de faire une vue en base de données,
préférez faire cette vue grâce aux DataView d'un DataSet.

--
Paul Bacelar

"JohnPaulGeorgesRingo"
wrote in message news:
bonjour
je travaille en asp.net / VB
j'ai une base contenant une table A
cette table contient 5 pointeurs (en fait les index des 5 autre table


a1,a2
etc...)
lorsque j'affiche cette table A l'utilisateur ne voit pour ces champs que
des n° , ce qui n'est pas pratique convenons en !
j'ai donc créé une vue qui elle affiche en clair le libelle des fichiers


a1
,a2 etc.... en faisant une corrélation entre les pointeurs

j'arrive à ajouter des enregistrement à partir de cette vue
mais des que je fais une modification j'ai ce message....
"[SqlException: La vue ou la fonction 'R_produits' ne peut pas être mise à
jour car la modification affecte les tables de base multiples.]


r_produits est ma requête ms SQL

merci a vous




Avatar
JohnPaulGeorgesRingo
oui merci cela l'air bien
cf.
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpguide/html/cpconnavigatingrelationshipsusingdataview.asp
mais cela semble s'appliquer plus spécialement a une relation mère/père &
enfant : un enreg appelant moult enreg.

moi j'ai une table centrale contenant des liens vers une dizaine de tables
périphériques contenant (ou pas ) des données images ou ntext.
donc un enreg a des liens vers 10 enreg uniques dans 10 tables différentes
(tables liens images, table descriptifs, table explication,etc...)

J'aurais pu les inclure directement dans ma "table centrale " mais celle ci
serait devenu trop grosse, et souvent pour rien (pas tous les enreg ont des
données gourmandes liées).
j'aurais pu utiliser une procédure stockée, mais je ne maîtrise pas bien
encore.

j'ai trouvé la solution :
j'enregistre non pas dans la vue, mais directement dans les tables
concernées les modifications apportées à la vue : la "table centrale " c'est
facile et pour toutes les données périphériques, connaissant l'id de l'enreg
en cour, je modifie par un appel SQL distinct les tables en liaison.
un peu lourd, mais cela fonctionne.

merci en tout cas pour ce rappel important.
cordialement
JPGR


"Paul Bacelar" a écrit dans le message
de news: OStoEy%
A moins d'avoir de très bonnes raisons de faire une vue en base de données,
préférez faire cette vue grâce aux DataView d'un DataSet.

--
Paul Bacelar

"JohnPaulGeorgesRingo"
wrote in message news:
bonjour
je travaille en asp.net / VB
j'ai une base contenant une table A
cette table contient 5 pointeurs (en fait les index des 5 autre table


a1,a2
etc...)
lorsque j'affiche cette table A l'utilisateur ne voit pour ces champs que
des n° , ce qui n'est pas pratique convenons en !
j'ai donc créé une vue qui elle affiche en clair le libelle des fichiers


a1
,a2 etc.... en faisant une corrélation entre les pointeurs

j'arrive à ajouter des enregistrement à partir de cette vue
mais des que je fais une modification j'ai ce message....
"[SqlException: La vue ou la fonction 'R_produits' ne peut pas être mise
à
jour car la modification affecte les tables de base multiples.]


r_produits est ma requête ms SQL

merci a vous








Avatar
Paul Bacelar
"JohnPaulGeorgesRingo"
wrote in message news:
oui merci cela l'air bien
cf.



http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpguide/html/cpconnavigatingrelationshipsusingdataview.asp
mais cela semble s'appliquer plus spécialement a une relation mère/père &
enfant : un enreg appelant moult enreg.

moi j'ai une table centrale contenant des liens vers une dizaine de tables
périphériques contenant (ou pas ) des données images ou ntext.
donc un enreg a des liens vers 10 enreg uniques dans 10 tables différentes
(tables liens images, table descriptifs, table explication,etc...)




Maître/détail marche même quand l'arité et de 0 ou 1 entre le maître et ces
détails.


J'aurais pu les inclure directement dans ma "table centrale " mais celle


ci
serait devenu trop grosse, et souvent pour rien (pas tous les enreg ont


des
données gourmandes liées).



Faire des jointures pour récupérer les données, c'est pire que d'avoir une
grosse table car les index sur cette table permettront d'avoir des
performances très peu liées à la taille des données plutôt qu'au nombre
d'enregistrement.


j'aurais pu utiliser une procédure stockée, mais je ne maîtrise pas bien
encore.




Pour faire des mise à jours multi-table, les procédures sont indispensables
pour reduire le temps de verrouillage durant les trnsactions de bases de
données qui sont obligatoires dans ce cas de figure.

j'ai trouvé la solution :
j'enregistre non pas dans la vue, mais directement dans les tables
concernées les modifications apportées à la vue : la "table centrale "


c'est
facile et pour toutes les données périphériques, connaissant l'id de


l'enreg
en cour, je modifie par un appel SQL distinct les tables en liaison.
un peu lourd, mais cela fonctionne.




Très dangereux en environnement concurrent sans l'utilisation de transaction
et pas optimal d'un point de vue performance. Une table indexée serait bien
plus performante.


merci en tout cas pour ce rappel important.
cordialement
JPGR




--
Paul Bacelar