Bonjour,
J=92ai une proc=E9dure stock=E9 en sql server 2005 sp3, qui est un
simple select (select * from =85.).
J=92ex=E9cute cette requ=EAte en c# pour remplir une datatable. Et cela
fonctionne bien.
Je complique un peu en rajoutant une fonction SQL
alter FUNCTION dbo.qt_GetSector (@FC_test varchar(20))
RETURNS varchar(300)
WITH EXECUTE AS CALLER
AS
BEGIN
return(@FC_test);
end;
je rajoute cette fonction a ma requ=EAte (select dbo.qt_GetSector(=AB
qsdf=AB ) as qsdf, * from =85.). Je re - ex=E9cute cette proc=E9dure en c=
#
et la je m=92aper=E7ois que le champ qsdf(cad la fonction) dans la
datatable est devenue en lecture seule.
Je peux modifier le champs de la datatable pour le mettre en =E9criture
programmatiquement. Mais je n=92aime cette solution, car il y a
d=92autres applications qui utilisent cette requ=EAtes et qui
impliqueraient beaucoup de modifications.
Comment puis je modifier ma requ=EAte en Tsql pour rendre ce champ qui
contient le r=E9sultat d=92une fonction SQL visible en =E9criture dans une
DataTable(C#) sans modifier le code de mon application?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fred BROUARD
Bonjour,
Par essence, une requête qui contient des transformations de données (et l'appel à une fonction en est une) ne peut plus être mis à jour. Alors que cette même requête sans transformation conduit à une vue "misajourbale" (a condition d'avoir la clef de la table dans les données)
La granule minimale de cohérence dans une base de données est la ligne de table.
Ce que vous voulez faire n'est donc pas cohérent puisque vous voudriez pouvoir modifier une ligne dont une colonne est impossible à modifier.
Il est donc logique que les objets clients refusent de vous donner la main sur cette "chose" !
A vous de nous expliquer votre besoin fonctionnel pour savoir ce que vous voulez en faire... et comment nous pouvons vous proposer des solutions plus cohérente !
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
zoltix a écrit :
Bonjour, J’ai une procédure stocké en sql server 2005 sp3, qui est un simple select (select * from ….). J’exécute cette requête en c# pour remplir une datatable. Et cela fonctionne bien.
Je complique un peu en rajoutant une fonction SQL
alter FUNCTION dbo.qt_GetSector (@FC_test varchar(20)) RETURNS varchar(300) WITH EXECUTE AS CALLER AS BEGIN
return(@FC_test); end;
je rajoute cette fonction a ma requête (select dbo.qt_GetSector(« qsdf« ) as qsdf, * from ….). Je re - exécute cette procédure en c# et la je m’aperçois que le champ qsdf(cad la fonction) dans la datatable est devenue en lecture seule.
Je peux modifier le champs de la datatable pour le mettre en écriture programmatiquement. Mais je n’aime cette solution, car il y a d’autres applications qui utilisent cette requêtes et qui impliqueraient beaucoup de modifications.
Comment puis je modifier ma requête en Tsql pour rendre ce champ qui contient le résultat d’une fonction SQL visible en écriture dans une DataTable(C#) sans modifier le code de mon application?
Merci d’avance…
Bonjour,
Par essence, une requête qui contient des transformations de données (et
l'appel à une fonction en est une) ne peut plus être mis à jour. Alors
que cette même requête sans transformation conduit à une vue
"misajourbale" (a condition d'avoir la clef de la table dans les données)
La granule minimale de cohérence dans une base de données est la ligne
de table.
Ce que vous voulez faire n'est donc pas cohérent puisque vous voudriez
pouvoir modifier une ligne dont une colonne est impossible à modifier.
Il est donc logique que les objets clients refusent de vous donner la
main sur cette "chose" !
A vous de nous expliquer votre besoin fonctionnel pour savoir ce que
vous voulez en faire... et comment nous pouvons vous proposer des
solutions plus cohérente !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
zoltix a écrit :
Bonjour,
J’ai une procédure stocké en sql server 2005 sp3, qui est un
simple select (select * from ….).
J’exécute cette requête en c# pour remplir une datatable. Et cela
fonctionne bien.
Je complique un peu en rajoutant une fonction SQL
alter FUNCTION dbo.qt_GetSector (@FC_test varchar(20))
RETURNS varchar(300)
WITH EXECUTE AS CALLER
AS
BEGIN
return(@FC_test);
end;
je rajoute cette fonction a ma requête (select dbo.qt_GetSector(«
qsdf« ) as qsdf, * from ….). Je re - exécute cette procédure en c#
et la je m’aperçois que le champ qsdf(cad la fonction) dans la
datatable est devenue en lecture seule.
Je peux modifier le champs de la datatable pour le mettre en écriture
programmatiquement. Mais je n’aime cette solution, car il y a
d’autres applications qui utilisent cette requêtes et qui
impliqueraient beaucoup de modifications.
Comment puis je modifier ma requête en Tsql pour rendre ce champ qui
contient le résultat d’une fonction SQL visible en écriture dans une
DataTable(C#) sans modifier le code de mon application?
Par essence, une requête qui contient des transformations de données (et l'appel à une fonction en est une) ne peut plus être mis à jour. Alors que cette même requête sans transformation conduit à une vue "misajourbale" (a condition d'avoir la clef de la table dans les données)
La granule minimale de cohérence dans une base de données est la ligne de table.
Ce que vous voulez faire n'est donc pas cohérent puisque vous voudriez pouvoir modifier une ligne dont une colonne est impossible à modifier.
Il est donc logique que les objets clients refusent de vous donner la main sur cette "chose" !
A vous de nous expliquer votre besoin fonctionnel pour savoir ce que vous voulez en faire... et comment nous pouvons vous proposer des solutions plus cohérente !
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com Audit, conseil, expertise, formation, modélisation, tuning, optimisation Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
zoltix a écrit :
Bonjour, J’ai une procédure stocké en sql server 2005 sp3, qui est un simple select (select * from ….). J’exécute cette requête en c# pour remplir une datatable. Et cela fonctionne bien.
Je complique un peu en rajoutant une fonction SQL
alter FUNCTION dbo.qt_GetSector (@FC_test varchar(20)) RETURNS varchar(300) WITH EXECUTE AS CALLER AS BEGIN
return(@FC_test); end;
je rajoute cette fonction a ma requête (select dbo.qt_GetSector(« qsdf« ) as qsdf, * from ….). Je re - exécute cette procédure en c# et la je m’aperçois que le champ qsdf(cad la fonction) dans la datatable est devenue en lecture seule.
Je peux modifier le champs de la datatable pour le mettre en écriture programmatiquement. Mais je n’aime cette solution, car il y a d’autres applications qui utilisent cette requêtes et qui impliqueraient beaucoup de modifications.
Comment puis je modifier ma requête en Tsql pour rendre ce champ qui contient le résultat d’une fonction SQL visible en écriture dans une DataTable(C#) sans modifier le code de mon application?
Merci d’avance…
Fred
in news:%, Fred BROUARD wrote :
Bonjour,
Bonjour,
Par essence, une requête qui contient des transformations de données (et l'appel à une fonction en est une) ne peut plus être mis à jour.
Si la «mise à jour» est nécessaire (sur les colonnes sources de la fonction par exemple), il y a la possibilité de faire une vue avec des triggers INSTEAD OF.
-- Fred
in news:%239Oo2uGqJHA.824@TK2MSFTNGP05.phx.gbl, Fred BROUARD wrote :
Bonjour,
Bonjour,
Par essence, une requête qui contient des transformations de données
(et l'appel à une fonction en est une) ne peut plus être mis à jour.
Si la «mise à jour» est nécessaire (sur les colonnes sources de la
fonction par exemple), il y a la possibilité de faire une vue avec des
triggers INSTEAD OF.
Par essence, une requête qui contient des transformations de données (et l'appel à une fonction en est une) ne peut plus être mis à jour.
Si la «mise à jour» est nécessaire (sur les colonnes sources de la fonction par exemple), il y a la possibilité de faire une vue avec des triggers INSTEAD OF.
-- Fred
zoltix
Grand merci de votre réponse et Encore un plus grand merci pour votre livre "SQL 2 édition".
Jai une application C# WinForm avec une dataGrid lié a une datatable. La datatable est remplie par une procédure stocké qui contient une requête. Dans cette requête, jai ajouté une fonction sql comme un champ. Dans lapplication, Ce champ dans la datable passe en Read/Only donc dans le datagrid aussi, et on ne peut pas changer sa valeurs dans la winform, Ce datagrid est généré automatiquement lorsquon bind la Databale. Comment puis-je contrôler cette étape ?
Lorsquon modifie ce champs, il y un événement qui est émis pour intercepter et permet de lancer des procédures de traitement particulier. Mais comme, le datagrid est généré automatiquement, je nai pas de contrôle au niveau applicatif si c'est généré par .NE T, jaurais voulu trouvé une façon de faire en Tsql pour éviter au développeurs de devoir modifier leur prog.
Jespère avoir été plus clair ..
On 19 mar, 09:21, Fred BROUARD wrote:
Bonjour,
Par essence, une requête qui contient des transformations de données (et l'appel à une fonction en est une) ne peut plus être mis à jour. Al ors que cette même requête sans transformation conduit à une vue "misajourbale" (a condition d'avoir la clef de la table dans les donnée s)
La granule minimale de cohérence dans une base de données est la lign e de table.
Ce que vous voulez faire n'est donc pas cohérent puisque vous voudriez pouvoir modifier une ligne dont une colonne est impossible à modifier.
Il est donc logique que les objets clients refusent de vous donner la main sur cette "chose" !
A vous de nous expliquer votre besoin fonctionnel pour savoir ce que vous voulez en faire... et comment nous pouvons vous proposer des solutions plus cohérente !
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langag e SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez. com Audit, conseil, expertise, formation, modélisation, tuning, optimisatio n Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technolog ies ***********************http://www.sqlspot.com*************************
zoltix a écrit :
> Bonjour, > Jai une procédure stocké en sql server 2005 sp3, qu i est un > simple select (select * from .). > Jexécute cette requête en c# pour remplir une datatable. Et c ela > fonctionne bien.
> Je complique un peu en rajoutant une fonction SQL
> alter FUNCTION dbo.qt_GetSector (@FC_test varchar(20)) > RETURNS varchar(300) > WITH EXECUTE AS CALLER > AS > BEGIN
> return(@FC_test); > end;
> je rajoute cette fonction a ma requête (select dbo.qt_GetSector(« > qsdf« ) as qsdf, * from .). Je re - exécute cette procéd ure en c# > et la je maperçois que le champ qsdf(cad la fonction) dans la > datatable est devenue en lecture seule.
> Je peux modifier le champs de la datatable pour le mettre en écrit ure > programmatiquement. Mais je naime cette solution, car il y a > dautres applications qui utilisent cette requêtes et qui > impliqueraient beaucoup de modifications.
> Comment puis je modifier ma requête en Tsql pour rendre ce champ qui > contient le résultat dune fonction SQL visible en écriture dans une > DataTable(C#) sans modifier le code de mon application?
> Merci davance
Grand merci de votre réponse et Encore un plus grand merci pour votre livre "SQL 2 edition".
Mes besoins fonctionnels:
Grand merci de votre réponse et Encore un plus grand merci pour votre
livre "SQL 2 édition".
Jai une application C# WinForm avec une dataGrid lié a une
datatable.
La datatable est remplie par une procédure stocké qui contient une
requête.
Dans cette requête, jai ajouté une fonction sql comme un champ. Dans
lapplication, Ce champ dans la datable passe en Read/Only donc dans
le datagrid aussi, et on ne peut pas changer sa valeurs dans la
winform, Ce datagrid est généré automatiquement lorsquon bind la
Databale. Comment puis-je contrôler cette étape ?
Lorsquon modifie ce champs, il y un événement qui est émis pour
intercepter et permet de lancer des procédures de traitement
particulier. Mais comme, le datagrid est généré automatiquement, je
nai pas de contrôle au niveau applicatif si c'est généré par .NE T,
jaurais voulu trouvé une façon de faire en Tsql pour éviter au
développeurs de devoir modifier leur prog.
Jespère avoir été plus clair ..
On 19 mar, 09:21, Fred BROUARD <broua...@club-internet.fr> wrote:
Bonjour,
Par essence, une requête qui contient des transformations de données (et
l'appel à une fonction en est une) ne peut plus être mis à jour. Al ors
que cette même requête sans transformation conduit à une vue
"misajourbale" (a condition d'avoir la clef de la table dans les donnée s)
La granule minimale de cohérence dans une base de données est la lign e
de table.
Ce que vous voulez faire n'est donc pas cohérent puisque vous voudriez
pouvoir modifier une ligne dont une colonne est impossible à modifier.
Il est donc logique que les objets clients refusent de vous donner la
main sur cette "chose" !
A vous de nous expliquer votre besoin fonctionnel pour savoir ce que
vous voulez en faire... et comment nous pouvons vous proposer des
solutions plus cohérente !
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langag e SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez. com
Audit, conseil, expertise, formation, modélisation, tuning, optimisatio n
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technolog ies
***********************http://www.sqlspot.com*************************
zoltix a écrit :
> Bonjour,
> Jai une procédure stocké en sql server 2005 sp3, qu i est un
> simple select (select * from .).
> Jexécute cette requête en c# pour remplir une datatable. Et c ela
> fonctionne bien.
> Je complique un peu en rajoutant une fonction SQL
> alter FUNCTION dbo.qt_GetSector (@FC_test varchar(20))
> RETURNS varchar(300)
> WITH EXECUTE AS CALLER
> AS
> BEGIN
> return(@FC_test);
> end;
> je rajoute cette fonction a ma requête (select dbo.qt_GetSector(«
> qsdf« ) as qsdf, * from .). Je re - exécute cette procéd ure en c#
> et la je maperçois que le champ qsdf(cad la fonction) dans la
> datatable est devenue en lecture seule.
> Je peux modifier le champs de la datatable pour le mettre en écrit ure
> programmatiquement. Mais je naime cette solution, car il y a
> dautres applications qui utilisent cette requêtes et qui
> impliqueraient beaucoup de modifications.
> Comment puis je modifier ma requête en Tsql pour rendre ce champ qui
> contient le résultat dune fonction SQL visible en écriture dans une
> DataTable(C#) sans modifier le code de mon application?
> Merci davance
Grand merci de votre réponse et Encore un plus grand merci pour votre
livre "SQL 2 edition".
Grand merci de votre réponse et Encore un plus grand merci pour votre livre "SQL 2 édition".
Jai une application C# WinForm avec une dataGrid lié a une datatable. La datatable est remplie par une procédure stocké qui contient une requête. Dans cette requête, jai ajouté une fonction sql comme un champ. Dans lapplication, Ce champ dans la datable passe en Read/Only donc dans le datagrid aussi, et on ne peut pas changer sa valeurs dans la winform, Ce datagrid est généré automatiquement lorsquon bind la Databale. Comment puis-je contrôler cette étape ?
Lorsquon modifie ce champs, il y un événement qui est émis pour intercepter et permet de lancer des procédures de traitement particulier. Mais comme, le datagrid est généré automatiquement, je nai pas de contrôle au niveau applicatif si c'est généré par .NE T, jaurais voulu trouvé une façon de faire en Tsql pour éviter au développeurs de devoir modifier leur prog.
Jespère avoir été plus clair ..
On 19 mar, 09:21, Fred BROUARD wrote:
Bonjour,
Par essence, une requête qui contient des transformations de données (et l'appel à une fonction en est une) ne peut plus être mis à jour. Al ors que cette même requête sans transformation conduit à une vue "misajourbale" (a condition d'avoir la clef de la table dans les donnée s)
La granule minimale de cohérence dans une base de données est la lign e de table.
Ce que vous voulez faire n'est donc pas cohérent puisque vous voudriez pouvoir modifier une ligne dont une colonne est impossible à modifier.
Il est donc logique que les objets clients refusent de vous donner la main sur cette "chose" !
A vous de nous expliquer votre besoin fonctionnel pour savoir ce que vous voulez en faire... et comment nous pouvons vous proposer des solutions plus cohérente !
-- Frédéric BROUARD, MVP SQL Server, expert bases de données et langag e SQL Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez. com Audit, conseil, expertise, formation, modélisation, tuning, optimisatio n Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technolog ies ***********************http://www.sqlspot.com*************************
zoltix a écrit :
> Bonjour, > Jai une procédure stocké en sql server 2005 sp3, qu i est un > simple select (select * from .). > Jexécute cette requête en c# pour remplir une datatable. Et c ela > fonctionne bien.
> Je complique un peu en rajoutant une fonction SQL
> alter FUNCTION dbo.qt_GetSector (@FC_test varchar(20)) > RETURNS varchar(300) > WITH EXECUTE AS CALLER > AS > BEGIN
> return(@FC_test); > end;
> je rajoute cette fonction a ma requête (select dbo.qt_GetSector(« > qsdf« ) as qsdf, * from .). Je re - exécute cette procéd ure en c# > et la je maperçois que le champ qsdf(cad la fonction) dans la > datatable est devenue en lecture seule.
> Je peux modifier le champs de la datatable pour le mettre en écrit ure > programmatiquement. Mais je naime cette solution, car il y a > dautres applications qui utilisent cette requêtes et qui > impliqueraient beaucoup de modifications.
> Comment puis je modifier ma requête en Tsql pour rendre ce champ qui > contient le résultat dune fonction SQL visible en écriture dans une > DataTable(C#) sans modifier le code de mon application?
> Merci davance
Grand merci de votre réponse et Encore un plus grand merci pour votre livre "SQL 2 edition".