Bonjour,
Dans une requête update je souhaite faire progresser un champ en faisant
Je ne veux pas utiliser une variable compteur (@@identity)
Y a t-il une autre solution que les curseurs?
Merci pour vos réponses
Bonjour,
Dans une requête update je souhaite faire progresser un champ en faisant
Je ne veux pas utiliser une variable compteur (@@identity)
Y a t-il une autre solution que les curseurs?
Merci pour vos réponses
Bonjour,
Dans une requête update je souhaite faire progresser un champ en faisant
Je ne veux pas utiliser une variable compteur (@@identity)
Y a t-il une autre solution que les curseurs?
Merci pour vos réponses
Bonjour,
Dans une requête update je souhaite faire progresser un champ en faisant
Je ne veux pas utiliser une variable compteur (@@identity)
Y a t-il une autre solution que les curseurs?
Merci pour vos réponses
Bonjour,
Dans une requête update je souhaite faire progresser un champ en faisant
Je ne veux pas utiliser une variable compteur (@@identity)
Y a t-il une autre solution que les curseurs?
Merci pour vos réponses
Bonjour,
Dans une requête update je souhaite faire progresser un champ en faisant
Je ne veux pas utiliser une variable compteur (@@identity)
Y a t-il une autre solution que les curseurs?
Merci pour vos réponses
J'ai l'impression que tu veux numéroter tes enregistrement ?
Tu peux le faire avec une requête SQL (non testée) :
UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
Critère<=m.Critère AND pk<=m.pk)
FROM MaTable m
Une autre technique serait plutôt de "déduire" cette info côté client (le
jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
maintenir cette info sans cesse...
--
"Pierre-Yves" a écrit dans le message de
news:%
> Bonjour,
>
> Dans une requête update je souhaite faire progresser un champ en faisant
+1
> Je ne veux pas utiliser une variable compteur (@@identity)
> Y a t-il une autre solution que les curseurs?
>
> Merci pour vos réponses
>
>
J'ai l'impression que tu veux numéroter tes enregistrement ?
Tu peux le faire avec une requête SQL (non testée) :
UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
Critère<=m.Critère AND pk<=m.pk)
FROM MaTable m
Une autre technique serait plutôt de "déduire" cette info côté client (le
jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
maintenir cette info sans cesse...
--
"Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
news:%231j21HcWEHA.3200@TK2MSFTNGP09.phx.gbl...
> Bonjour,
>
> Dans une requête update je souhaite faire progresser un champ en faisant
+1
> Je ne veux pas utiliser une variable compteur (@@identity)
> Y a t-il une autre solution que les curseurs?
>
> Merci pour vos réponses
>
>
J'ai l'impression que tu veux numéroter tes enregistrement ?
Tu peux le faire avec une requête SQL (non testée) :
UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
Critère<=m.Critère AND pk<=m.pk)
FROM MaTable m
Une autre technique serait plutôt de "déduire" cette info côté client (le
jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
maintenir cette info sans cesse...
--
"Pierre-Yves" a écrit dans le message de
news:%
> Bonjour,
>
> Dans une requête update je souhaite faire progresser un champ en faisant
+1
> Je ne veux pas utiliser une variable compteur (@@identity)
> Y a t-il une autre solution que les curseurs?
>
> Merci pour vos réponses
>
>
J'ai l'impression que tu veux numéroter tes enregistrement ?
Tu peux le faire avec une requête SQL (non testée) :
UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
Critère<=m.Critère AND pk<=m.pk)
FROM MaTable m
Une autre technique serait plutôt de "déduire" cette info côté client (le
jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
maintenir cette info sans cesse...
--
"Pierre-Yves" a écrit dans le message de
news:%
> Bonjour,
>
> Dans une requête update je souhaite faire progresser un champ en faisant
+1
> Je ne veux pas utiliser une variable compteur (@@identity)
> Y a t-il une autre solution que les curseurs?
>
> Merci pour vos réponses
>
>
J'ai l'impression que tu veux numéroter tes enregistrement ?
Tu peux le faire avec une requête SQL (non testée) :
UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
Critère<=m.Critère AND pk<=m.pk)
FROM MaTable m
Une autre technique serait plutôt de "déduire" cette info côté client (le
jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
maintenir cette info sans cesse...
--
"Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
news:%231j21HcWEHA.3200@TK2MSFTNGP09.phx.gbl...
> Bonjour,
>
> Dans une requête update je souhaite faire progresser un champ en faisant
+1
> Je ne veux pas utiliser une variable compteur (@@identity)
> Y a t-il une autre solution que les curseurs?
>
> Merci pour vos réponses
>
>
J'ai l'impression que tu veux numéroter tes enregistrement ?
Tu peux le faire avec une requête SQL (non testée) :
UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
Critère<=m.Critère AND pk<=m.pk)
FROM MaTable m
Une autre technique serait plutôt de "déduire" cette info côté client (le
jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
maintenir cette info sans cesse...
--
"Pierre-Yves" a écrit dans le message de
news:%
> Bonjour,
>
> Dans une requête update je souhaite faire progresser un champ en faisant
+1
> Je ne veux pas utiliser une variable compteur (@@identity)
> Y a t-il une autre solution que les curseurs?
>
> Merci pour vos réponses
>
>
Voici la requête que je veux effectuer:
UPDATE [C105-Lignes de devis]
SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as varchar)+'000'
FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
C105.[T105-1-code devis]=@codeDevisD and
C105.[T105-2-code niveau 1]=@niv1D and
C105.[T105-3-code niveau 2]=@niv2D and
C105.[T105-4-code niveau 3]=@niv3D and
C105.[T105-5-N° ligne du devis]=@newLigneDevis
je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
à jour en même temps
le compteur est cptLigne que je veux incrémenter de 1 à chaque
enregistrement
Merci de m'aiguiller
"Patrice" a écrit dans le message de
news:
> J'ai l'impression que tu veux numéroter tes enregistrement ?
>
> Tu peux le faire avec une requête SQL (non testée) :
>
> UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> Critère<=m.Critère AND pk<=m.pk)
> FROM MaTable m
>
> Une autre technique serait plutôt de "déduire" cette info côté client
> jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
> maintenir cette info sans cesse...
>
> --
>
> "Pierre-Yves" a écrit dans le message de
> news:%
> > Bonjour,
> >
> > Dans une requête update je souhaite faire progresser un champ en
> +1
> > Je ne veux pas utiliser une variable compteur (@@identity)
> > Y a t-il une autre solution que les curseurs?
> >
> > Merci pour vos réponses
> >
> >
>
>
Voici la requête que je veux effectuer:
UPDATE [C105-Lignes de devis]
SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as varchar)+'000'
FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
C105.[T105-1-code devis]=@codeDevisD and
C105.[T105-2-code niveau 1]=@niv1D and
C105.[T105-3-code niveau 2]=@niv2D and
C105.[T105-4-code niveau 3]=@niv3D and
C105.[T105-5-N° ligne du devis]=@newLigneDevis
je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
à jour en même temps
le compteur est cptLigne que je veux incrémenter de 1 à chaque
enregistrement
Merci de m'aiguiller
"Patrice" <nobody@nowhere.com> a écrit dans le message de
news:OnIUoRcWEHA.1888@TK2MSFTNGP11.phx.gbl...
> J'ai l'impression que tu veux numéroter tes enregistrement ?
>
> Tu peux le faire avec une requête SQL (non testée) :
>
> UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> Critère<=m.Critère AND pk<=m.pk)
> FROM MaTable m
>
> Une autre technique serait plutôt de "déduire" cette info côté client
> jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
> maintenir cette info sans cesse...
>
> --
>
> "Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
> news:%231j21HcWEHA.3200@TK2MSFTNGP09.phx.gbl...
> > Bonjour,
> >
> > Dans une requête update je souhaite faire progresser un champ en
> +1
> > Je ne veux pas utiliser une variable compteur (@@identity)
> > Y a t-il une autre solution que les curseurs?
> >
> > Merci pour vos réponses
> >
> >
>
>
Voici la requête que je veux effectuer:
UPDATE [C105-Lignes de devis]
SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as varchar)+'000'
FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
C105.[T105-1-code devis]=@codeDevisD and
C105.[T105-2-code niveau 1]=@niv1D and
C105.[T105-3-code niveau 2]=@niv2D and
C105.[T105-4-code niveau 3]=@niv3D and
C105.[T105-5-N° ligne du devis]=@newLigneDevis
je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
à jour en même temps
le compteur est cptLigne que je veux incrémenter de 1 à chaque
enregistrement
Merci de m'aiguiller
"Patrice" a écrit dans le message de
news:
> J'ai l'impression que tu veux numéroter tes enregistrement ?
>
> Tu peux le faire avec une requête SQL (non testée) :
>
> UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> Critère<=m.Critère AND pk<=m.pk)
> FROM MaTable m
>
> Une autre technique serait plutôt de "déduire" cette info côté client
> jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
> maintenir cette info sans cesse...
>
> --
>
> "Pierre-Yves" a écrit dans le message de
> news:%
> > Bonjour,
> >
> > Dans une requête update je souhaite faire progresser un champ en
> +1
> > Je ne veux pas utiliser une variable compteur (@@identity)
> > Y a t-il une autre solution que les curseurs?
> >
> > Merci pour vos réponses
> >
> >
>
>
Voici la requête que je veux effectuer:
UPDATE [C105-Lignes de devis]
SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as varchar)+'000'
FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
C105.[T105-1-code devis]=@codeDevisD and
C105.[T105-2-code niveau 1]=@niv1D and
C105.[T105-3-code niveau 2]=@niv2D and
C105.[T105-4-code niveau 3]=@niv3D and
C105.[T105-5-N° ligne du devis]=@newLigneDevis
je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
à jour en même temps
le compteur est cptLigne que je veux incrémenter de 1 à chaque
enregistrement
Merci de m'aiguiller
"Patrice" a écrit dans le message de
news:
> J'ai l'impression que tu veux numéroter tes enregistrement ?
>
> Tu peux le faire avec une requête SQL (non testée) :
>
> UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> Critère<=m.Critère AND pk<=m.pk)
> FROM MaTable m
>
> Une autre technique serait plutôt de "déduire" cette info côté client
> jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
> maintenir cette info sans cesse...
>
> --
>
> "Pierre-Yves" a écrit dans le message de
> news:%
> > Bonjour,
> >
> > Dans une requête update je souhaite faire progresser un champ en
> +1
> > Je ne veux pas utiliser une variable compteur (@@identity)
> > Y a t-il une autre solution que les curseurs?
> >
> > Merci pour vos réponses
> >
> >
>
>
Voici la requête que je veux effectuer:
UPDATE [C105-Lignes de devis]
SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as varchar)+'000'
FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
C105.[T105-1-code devis]=@codeDevisD and
C105.[T105-2-code niveau 1]=@niv1D and
C105.[T105-3-code niveau 2]=@niv2D and
C105.[T105-4-code niveau 3]=@niv3D and
C105.[T105-5-N° ligne du devis]=@newLigneDevis
je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
à jour en même temps
le compteur est cptLigne que je veux incrémenter de 1 à chaque
enregistrement
Merci de m'aiguiller
"Patrice" <nobody@nowhere.com> a écrit dans le message de
news:OnIUoRcWEHA.1888@TK2MSFTNGP11.phx.gbl...
> J'ai l'impression que tu veux numéroter tes enregistrement ?
>
> Tu peux le faire avec une requête SQL (non testée) :
>
> UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> Critère<=m.Critère AND pk<=m.pk)
> FROM MaTable m
>
> Une autre technique serait plutôt de "déduire" cette info côté client
> jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
> maintenir cette info sans cesse...
>
> --
>
> "Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
> news:%231j21HcWEHA.3200@TK2MSFTNGP09.phx.gbl...
> > Bonjour,
> >
> > Dans une requête update je souhaite faire progresser un champ en
> +1
> > Je ne veux pas utiliser une variable compteur (@@identity)
> > Y a t-il une autre solution que les curseurs?
> >
> > Merci pour vos réponses
> >
> >
>
>
Voici la requête que je veux effectuer:
UPDATE [C105-Lignes de devis]
SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as varchar)+'000'
FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
C105.[T105-1-code devis]=@codeDevisD and
C105.[T105-2-code niveau 1]=@niv1D and
C105.[T105-3-code niveau 2]=@niv2D and
C105.[T105-4-code niveau 3]=@niv3D and
C105.[T105-5-N° ligne du devis]=@newLigneDevis
je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
à jour en même temps
le compteur est cptLigne que je veux incrémenter de 1 à chaque
enregistrement
Merci de m'aiguiller
"Patrice" a écrit dans le message de
news:
> J'ai l'impression que tu veux numéroter tes enregistrement ?
>
> Tu peux le faire avec une requête SQL (non testée) :
>
> UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> Critère<=m.Critère AND pk<=m.pk)
> FROM MaTable m
>
> Une autre technique serait plutôt de "déduire" cette info côté client
> jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite de
> maintenir cette info sans cesse...
>
> --
>
> "Pierre-Yves" a écrit dans le message de
> news:%
> > Bonjour,
> >
> > Dans une requête update je souhaite faire progresser un champ en
> +1
> > Je ne veux pas utiliser une variable compteur (@@identity)
> > Y a t-il une autre solution que les curseurs?
> >
> > Merci pour vos réponses
> >
> >
>
>
Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à cause
n° ligne devis). Egalement je supopose que la numéroration est interne à
chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
Si c'est bien le cas, je verrais quelque chose comme (toujours non testé)
UPDATE C105
SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
WHERE [T105-1-code devis]Á05.[T105-1-code devis]
AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
FROM [C105-Lignes de devis] C105
En clair : le numéro d'une ligne de devis, est le nombre de lignes
appartenant au même devis, qui viennent avant ou au même niveau dans le
sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il n'y
pas de doublons sur ces champs).
Patrice
--
"Pierre-Yves" a écrit dans le message de
news:
> Voici la requête que je veux effectuer:
>
> UPDATE [C105-Lignes de devis]
> SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
> FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> C105.[T105-1-code devis]=@codeDevisD and
> C105.[T105-2-code niveau 1]=@niv1D and
> C105.[T105-3-code niveau 2]=@niv2D and
> C105.[T105-4-code niveau 3]=@niv3D and
> C105.[T105-5-N° ligne du devis]=@newLigneDevis
>
> je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
devis]
> à jour en même temps
> le compteur est cptLigne que je veux incrémenter de 1 à chaque
> enregistrement
>
> Merci de m'aiguiller
>
>
>
>
> "Patrice" a écrit dans le message de
> news:
> > J'ai l'impression que tu veux numéroter tes enregistrement ?
> >
> > Tu peux le faire avec une requête SQL (non testée) :
> >
> > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > Critère<=m.Critère AND pk<=m.pk)
> > FROM MaTable m
> >
> > Une autre technique serait plutôt de "déduire" cette info côté client
(le
> > jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite
> > maintenir cette info sans cesse...
> >
> > --
> >
> > "Pierre-Yves" a écrit dans le message de
> > news:%
> > > Bonjour,
> > >
> > > Dans une requête update je souhaite faire progresser un champ en
faisant
> > +1
> > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > Y a t-il une autre solution que les curseurs?
> > >
> > > Merci pour vos réponses
> > >
> > >
> >
> >
>
>
Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à cause
n° ligne devis). Egalement je supopose que la numéroration est interne à
chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
Si c'est bien le cas, je verrais quelque chose comme (toujours non testé)
UPDATE C105
SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
WHERE [T105-1-code devis]Á05.[T105-1-code devis]
AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
FROM [C105-Lignes de devis] C105
En clair : le numéro d'une ligne de devis, est le nombre de lignes
appartenant au même devis, qui viennent avant ou au même niveau dans le
sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il n'y
pas de doublons sur ces champs).
Patrice
--
"Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
news:ua7AVdcWEHA.644@tk2msftngp13.phx.gbl...
> Voici la requête que je veux effectuer:
>
> UPDATE [C105-Lignes de devis]
> SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
> FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> C105.[T105-1-code devis]=@codeDevisD and
> C105.[T105-2-code niveau 1]=@niv1D and
> C105.[T105-3-code niveau 2]=@niv2D and
> C105.[T105-4-code niveau 3]=@niv3D and
> C105.[T105-5-N° ligne du devis]=@newLigneDevis
>
> je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
devis]
> à jour en même temps
> le compteur est cptLigne que je veux incrémenter de 1 à chaque
> enregistrement
>
> Merci de m'aiguiller
>
>
>
>
> "Patrice" <nobody@nowhere.com> a écrit dans le message de
> news:OnIUoRcWEHA.1888@TK2MSFTNGP11.phx.gbl...
> > J'ai l'impression que tu veux numéroter tes enregistrement ?
> >
> > Tu peux le faire avec une requête SQL (non testée) :
> >
> > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > Critère<=m.Critère AND pk<=m.pk)
> > FROM MaTable m
> >
> > Une autre technique serait plutôt de "déduire" cette info côté client
(le
> > jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite
> > maintenir cette info sans cesse...
> >
> > --
> >
> > "Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
> > news:%231j21HcWEHA.3200@TK2MSFTNGP09.phx.gbl...
> > > Bonjour,
> > >
> > > Dans une requête update je souhaite faire progresser un champ en
faisant
> > +1
> > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > Y a t-il une autre solution que les curseurs?
> > >
> > > Merci pour vos réponses
> > >
> > >
> >
> >
>
>
Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à cause
n° ligne devis). Egalement je supopose que la numéroration est interne à
chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
Si c'est bien le cas, je verrais quelque chose comme (toujours non testé)
UPDATE C105
SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
WHERE [T105-1-code devis]Á05.[T105-1-code devis]
AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
FROM [C105-Lignes de devis] C105
En clair : le numéro d'une ligne de devis, est le nombre de lignes
appartenant au même devis, qui viennent avant ou au même niveau dans le
sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il n'y
pas de doublons sur ces champs).
Patrice
--
"Pierre-Yves" a écrit dans le message de
news:
> Voici la requête que je veux effectuer:
>
> UPDATE [C105-Lignes de devis]
> SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
> FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> C105.[T105-1-code devis]=@codeDevisD and
> C105.[T105-2-code niveau 1]=@niv1D and
> C105.[T105-3-code niveau 2]=@niv2D and
> C105.[T105-4-code niveau 3]=@niv3D and
> C105.[T105-5-N° ligne du devis]=@newLigneDevis
>
> je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
devis]
> à jour en même temps
> le compteur est cptLigne que je veux incrémenter de 1 à chaque
> enregistrement
>
> Merci de m'aiguiller
>
>
>
>
> "Patrice" a écrit dans le message de
> news:
> > J'ai l'impression que tu veux numéroter tes enregistrement ?
> >
> > Tu peux le faire avec une requête SQL (non testée) :
> >
> > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > Critère<=m.Critère AND pk<=m.pk)
> > FROM MaTable m
> >
> > Une autre technique serait plutôt de "déduire" cette info côté client
(le
> > jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite
> > maintenir cette info sans cesse...
> >
> > --
> >
> > "Pierre-Yves" a écrit dans le message de
> > news:%
> > > Bonjour,
> > >
> > > Dans une requête update je souhaite faire progresser un champ en
faisant
> > +1
> > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > Y a t-il une autre solution que les curseurs?
> > >
> > > Merci pour vos réponses
> > >
> > >
> >
> >
>
>
Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à cause
n° ligne devis). Egalement je supopose que la numéroration est interne à
chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
Si c'est bien le cas, je verrais quelque chose comme (toujours non testé)
UPDATE C105
SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
WHERE [T105-1-code devis]Á05.[T105-1-code devis]
AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
FROM [C105-Lignes de devis] C105
En clair : le numéro d'une ligne de devis, est le nombre de lignes
appartenant au même devis, qui viennent avant ou au même niveau dans le
sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il n'y
pas de doublons sur ces champs).
Patrice
--
"Pierre-Yves" a écrit dans le message de
news:
> Voici la requête que je veux effectuer:
>
> UPDATE [C105-Lignes de devis]
> SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
> FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> C105.[T105-1-code devis]=@codeDevisD and
> C105.[T105-2-code niveau 1]=@niv1D and
> C105.[T105-3-code niveau 2]=@niv2D and
> C105.[T105-4-code niveau 3]=@niv3D and
> C105.[T105-5-N° ligne du devis]=@newLigneDevis
>
> je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
devis]
> à jour en même temps
> le compteur est cptLigne que je veux incrémenter de 1 à chaque
> enregistrement
>
> Merci de m'aiguiller
>
>
>
>
> "Patrice" a écrit dans le message de
> news:
> > J'ai l'impression que tu veux numéroter tes enregistrement ?
> >
> > Tu peux le faire avec une requête SQL (non testée) :
> >
> > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > Critère<=m.Critère AND pk<=m.pk)
> > FROM MaTable m
> >
> > Une autre technique serait plutôt de "déduire" cette info côté client
(le
> > jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite
> > maintenir cette info sans cesse...
> >
> > --
> >
> > "Pierre-Yves" a écrit dans le message de
> > news:%
> > > Bonjour,
> > >
> > > Dans une requête update je souhaite faire progresser un champ en
faisant
> > +1
> > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > Y a t-il une autre solution que les curseurs?
> > >
> > > Merci pour vos réponses
> > >
> > >
> >
> >
>
>
Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à cause
n° ligne devis). Egalement je supopose que la numéroration est interne à
chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
Si c'est bien le cas, je verrais quelque chose comme (toujours non testé)
UPDATE C105
SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
WHERE [T105-1-code devis]Á05.[T105-1-code devis]
AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
FROM [C105-Lignes de devis] C105
En clair : le numéro d'une ligne de devis, est le nombre de lignes
appartenant au même devis, qui viennent avant ou au même niveau dans le
sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il n'y
pas de doublons sur ces champs).
Patrice
--
"Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
news:ua7AVdcWEHA.644@tk2msftngp13.phx.gbl...
> Voici la requête que je veux effectuer:
>
> UPDATE [C105-Lignes de devis]
> SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
> FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> C105.[T105-1-code devis]=@codeDevisD and
> C105.[T105-2-code niveau 1]=@niv1D and
> C105.[T105-3-code niveau 2]=@niv2D and
> C105.[T105-4-code niveau 3]=@niv3D and
> C105.[T105-5-N° ligne du devis]=@newLigneDevis
>
> je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
devis]
> à jour en même temps
> le compteur est cptLigne que je veux incrémenter de 1 à chaque
> enregistrement
>
> Merci de m'aiguiller
>
>
>
>
> "Patrice" <nobody@nowhere.com> a écrit dans le message de
> news:OnIUoRcWEHA.1888@TK2MSFTNGP11.phx.gbl...
> > J'ai l'impression que tu veux numéroter tes enregistrement ?
> >
> > Tu peux le faire avec une requête SQL (non testée) :
> >
> > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > Critère<=m.Critère AND pk<=m.pk)
> > FROM MaTable m
> >
> > Une autre technique serait plutôt de "déduire" cette info côté client
(le
> > jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite
> > maintenir cette info sans cesse...
> >
> > --
> >
> > "Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
> > news:%231j21HcWEHA.3200@TK2MSFTNGP09.phx.gbl...
> > > Bonjour,
> > >
> > > Dans une requête update je souhaite faire progresser un champ en
faisant
> > +1
> > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > Y a t-il une autre solution que les curseurs?
> > >
> > > Merci pour vos réponses
> > >
> > >
> >
> >
>
>
Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à cause
n° ligne devis). Egalement je supopose que la numéroration est interne à
chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
Si c'est bien le cas, je verrais quelque chose comme (toujours non testé)
UPDATE C105
SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
WHERE [T105-1-code devis]Á05.[T105-1-code devis]
AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
FROM [C105-Lignes de devis] C105
En clair : le numéro d'une ligne de devis, est le nombre de lignes
appartenant au même devis, qui viennent avant ou au même niveau dans le
sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il n'y
pas de doublons sur ces champs).
Patrice
--
"Pierre-Yves" a écrit dans le message de
news:
> Voici la requête que je veux effectuer:
>
> UPDATE [C105-Lignes de devis]
> SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
> FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> C105.[T105-1-code devis]=@codeDevisD and
> C105.[T105-2-code niveau 1]=@niv1D and
> C105.[T105-3-code niveau 2]=@niv2D and
> C105.[T105-4-code niveau 3]=@niv3D and
> C105.[T105-5-N° ligne du devis]=@newLigneDevis
>
> je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
devis]
> à jour en même temps
> le compteur est cptLigne que je veux incrémenter de 1 à chaque
> enregistrement
>
> Merci de m'aiguiller
>
>
>
>
> "Patrice" a écrit dans le message de
> news:
> > J'ai l'impression que tu veux numéroter tes enregistrement ?
> >
> > Tu peux le faire avec une requête SQL (non testée) :
> >
> > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > Critère<=m.Critère AND pk<=m.pk)
> > FROM MaTable m
> >
> > Une autre technique serait plutôt de "déduire" cette info côté client
(le
> > jeu d'enregistrement côté client est "numéroté" de fait) ce qui évite
> > maintenir cette info sans cesse...
> >
> > --
> >
> > "Pierre-Yves" a écrit dans le message de
> > news:%
> > > Bonjour,
> > >
> > > Dans une requête update je souhaite faire progresser un champ en
faisant
> > +1
> > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > Y a t-il une autre solution que les curseurs?
> > >
> > > Merci pour vos réponses
> > >
> > >
> >
> >
>
>
ta requete semble repondre à ma problématique
Comment puis-je l'intégrer directement dans ma concaténation
Avec une sous-requête?
merci pour tes conseils
"Patrice" a écrit dans le message de
news:
> Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
lignes
> de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à
de
> n° ligne devis). Egalement je supopose que la numéroration est interne à
> chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
>
> Si c'est bien le cas, je verrais quelque chose comme (toujours non
:
>
> UPDATE C105
> SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
> WHERE [T105-1-code devis]Á05.[T105-1-code devis]
> AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
> AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
> AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
> AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
> FROM [C105-Lignes de devis] C105
>
> En clair : le numéro d'une ligne de devis, est le nombre de lignes
> appartenant au même devis, qui viennent avant ou au même niveau dans le
tri
> sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il n'y
a
> pas de doublons sur ces champs).
>
> Patrice
>
> --
>
> "Pierre-Yves" a écrit dans le message de
> news:
> > Voici la requête que je veux effectuer:
> >
> > UPDATE [C105-Lignes de devis]
> > SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
varchar)+'000'
> > FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> > WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> > C105.[T105-1-code devis]=@codeDevisD and
> > C105.[T105-2-code niveau 1]=@niv1D and
> > C105.[T105-3-code niveau 2]=@niv2D and
> > C105.[T105-4-code niveau 3]=@niv3D and
> > C105.[T105-5-N° ligne du devis]=@newLigneDevis
> >
> > je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
> devis]
> > à jour en même temps
> > le compteur est cptLigne que je veux incrémenter de 1 à chaque
> > enregistrement
> >
> > Merci de m'aiguiller
> >
> >
> >
> >
> > "Patrice" a écrit dans le message de
> > news:
> > > J'ai l'impression que tu veux numéroter tes enregistrement ?
> > >
> > > Tu peux le faire avec une requête SQL (non testée) :
> > >
> > > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > > Critère<=m.Critère AND pk<=m.pk)
> > > FROM MaTable m
> > >
> > > Une autre technique serait plutôt de "déduire" cette info côté
> (le
> > > jeu d'enregistrement côté client est "numéroté" de fait) ce qui
de
> > > maintenir cette info sans cesse...
> > >
> > > --
> > >
> > > "Pierre-Yves" a écrit dans le message de
> > > news:%
> > > > Bonjour,
> > > >
> > > > Dans une requête update je souhaite faire progresser un champ en
> faisant
> > > +1
> > > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > > Y a t-il une autre solution que les curseurs?
> > > >
> > > > Merci pour vos réponses
> > > >
> > > >
> > >
> > >
> >
> >
>
>
ta requete semble repondre à ma problématique
Comment puis-je l'intégrer directement dans ma concaténation
Avec une sous-requête?
merci pour tes conseils
"Patrice" <nobody@nowhere.com> a écrit dans le message de
news:OmL77IeWEHA.1652@TK2MSFTNGP09.phx.gbl...
> Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
lignes
> de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à
de
> n° ligne devis). Egalement je supopose que la numéroration est interne à
> chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
>
> Si c'est bien le cas, je verrais quelque chose comme (toujours non
:
>
> UPDATE C105
> SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
> WHERE [T105-1-code devis]Á05.[T105-1-code devis]
> AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
> AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
> AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
> AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
> FROM [C105-Lignes de devis] C105
>
> En clair : le numéro d'une ligne de devis, est le nombre de lignes
> appartenant au même devis, qui viennent avant ou au même niveau dans le
tri
> sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il n'y
a
> pas de doublons sur ces champs).
>
> Patrice
>
> --
>
> "Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
> news:ua7AVdcWEHA.644@tk2msftngp13.phx.gbl...
> > Voici la requête que je veux effectuer:
> >
> > UPDATE [C105-Lignes de devis]
> > SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
varchar)+'000'
> > FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> > WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> > C105.[T105-1-code devis]=@codeDevisD and
> > C105.[T105-2-code niveau 1]=@niv1D and
> > C105.[T105-3-code niveau 2]=@niv2D and
> > C105.[T105-4-code niveau 3]=@niv3D and
> > C105.[T105-5-N° ligne du devis]=@newLigneDevis
> >
> > je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
> devis]
> > à jour en même temps
> > le compteur est cptLigne que je veux incrémenter de 1 à chaque
> > enregistrement
> >
> > Merci de m'aiguiller
> >
> >
> >
> >
> > "Patrice" <nobody@nowhere.com> a écrit dans le message de
> > news:OnIUoRcWEHA.1888@TK2MSFTNGP11.phx.gbl...
> > > J'ai l'impression que tu veux numéroter tes enregistrement ?
> > >
> > > Tu peux le faire avec une requête SQL (non testée) :
> > >
> > > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > > Critère<=m.Critère AND pk<=m.pk)
> > > FROM MaTable m
> > >
> > > Une autre technique serait plutôt de "déduire" cette info côté
> (le
> > > jeu d'enregistrement côté client est "numéroté" de fait) ce qui
de
> > > maintenir cette info sans cesse...
> > >
> > > --
> > >
> > > "Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
> > > news:%231j21HcWEHA.3200@TK2MSFTNGP09.phx.gbl...
> > > > Bonjour,
> > > >
> > > > Dans une requête update je souhaite faire progresser un champ en
> faisant
> > > +1
> > > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > > Y a t-il une autre solution que les curseurs?
> > > >
> > > > Merci pour vos réponses
> > > >
> > > >
> > >
> > >
> >
> >
>
>
ta requete semble repondre à ma problématique
Comment puis-je l'intégrer directement dans ma concaténation
Avec une sous-requête?
merci pour tes conseils
"Patrice" a écrit dans le message de
news:
> Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
lignes
> de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à
de
> n° ligne devis). Egalement je supopose que la numéroration est interne à
> chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
>
> Si c'est bien le cas, je verrais quelque chose comme (toujours non
:
>
> UPDATE C105
> SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
> WHERE [T105-1-code devis]Á05.[T105-1-code devis]
> AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
> AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
> AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
> AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
> FROM [C105-Lignes de devis] C105
>
> En clair : le numéro d'une ligne de devis, est le nombre de lignes
> appartenant au même devis, qui viennent avant ou au même niveau dans le
tri
> sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il n'y
a
> pas de doublons sur ces champs).
>
> Patrice
>
> --
>
> "Pierre-Yves" a écrit dans le message de
> news:
> > Voici la requête que je veux effectuer:
> >
> > UPDATE [C105-Lignes de devis]
> > SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
varchar)+'000'
> > FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> > WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> > C105.[T105-1-code devis]=@codeDevisD and
> > C105.[T105-2-code niveau 1]=@niv1D and
> > C105.[T105-3-code niveau 2]=@niv2D and
> > C105.[T105-4-code niveau 3]=@niv3D and
> > C105.[T105-5-N° ligne du devis]=@newLigneDevis
> >
> > je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
> devis]
> > à jour en même temps
> > le compteur est cptLigne que je veux incrémenter de 1 à chaque
> > enregistrement
> >
> > Merci de m'aiguiller
> >
> >
> >
> >
> > "Patrice" a écrit dans le message de
> > news:
> > > J'ai l'impression que tu veux numéroter tes enregistrement ?
> > >
> > > Tu peux le faire avec une requête SQL (non testée) :
> > >
> > > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > > Critère<=m.Critère AND pk<=m.pk)
> > > FROM MaTable m
> > >
> > > Une autre technique serait plutôt de "déduire" cette info côté
> (le
> > > jeu d'enregistrement côté client est "numéroté" de fait) ce qui
de
> > > maintenir cette info sans cesse...
> > >
> > > --
> > >
> > > "Pierre-Yves" a écrit dans le message de
> > > news:%
> > > > Bonjour,
> > > >
> > > > Dans une requête update je souhaite faire progresser un champ en
> faisant
> > > +1
> > > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > > Y a t-il une autre solution que les curseurs?
> > > >
> > > > Merci pour vos réponses
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Oui, ce qui donnerait quelque chose du style :
UPDATE C105
SET Repère=[T105-1-code devis]+cast((SELECT COUNT(*) FROM [C105-Lignes
devis]
WHERE [T105-1-code devis]Á05.[T105-1-code devis]
AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3]) AS
VARCHAR)+'000'
FROM [C105-Lignes de devis] C105
Sans alimenter cptLigne ce qui obligerait à effectuer la sous-requête deux
fois.
Ou si tu a parfois de cptLigne en tant que tel j'alimenterais cptligne et
"Repère" serait calculé pour la présentation.
Je pensais aussi (je crois l'avoir vu ici ?) également à passer par une
variable style :
SET @compteur=0
UPDATE MaTable SET @Compteur=@Compteur+1,cptLigne=@compteur ce qui semble
fonctionner.
Mais le ORDER BY n'est pas présent sur l'UPDATE ce qui empêche de
l'ordre d'exécution.
Patrice
--
"Pierre-Yves" a écrit dans le message de
news:uJ$
> ta requete semble repondre à ma problématique
> Comment puis-je l'intégrer directement dans ma concaténation
> Avec une sous-requête?
>
> merci pour tes conseils
>
> "Patrice" a écrit dans le message de
> news:
> > Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
> lignes
> > de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à
cause
> de
> > n° ligne devis). Egalement je supopose que la numéroration est interne
> > chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
> >
> > Si c'est bien le cas, je verrais quelque chose comme (toujours non
testé)
> :
> >
> > UPDATE C105
> > SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
> > WHERE [T105-1-code devis]Á05.[T105-1-code devis]
> > AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
> > AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
> > AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
> > AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
> > FROM [C105-Lignes de devis] C105
> >
> > En clair : le numéro d'une ligne de devis, est le nombre de lignes
> > appartenant au même devis, qui viennent avant ou au même niveau dans
> tri
> > sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il
> a
> > pas de doublons sur ces champs).
> >
> > Patrice
> >
> > --
> >
> > "Pierre-Yves" a écrit dans le message de
> > news:
> > > Voici la requête que je veux effectuer:
> > >
> > > UPDATE [C105-Lignes de devis]
> > > SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
> varchar)+'000'
> > > FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> > > WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> > > C105.[T105-1-code devis]=@codeDevisD and
> > > C105.[T105-2-code niveau 1]=@niv1D and
> > > C105.[T105-3-code niveau 2]=@niv2D and
> > > C105.[T105-4-code niveau 3]=@niv3D and
> > > C105.[T105-5-N° ligne du devis]=@newLigneDevis
> > >
> > > je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
> > devis]
> > > à jour en même temps
> > > le compteur est cptLigne que je veux incrémenter de 1 à chaque
> > > enregistrement
> > >
> > > Merci de m'aiguiller
> > >
> > >
> > >
> > >
> > > "Patrice" a écrit dans le message de
> > > news:
> > > > J'ai l'impression que tu veux numéroter tes enregistrement ?
> > > >
> > > > Tu peux le faire avec une requête SQL (non testée) :
> > > >
> > > > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > > > Critère<=m.Critère AND pk<=m.pk)
> > > > FROM MaTable m
> > > >
> > > > Une autre technique serait plutôt de "déduire" cette info côté
client
> > (le
> > > > jeu d'enregistrement côté client est "numéroté" de fait) ce qui
évite
> de
> > > > maintenir cette info sans cesse...
> > > >
> > > > --
> > > >
> > > > "Pierre-Yves" a écrit dans le message de
> > > > news:%
> > > > > Bonjour,
> > > > >
> > > > > Dans une requête update je souhaite faire progresser un champ en
> > faisant
> > > > +1
> > > > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > > > Y a t-il une autre solution que les curseurs?
> > > > >
> > > > > Merci pour vos réponses
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Oui, ce qui donnerait quelque chose du style :
UPDATE C105
SET Repère=[T105-1-code devis]+cast((SELECT COUNT(*) FROM [C105-Lignes
devis]
WHERE [T105-1-code devis]Á05.[T105-1-code devis]
AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3]) AS
VARCHAR)+'000'
FROM [C105-Lignes de devis] C105
Sans alimenter cptLigne ce qui obligerait à effectuer la sous-requête deux
fois.
Ou si tu a parfois de cptLigne en tant que tel j'alimenterais cptligne et
"Repère" serait calculé pour la présentation.
Je pensais aussi (je crois l'avoir vu ici ?) également à passer par une
variable style :
SET @compteur=0
UPDATE MaTable SET @Compteur=@Compteur+1,cptLigne=@compteur ce qui semble
fonctionner.
Mais le ORDER BY n'est pas présent sur l'UPDATE ce qui empêche de
l'ordre d'exécution.
Patrice
--
"Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
news:uJ$uImeWEHA.2972@TK2MSFTNGP12.phx.gbl...
> ta requete semble repondre à ma problématique
> Comment puis-je l'intégrer directement dans ma concaténation
> Avec une sous-requête?
>
> merci pour tes conseils
>
> "Patrice" <nobody@nowhere.com> a écrit dans le message de
> news:OmL77IeWEHA.1652@TK2MSFTNGP09.phx.gbl...
> > Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
> lignes
> > de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à
cause
> de
> > n° ligne devis). Egalement je supopose que la numéroration est interne
> > chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
> >
> > Si c'est bien le cas, je verrais quelque chose comme (toujours non
testé)
> :
> >
> > UPDATE C105
> > SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
> > WHERE [T105-1-code devis]Á05.[T105-1-code devis]
> > AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
> > AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
> > AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
> > AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
> > FROM [C105-Lignes de devis] C105
> >
> > En clair : le numéro d'une ligne de devis, est le nombre de lignes
> > appartenant au même devis, qui viennent avant ou au même niveau dans
> tri
> > sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il
> a
> > pas de doublons sur ces champs).
> >
> > Patrice
> >
> > --
> >
> > "Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
> > news:ua7AVdcWEHA.644@tk2msftngp13.phx.gbl...
> > > Voici la requête que je veux effectuer:
> > >
> > > UPDATE [C105-Lignes de devis]
> > > SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
> varchar)+'000'
> > > FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> > > WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> > > C105.[T105-1-code devis]=@codeDevisD and
> > > C105.[T105-2-code niveau 1]=@niv1D and
> > > C105.[T105-3-code niveau 2]=@niv2D and
> > > C105.[T105-4-code niveau 3]=@niv3D and
> > > C105.[T105-5-N° ligne du devis]=@newLigneDevis
> > >
> > > je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
> > devis]
> > > à jour en même temps
> > > le compteur est cptLigne que je veux incrémenter de 1 à chaque
> > > enregistrement
> > >
> > > Merci de m'aiguiller
> > >
> > >
> > >
> > >
> > > "Patrice" <nobody@nowhere.com> a écrit dans le message de
> > > news:OnIUoRcWEHA.1888@TK2MSFTNGP11.phx.gbl...
> > > > J'ai l'impression que tu veux numéroter tes enregistrement ?
> > > >
> > > > Tu peux le faire avec une requête SQL (non testée) :
> > > >
> > > > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > > > Critère<=m.Critère AND pk<=m.pk)
> > > > FROM MaTable m
> > > >
> > > > Une autre technique serait plutôt de "déduire" cette info côté
client
> > (le
> > > > jeu d'enregistrement côté client est "numéroté" de fait) ce qui
évite
> de
> > > > maintenir cette info sans cesse...
> > > >
> > > > --
> > > >
> > > > "Pierre-Yves" <py_leteste@hotmail.com> a écrit dans le message de
> > > > news:%231j21HcWEHA.3200@TK2MSFTNGP09.phx.gbl...
> > > > > Bonjour,
> > > > >
> > > > > Dans une requête update je souhaite faire progresser un champ en
> > faisant
> > > > +1
> > > > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > > > Y a t-il une autre solution que les curseurs?
> > > > >
> > > > > Merci pour vos réponses
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
Oui, ce qui donnerait quelque chose du style :
UPDATE C105
SET Repère=[T105-1-code devis]+cast((SELECT COUNT(*) FROM [C105-Lignes
devis]
WHERE [T105-1-code devis]Á05.[T105-1-code devis]
AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3]) AS
VARCHAR)+'000'
FROM [C105-Lignes de devis] C105
Sans alimenter cptLigne ce qui obligerait à effectuer la sous-requête deux
fois.
Ou si tu a parfois de cptLigne en tant que tel j'alimenterais cptligne et
"Repère" serait calculé pour la présentation.
Je pensais aussi (je crois l'avoir vu ici ?) également à passer par une
variable style :
SET @compteur=0
UPDATE MaTable SET @Compteur=@Compteur+1,cptLigne=@compteur ce qui semble
fonctionner.
Mais le ORDER BY n'est pas présent sur l'UPDATE ce qui empêche de
l'ordre d'exécution.
Patrice
--
"Pierre-Yves" a écrit dans le message de
news:uJ$
> ta requete semble repondre à ma problématique
> Comment puis-je l'intégrer directement dans ma concaténation
> Avec une sous-requête?
>
> merci pour tes conseils
>
> "Patrice" a écrit dans le message de
> news:
> > Pour être sûr, peux tu confirmer que tu souhaites bien numéroter les
> lignes
> > de 1 à n pour chaque devis (et non pas globalement, j'ai un doute à
cause
> de
> > n° ligne devis). Egalement je supopose que la numéroration est interne
> > chaque devis (eet non pas à chaque devis, puis niveau 1 etc...)
> >
> > Si c'est bien le cas, je verrais quelque chose comme (toujours non
testé)
> :
> >
> > UPDATE C105
> > SET cptLigne=(SELECT COUNT(*) FROM [C105-Lignes de devis]
> > WHERE [T105-1-code devis]Á05.[T105-1-code devis]
> > AND [T105-2-code niveau 1]<Á05.[T105-2-code niveau 1]
> > AND [T105-3-code niveau 2]<Á05.[T105-3-code niveau 2]
> > AND [T105-4-code niveau 3]<Á05.[T105-4-code niveau 3]
> > AND [T105-5-N° ligne du devis]<Á05.[T105-4-code niveau 3])
> > FROM [C105-Lignes de devis] C105
> >
> > En clair : le numéro d'une ligne de devis, est le nombre de lignes
> > appartenant au même devis, qui viennent avant ou au même niveau dans
> tri
> > sur code niveau 1, 2,3, ligne du devis (cela suppose également qu'il
> a
> > pas de doublons sur ces champs).
> >
> > Patrice
> >
> > --
> >
> > "Pierre-Yves" a écrit dans le message de
> > news:
> > > Voici la requête que je veux effectuer:
> > >
> > > UPDATE [C105-Lignes de devis]
> > > SET [repere1]= [T105-1-code devis]+cast(C101.cptLigne+1 as
> varchar)+'000'
> > > FROM [C105-Lignes de devis] C105, [C101-Devis en tête] C101
> > > WHERE C101.[T101-1-Code devis]Á05.[T105-1-Code devis] and
> > > C105.[T105-1-code devis]=@codeDevisD and
> > > C105.[T105-2-code niveau 1]=@niv1D and
> > > C105.[T105-3-code niveau 2]=@niv2D and
> > > C105.[T105-4-code niveau 3]=@niv3D and
> > > C105.[T105-5-N° ligne du devis]=@newLigneDevis
> > >
> > > je veux mettre plusieurs enregistrements de ma table [C105-Lignes de
> > devis]
> > > à jour en même temps
> > > le compteur est cptLigne que je veux incrémenter de 1 à chaque
> > > enregistrement
> > >
> > > Merci de m'aiguiller
> > >
> > >
> > >
> > >
> > > "Patrice" a écrit dans le message de
> > > news:
> > > > J'ai l'impression que tu veux numéroter tes enregistrement ?
> > > >
> > > > Tu peux le faire avec une requête SQL (non testée) :
> > > >
> > > > UPDATE MaTable SET Position=(SELECT COUNT(*) FROM MaTable WHERE
> > > > Critère<=m.Critère AND pk<=m.pk)
> > > > FROM MaTable m
> > > >
> > > > Une autre technique serait plutôt de "déduire" cette info côté
client
> > (le
> > > > jeu d'enregistrement côté client est "numéroté" de fait) ce qui
évite
> de
> > > > maintenir cette info sans cesse...
> > > >
> > > > --
> > > >
> > > > "Pierre-Yves" a écrit dans le message de
> > > > news:%
> > > > > Bonjour,
> > > > >
> > > > > Dans une requête update je souhaite faire progresser un champ en
> > faisant
> > > > +1
> > > > > Je ne veux pas utiliser une variable compteur (@@identity)
> > > > > Y a t-il une autre solution que les curseurs?
> > > > >
> > > > > Merci pour vos réponses
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>