OVH Cloud OVH Cloud

SQL, pb de conversion !

12 réponses
Avatar
Saulot
Bonjour,
j'ai un trigger (sur le delete) qui récupère les champs de ma table pour
construire un chaine de caractères de type INSERT.
En bref, en supprimant, j'insere dans une table un chaine de caractères
representant l'insertion de l'enregistrement. (Un jeu de sauvegarde en qq
sorte)

Dans la table ou je supprime, j'ai une foule de champs de type Varchar(50£)
et un champs de type Int
Dans mon Trigger je fais tout bettement ceci :

Declare @Request Varchar(5000)
Select @Request = 'Insert Into MaTable Values (''' + Champs1 + ''',''' +
........ + ''',' + MonInt

A l'execution il me sort l'erreur suivante :
'Syntaxe incorrecte lors de la conversion de la valeur varchar 'Insert Into
MaTable Values ('Champs1',.......',' vers une colonne de type Int

En fait, il semble s'arreter avant l'entier et tenter une addition !!!

Je ne comprend absolument pas pourquoi !

Si vous pouviez m'aider.
Merci d'avance.

*********************
CREATE TRIGGER TPropositionsDelete ON dbo.TPropositions
FOR Delete
AS

Declare @cProposition Varchar(50)
Declare @cQuestion Varchar(50)
Declare @cSociete Varchar(50)
Declare @cAuteur Varchar(50)
Declare @OrdreProposition Int
Declare @DateCreation datetime
Declare @DateLastModif datetime
Declare @Archiver Bit
Declare @PropositionValide Bit
Declare @NbrPoint Float
Declare @IISACreate Bit
Declare @cPropositionMaitre Varchar(50)
Declare @DateCreate DateTime
Declare @DateEdit DateTime

Declare @Request Varchar(5000)

Select @cProposition = (Select cProposition From deleted)
Select @cQuestion = (Select cQuestion From deleted)
Select @cSociete = (Select cSociete From deleted)
Select @cAuteur = (Select cAuteur From deleted)
Select @OrdreProposition = (Select ISNULL(OrdreProposition,Null) From
deleted)
Select @DateCreation = (Select DateCreation From deleted)
Select @DateLastModif = (Select DateLastModif From deleted)
Select @Archiver = (Select Archiver From deleted)
Select @PropositionValide = (Select PropositionValide From deleted)
Select @NbrPoint = (Select NbrPoint From deleted)
Select @IISACreate = (Select IISACreate From deleted)
Select @cPropositionMaitre = (Select ISNULL(cPropositionMaitre,'Null') From
deleted)
Select @DateCreate = (Select DateCreate From deleted)
Select @DateEdit = (Select DateEdit From deleted)
print 'Insert Into TPropositions VALUES (''' + @cProposition + ''',''' +
@cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''',' +
@OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) + ''',''' +
CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
@PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
@cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) + ''','''
+ CONVERT(VarChar(20),@DateEdit) +''')'
Select @Request = 'Insert Into TPropositions VALUES (''' + @cProposition +
''',''' + @cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''',' +
@OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) + ''',''' +
CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
@PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
@cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) + ''','''
+ CONVERT(VarChar(20),@DateEdit) +''')'

If exists(SELECT * FROM deleted WHERE cProposition = @cProposition)
Insert Into TSuppressions Values
('TPropositions',@Request,current_timestamp)

10 réponses

1 2
Avatar
Saulot
En fait ca fonctionne qd je fais un CONVERT sur tous les types non VarChar !
Merci de ton aide.

CEPENDANT.... Leur convert 'IMPLICITE' dans l'aide, il peuvent se le carer
ou jpense ! C bien du microsoft ca !

Merci de ton aide.

Erreur 403 : opérateur incorrect pour le type de données. L'opérateur est
add et le type Int
"yan" a écrit dans le message de news:
c60nph$d50$
bonjour,

forcément, si tu fais un + avec un int, il va pas faire une concaténation
mais une addition

je pense qu'il faut convertir les int et bit en varchar comme tu a fait


avec
tes dates




"Saulot" a écrit dans le message de
news:4083daff$0$21177$
> Bonjour,
> j'ai un trigger (sur le delete) qui récupère les champs de ma table pour
> construire un chaine de caractères de type INSERT.
> En bref, en supprimant, j'insere dans une table un chaine de caractères
> representant l'insertion de l'enregistrement. (Un jeu de sauvegarde en


qq
> sorte)
>
> Dans la table ou je supprime, j'ai une foule de champs de type
Varchar(50£)
> et un champs de type Int
> Dans mon Trigger je fais tout bettement ceci :
>
> Declare @Request Varchar(5000)
> Select @Request = 'Insert Into MaTable Values (''' + Champs1 + ''',''' +
> ........ + ''',' + MonInt
>
> A l'execution il me sort l'erreur suivante :
> 'Syntaxe incorrecte lors de la conversion de la valeur varchar 'Insert
Into
> MaTable Values ('Champs1',.......',' vers une colonne de type Int
>
> En fait, il semble s'arreter avant l'entier et tenter une addition !!!
>
> Je ne comprend absolument pas pourquoi !
>
> Si vous pouviez m'aider.
> Merci d'avance.
>
> *********************
> CREATE TRIGGER TPropositionsDelete ON dbo.TPropositions
> FOR Delete
> AS
>
> Declare @cProposition Varchar(50)
> Declare @cQuestion Varchar(50)
> Declare @cSociete Varchar(50)
> Declare @cAuteur Varchar(50)
> Declare @OrdreProposition Int
> Declare @DateCreation datetime
> Declare @DateLastModif datetime
> Declare @Archiver Bit
> Declare @PropositionValide Bit
> Declare @NbrPoint Float
> Declare @IISACreate Bit
> Declare @cPropositionMaitre Varchar(50)
> Declare @DateCreate DateTime
> Declare @DateEdit DateTime
>
> Declare @Request Varchar(5000)
>
> Select @cProposition = (Select cProposition From deleted)
> Select @cQuestion = (Select cQuestion From deleted)
> Select @cSociete = (Select cSociete From deleted)
> Select @cAuteur = (Select cAuteur From deleted)
> Select @OrdreProposition = (Select ISNULL(OrdreProposition,Null) From
> deleted)
> Select @DateCreation = (Select DateCreation From deleted)
> Select @DateLastModif = (Select DateLastModif From deleted)
> Select @Archiver = (Select Archiver From deleted)
> Select @PropositionValide = (Select PropositionValide From deleted)
> Select @NbrPoint = (Select NbrPoint From deleted)
> Select @IISACreate = (Select IISACreate From deleted)
> Select @cPropositionMaitre = (Select ISNULL(cPropositionMaitre,'Null')
From
> deleted)
> Select @DateCreate = (Select DateCreate From deleted)
> Select @DateEdit = (Select DateEdit From deleted)
> print 'Insert Into TPropositions VALUES (''' + @cProposition + ''','''


+
> @cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''',' +
> @OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) +


''','''
+
> CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
> @PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
> @cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) +
''','''
> + CONVERT(VarChar(20),@DateEdit) +''')'
> Select @Request = 'Insert Into TPropositions VALUES (''' + @cProposition


+
> ''',''' + @cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''','


+
> @OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) +


''','''
+
> CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
> @PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
> @cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) +
''','''
> + CONVERT(VarChar(20),@DateEdit) +''')'
>
> If exists(SELECT * FROM deleted WHERE cProposition = @cProposition)
> Insert Into TSuppressions Values
> ('TPropositions',@Request,current_timestamp)
>
>




Avatar
yan
bonjour,

forcément, si tu fais un + avec un int, il va pas faire une concaténation
mais une addition

je pense qu'il faut convertir les int et bit en varchar comme tu a fait avec
tes dates




"Saulot" a écrit dans le message de
news:4083daff$0$21177$
Bonjour,
j'ai un trigger (sur le delete) qui récupère les champs de ma table pour
construire un chaine de caractères de type INSERT.
En bref, en supprimant, j'insere dans une table un chaine de caractères
representant l'insertion de l'enregistrement. (Un jeu de sauvegarde en qq
sorte)

Dans la table ou je supprime, j'ai une foule de champs de type


Varchar(50£)
et un champs de type Int
Dans mon Trigger je fais tout bettement ceci :

Declare @Request Varchar(5000)
Select @Request = 'Insert Into MaTable Values (''' + Champs1 + ''',''' +
........ + ''',' + MonInt

A l'execution il me sort l'erreur suivante :
'Syntaxe incorrecte lors de la conversion de la valeur varchar 'Insert


Into
MaTable Values ('Champs1',.......',' vers une colonne de type Int

En fait, il semble s'arreter avant l'entier et tenter une addition !!!

Je ne comprend absolument pas pourquoi !

Si vous pouviez m'aider.
Merci d'avance.

*********************
CREATE TRIGGER TPropositionsDelete ON dbo.TPropositions
FOR Delete
AS

Declare @cProposition Varchar(50)
Declare @cQuestion Varchar(50)
Declare @cSociete Varchar(50)
Declare @cAuteur Varchar(50)
Declare @OrdreProposition Int
Declare @DateCreation datetime
Declare @DateLastModif datetime
Declare @Archiver Bit
Declare @PropositionValide Bit
Declare @NbrPoint Float
Declare @IISACreate Bit
Declare @cPropositionMaitre Varchar(50)
Declare @DateCreate DateTime
Declare @DateEdit DateTime

Declare @Request Varchar(5000)

Select @cProposition = (Select cProposition From deleted)
Select @cQuestion = (Select cQuestion From deleted)
Select @cSociete = (Select cSociete From deleted)
Select @cAuteur = (Select cAuteur From deleted)
Select @OrdreProposition = (Select ISNULL(OrdreProposition,Null) From
deleted)
Select @DateCreation = (Select DateCreation From deleted)
Select @DateLastModif = (Select DateLastModif From deleted)
Select @Archiver = (Select Archiver From deleted)
Select @PropositionValide = (Select PropositionValide From deleted)
Select @NbrPoint = (Select NbrPoint From deleted)
Select @IISACreate = (Select IISACreate From deleted)
Select @cPropositionMaitre = (Select ISNULL(cPropositionMaitre,'Null')


From
deleted)
Select @DateCreate = (Select DateCreate From deleted)
Select @DateEdit = (Select DateEdit From deleted)
print 'Insert Into TPropositions VALUES (''' + @cProposition + ''',''' +
@cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''',' +
@OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) + ''','''


+
CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
@PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
@cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) +


''','''
+ CONVERT(VarChar(20),@DateEdit) +''')'
Select @Request = 'Insert Into TPropositions VALUES (''' + @cProposition +
''',''' + @cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''',' +
@OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) + ''','''


+
CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
@PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
@cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) +


''','''
+ CONVERT(VarChar(20),@DateEdit) +''')'

If exists(SELECT * FROM deleted WHERE cProposition = @cProposition)
Insert Into TSuppressions Values
('TPropositions',@Request,current_timestamp)




Avatar
yan
de rien

je pense que le convert "implicite" c quand on fait "Select @Request MonInt" sans concaténation



"Saulot" a écrit dans le message de
news:4083e42c$0$21154$
En fait ca fonctionne qd je fais un CONVERT sur tous les types non VarChar


!
Merci de ton aide.

CEPENDANT.... Leur convert 'IMPLICITE' dans l'aide, il peuvent se le carer
ou jpense ! C bien du microsoft ca !

Merci de ton aide.

Erreur 403 : opérateur incorrect pour le type de données. L'opérateur est
add et le type Int
"yan" a écrit dans le message de news:
c60nph$d50$
> bonjour,
>
> forcément, si tu fais un + avec un int, il va pas faire une


concaténation
> mais une addition
>
> je pense qu'il faut convertir les int et bit en varchar comme tu a fait
avec
> tes dates
>
>
>
>
> "Saulot" a écrit dans le message de
> news:4083daff$0$21177$
> > Bonjour,
> > j'ai un trigger (sur le delete) qui récupère les champs de ma table


pour
> > construire un chaine de caractères de type INSERT.
> > En bref, en supprimant, j'insere dans une table un chaine de


caractères
> > representant l'insertion de l'enregistrement. (Un jeu de sauvegarde en
qq
> > sorte)
> >
> > Dans la table ou je supprime, j'ai une foule de champs de type
> Varchar(50£)
> > et un champs de type Int
> > Dans mon Trigger je fais tout bettement ceci :
> >
> > Declare @Request Varchar(5000)
> > Select @Request = 'Insert Into MaTable Values (''' + Champs1 + ''','''


+
> > ........ + ''',' + MonInt
> >
> > A l'execution il me sort l'erreur suivante :
> > 'Syntaxe incorrecte lors de la conversion de la valeur varchar 'Insert
> Into
> > MaTable Values ('Champs1',.......',' vers une colonne de type Int
> >
> > En fait, il semble s'arreter avant l'entier et tenter une addition !!!
> >
> > Je ne comprend absolument pas pourquoi !
> >
> > Si vous pouviez m'aider.
> > Merci d'avance.
> >
> > *********************
> > CREATE TRIGGER TPropositionsDelete ON dbo.TPropositions
> > FOR Delete
> > AS
> >
> > Declare @cProposition Varchar(50)
> > Declare @cQuestion Varchar(50)
> > Declare @cSociete Varchar(50)
> > Declare @cAuteur Varchar(50)
> > Declare @OrdreProposition Int
> > Declare @DateCreation datetime
> > Declare @DateLastModif datetime
> > Declare @Archiver Bit
> > Declare @PropositionValide Bit
> > Declare @NbrPoint Float
> > Declare @IISACreate Bit
> > Declare @cPropositionMaitre Varchar(50)
> > Declare @DateCreate DateTime
> > Declare @DateEdit DateTime
> >
> > Declare @Request Varchar(5000)
> >
> > Select @cProposition = (Select cProposition From deleted)
> > Select @cQuestion = (Select cQuestion From deleted)
> > Select @cSociete = (Select cSociete From deleted)
> > Select @cAuteur = (Select cAuteur From deleted)
> > Select @OrdreProposition = (Select ISNULL(OrdreProposition,Null) From
> > deleted)
> > Select @DateCreation = (Select DateCreation From deleted)
> > Select @DateLastModif = (Select DateLastModif From deleted)
> > Select @Archiver = (Select Archiver From deleted)
> > Select @PropositionValide = (Select PropositionValide From deleted)
> > Select @NbrPoint = (Select NbrPoint From deleted)
> > Select @IISACreate = (Select IISACreate From deleted)
> > Select @cPropositionMaitre = (Select ISNULL(cPropositionMaitre,'Null')
> From
> > deleted)
> > Select @DateCreate = (Select DateCreate From deleted)
> > Select @DateEdit = (Select DateEdit From deleted)
> > print 'Insert Into TPropositions VALUES (''' + @cProposition +


''','''
+
> > @cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''',' +
> > @OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) +
''','''
> +
> > CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
> > @PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
> > @cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) +
> ''','''
> > + CONVERT(VarChar(20),@DateEdit) +''')'
> > Select @Request = 'Insert Into TPropositions VALUES (''' +


@cProposition
+
> > ''',''' + @cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur +


''','
+
> > @OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) +
''','''
> +
> > CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
> > @PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
> > @cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) +
> ''','''
> > + CONVERT(VarChar(20),@DateEdit) +''')'
> >
> > If exists(SELECT * FROM deleted WHERE cProposition = @cProposition)
> > Insert Into TSuppressions Values
> > ('TPropositions',@Request,current_timestamp)
> >
> >
>
>




Avatar
Fred BROUARD
Salut,

je n'ai jamais vu pire écriture de trigger, donc, je t'offre un cours en
ligne...

1) Un delete peut porter sur de multiples lignes ! et non pas une seule
comme tu le sippose dans ton code.
Exemple, si ta table comporte 33 852 lignes, alors l'ordre :
DELETE FROM MaTable => 33 852 lignes effacées.
Dans le trigger, a table DELETED comportera donc 33 852 lignes et non
pas une comme tu le suppose !
Or le code de ton trigger ne traitera que la première ligne !!!

2) La ligne :
If exists(SELECT * FROM deleted WHERE cProposition = @cProposition)
est toujours vrai, puisque tu choppe @cProposition préalablement dans la
ligne :
Select @cProposition = (Select cProposition From deleted)

3) on ne fait pas :
Select @MaVariable = (Select UneColonne From deleted)
mais plus dircectement :
Select @MaVariable = UneColonne From deleted

4) on peut faire plusieurs affectation avec un seul SELECT :

donc tout ceci :

Select @cProposition = (Select cProposition From deleted)
Select @cQuestion = (Select cQuestion From deleted)
Select @cSociete = (Select cSociete From deleted)
Select @cAuteur = (Select cAuteur From deleted)
Select @OrdreProposition = (Select ISNULL(OrdreProposition,Null) From
deleted)
Select @DateCreation = (Select DateCreation From deleted)
Select @DateLastModif = (Select DateLastModif From deleted)
Select @Archiver = (Select Archiver From deleted)
Select @PropositionValide = (Select PropositionValide From deleted)
Select @NbrPoint = (Select NbrPoint From deleted)
Select @IISACreate = (Select IISACreate From deleted)
Select @cPropositionMaitre = (Select ISNULL(cPropositionMaitre,'Null') From
deleted)
Select @DateCreate = (Select DateCreate From deleted)
Select @DateEdit = (Select DateEdit From deleted)

Se résume à :

SELECT @cProposition = cProposition,
@cQuestion = cQuestion,
@cSociete = cSociete,
@cAuteur = cAuteur,
@OrdreProposition = ISNULL(OrdreProposition,Null)
@DateCreation = DateCreation,
@DateLastModif = DateLastModif,
@Archiver = Archiver,
@PropositionValide = PropositionValide,
@NbrPoint = NbrPoint,
@IISACreate = IISACreate,
@cPropositionMaitre = ISNULL(cPropositionMaitre,'Null')
@DateCreate = DateCreate,
@DateEdit = DateEdit
FROM DELETED

5) j'ai l'impression que tu n'a pas compris à quoi sert le ISNULL. EN
effet dans ton cas il me semble ne servir à rien !!!
En effet si la colonne en arguement 1 est NULL, alors elle est remplacée
par le second arguement. Comme dans ton cas tu lui donne la valeur NULL,
voici ce qui se passe :
(Select ISNULL(OrdreProposition,Null)
Si OrdreProposition n'est pas NULL tu obtiendra la valeur de
OrdreProposition
Si OrdreProposition est NULL tu obtiendra NULL !
Donc fonction qui ne sert strictement à rien, mieux vaut laisser
l'élément seul

6) pour faire une insertion dans une table, même 3 000 lignes à insérer
d'un coup, on peut faire une requête imbriqué INSERT/SELECT
La syntaxe est :
INSERT INTO MaTable [ (listeColonnes) ]
SELECT (Colonnes)
FROM ...
[WHERE ...]
...

Dans ton cas :

INSERT INTO TPropositions
SELECT cProposition,
cQuestion,
cSociete,
cAuteur,
OrdreProposition,
DateCreation,
DateLastModif,
Archiver,
PropositionValide,
NbrPoint,
IISACreate,
cPropositionMaitre,
DateCreate,
DateEdit
FROM DELETED

Suffit !!!

CONCLUSION :

je ne saurait trop te conseiller de prendre quelques cours de formations
sur SQL Server, ou tout au moins, prendre quelques bouquins ou site pour
parfaire ta culture sur SQL Server et le langage SQL.

Sache que mon site comme mon bouquin, peuvent t'y aider !!!

A +


--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************

Saulot a écrit:
Bonjour,
j'ai un trigger (sur le delete) qui récupère les champs de ma table pour
construire un chaine de caractères de type INSERT.
En bref, en supprimant, j'insere dans une table un chaine de caractères
representant l'insertion de l'enregistrement. (Un jeu de sauvegarde en qq
sorte)

Dans la table ou je supprime, j'ai une foule de champs de type Varchar(50£)
et un champs de type Int
Dans mon Trigger je fais tout bettement ceci :

Declare @Request Varchar(5000)
Select @Request = 'Insert Into MaTable Values (''' + Champs1 + ''',''' +
........ + ''',' + MonInt

A l'execution il me sort l'erreur suivante :
'Syntaxe incorrecte lors de la conversion de la valeur varchar 'Insert Into
MaTable Values ('Champs1',.......',' vers une colonne de type Int

En fait, il semble s'arreter avant l'entier et tenter une addition !!!

Je ne comprend absolument pas pourquoi !

Si vous pouviez m'aider.
Merci d'avance.

*********************
CREATE TRIGGER TPropositionsDelete ON dbo.TPropositions
FOR Delete
AS

Declare @cProposition Varchar(50)
Declare @cQuestion Varchar(50)
Declare @cSociete Varchar(50)
Declare @cAuteur Varchar(50)
Declare @OrdreProposition Int
Declare @DateCreation datetime
Declare @DateLastModif datetime
Declare @Archiver Bit
Declare @PropositionValide Bit
Declare @NbrPoint Float
Declare @IISACreate Bit
Declare @cPropositionMaitre Varchar(50)
Declare @DateCreate DateTime
Declare @DateEdit DateTime

Declare @Request Varchar(5000)

Select @cProposition = (Select cProposition From deleted)
Select @cQuestion = (Select cQuestion From deleted)
Select @cSociete = (Select cSociete From deleted)
Select @cAuteur = (Select cAuteur From deleted)
Select @OrdreProposition = (Select ISNULL(OrdreProposition,Null) From
deleted)
Select @DateCreation = (Select DateCreation From deleted)
Select @DateLastModif = (Select DateLastModif From deleted)
Select @Archiver = (Select Archiver From deleted)
Select @PropositionValide = (Select PropositionValide From deleted)
Select @NbrPoint = (Select NbrPoint From deleted)
Select @IISACreate = (Select IISACreate From deleted)
Select @cPropositionMaitre = (Select ISNULL(cPropositionMaitre,'Null') From
deleted)
Select @DateCreate = (Select DateCreate From deleted)
Select @DateEdit = (Select DateEdit From deleted)
print 'Insert Into TPropositions VALUES (''' + @cProposition + ''',''' +
@cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''',' +
@OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) + ''',''' +
CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
@PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
@cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) + ''','''
+ CONVERT(VarChar(20),@DateEdit) +''')'
Select @Request = 'Insert Into TPropositions VALUES (''' + @cProposition +
''',''' + @cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''',' +
@OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) + ''',''' +
CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
@PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
@cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) + ''','''
+ CONVERT(VarChar(20),@DateEdit) +''')'

If exists(SELECT * FROM deleted WHERE cProposition = @cProposition)
Insert Into TSuppressions Values
('TPropositions',@Request,current_timestamp)




Avatar
Saulot
Bon alors petit 1, Ce code n'est pas de moi. (Mais bon, ca n'excuse rien et
c'est facile comme excuse.)
Moi on m'en engagé comme debuggeur alors je fais ce que je peux avec ce
qu'on me donne.
Ceci dit, je concois bien aisement que ma culture des trigger n'est pas
fameuse, n'en ayant jamais fais.

En revanche, Et d'un, le ton de tes remarques est un peu trop désagréable à
mon gout; je suis navré mais je n'ai pas la science infuse en programmation.
Et de deux, faire de l'autopromo, je trouve cela un peu limite.

Bref,
quoi qu'il en soit, je prend note des remarques et te remercie.
Je vais tenter de corriger tout cela en accord avec ce que tu as dis.


"Fred BROUARD" a écrit dans le message de news:

Salut,

je n'ai jamais vu pire écriture de trigger, donc, je t'offre un cours en
ligne...

1) Un delete peut porter sur de multiples lignes ! et non pas une seule
comme tu le sippose dans ton code.
Exemple, si ta table comporte 33 852 lignes, alors l'ordre :
DELETE FROM MaTable => 33 852 lignes effacées.
Dans le trigger, a table DELETED comportera donc 33 852 lignes et non
pas une comme tu le suppose !
Or le code de ton trigger ne traitera que la première ligne !!!

2) La ligne :
If exists(SELECT * FROM deleted WHERE cProposition = @cProposition)
est toujours vrai, puisque tu choppe @cProposition préalablement dans la
ligne :
Select @cProposition = (Select cProposition From deleted)

3) on ne fait pas :
Select @MaVariable = (Select UneColonne From deleted)
mais plus dircectement :
Select @MaVariable = UneColonne From deleted

4) on peut faire plusieurs affectation avec un seul SELECT :

donc tout ceci :

Select @cProposition = (Select cProposition From deleted)
Select @cQuestion = (Select cQuestion From deleted)
Select @cSociete = (Select cSociete From deleted)
Select @cAuteur = (Select cAuteur From deleted)
Select @OrdreProposition = (Select ISNULL(OrdreProposition,Null) From
deleted)
Select @DateCreation = (Select DateCreation From deleted)
Select @DateLastModif = (Select DateLastModif From deleted)
Select @Archiver = (Select Archiver From deleted)
Select @PropositionValide = (Select PropositionValide From deleted)
Select @NbrPoint = (Select NbrPoint From deleted)
Select @IISACreate = (Select IISACreate From deleted)
Select @cPropositionMaitre = (Select ISNULL(cPropositionMaitre,'Null')


From
deleted)
Select @DateCreate = (Select DateCreate From deleted)
Select @DateEdit = (Select DateEdit From deleted)

Se résume à :

SELECT @cProposition = cProposition,
@cQuestion = cQuestion,
@cSociete = cSociete,
@cAuteur = cAuteur,
@OrdreProposition = ISNULL(OrdreProposition,Null)
@DateCreation = DateCreation,
@DateLastModif = DateLastModif,
@Archiver = Archiver,
@PropositionValide = PropositionValide,
@NbrPoint = NbrPoint,
@IISACreate = IISACreate,
@cPropositionMaitre = ISNULL(cPropositionMaitre,'Null')
@DateCreate = DateCreate,
@DateEdit = DateEdit
FROM DELETED

5) j'ai l'impression que tu n'a pas compris à quoi sert le ISNULL. EN
effet dans ton cas il me semble ne servir à rien !!!
En effet si la colonne en arguement 1 est NULL, alors elle est remplacée
par le second arguement. Comme dans ton cas tu lui donne la valeur NULL,
voici ce qui se passe :
(Select ISNULL(OrdreProposition,Null)
Si OrdreProposition n'est pas NULL tu obtiendra la valeur de
OrdreProposition
Si OrdreProposition est NULL tu obtiendra NULL !
Donc fonction qui ne sert strictement à rien, mieux vaut laisser
l'élément seul

6) pour faire une insertion dans une table, même 3 000 lignes à insérer
d'un coup, on peut faire une requête imbriqué INSERT/SELECT
La syntaxe est :
INSERT INTO MaTable [ (listeColonnes) ]
SELECT (Colonnes)
FROM ...
[WHERE ...]
...

Dans ton cas :

INSERT INTO TPropositions
SELECT cProposition,
cQuestion,
cSociete,
cAuteur,
OrdreProposition,
DateCreation,
DateLastModif,
Archiver,
PropositionValide,
NbrPoint,
IISACreate,
cPropositionMaitre,
DateCreate,
DateEdit
FROM DELETED

Suffit !!!

CONCLUSION :

je ne saurait trop te conseiller de prendre quelques cours de formations
sur SQL Server, ou tout au moins, prendre quelques bouquins ou site pour
parfaire ta culture sur SQL Server et le langage SQL.

Sache que mon site comme mon bouquin, peuvent t'y aider !!!

A +


--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************

Saulot a écrit:
> Bonjour,
> j'ai un trigger (sur le delete) qui récupère les champs de ma table pour
> construire un chaine de caractères de type INSERT.
> En bref, en supprimant, j'insere dans une table un chaine de caractères
> representant l'insertion de l'enregistrement. (Un jeu de sauvegarde en


qq
> sorte)
>
> Dans la table ou je supprime, j'ai une foule de champs de type


Varchar(50£)
> et un champs de type Int
> Dans mon Trigger je fais tout bettement ceci :
>
> Declare @Request Varchar(5000)
> Select @Request = 'Insert Into MaTable Values (''' + Champs1 + ''',''' +
> ........ + ''',' + MonInt
>
> A l'execution il me sort l'erreur suivante :
> 'Syntaxe incorrecte lors de la conversion de la valeur varchar 'Insert


Into
> MaTable Values ('Champs1',.......',' vers une colonne de type Int
>
> En fait, il semble s'arreter avant l'entier et tenter une addition !!!
>
> Je ne comprend absolument pas pourquoi !
>
> Si vous pouviez m'aider.
> Merci d'avance.
>
> *********************
> CREATE TRIGGER TPropositionsDelete ON dbo.TPropositions
> FOR Delete
> AS
>
> Declare @cProposition Varchar(50)
> Declare @cQuestion Varchar(50)
> Declare @cSociete Varchar(50)
> Declare @cAuteur Varchar(50)
> Declare @OrdreProposition Int
> Declare @DateCreation datetime
> Declare @DateLastModif datetime
> Declare @Archiver Bit
> Declare @PropositionValide Bit
> Declare @NbrPoint Float
> Declare @IISACreate Bit
> Declare @cPropositionMaitre Varchar(50)
> Declare @DateCreate DateTime
> Declare @DateEdit DateTime
>
> Declare @Request Varchar(5000)
>
> Select @cProposition = (Select cProposition From deleted)
> Select @cQuestion = (Select cQuestion From deleted)
> Select @cSociete = (Select cSociete From deleted)
> Select @cAuteur = (Select cAuteur From deleted)
> Select @OrdreProposition = (Select ISNULL(OrdreProposition,Null) From
> deleted)
> Select @DateCreation = (Select DateCreation From deleted)
> Select @DateLastModif = (Select DateLastModif From deleted)
> Select @Archiver = (Select Archiver From deleted)
> Select @PropositionValide = (Select PropositionValide From deleted)
> Select @NbrPoint = (Select NbrPoint From deleted)
> Select @IISACreate = (Select IISACreate From deleted)
> Select @cPropositionMaitre = (Select ISNULL(cPropositionMaitre,'Null')


From
> deleted)
> Select @DateCreate = (Select DateCreate From deleted)
> Select @DateEdit = (Select DateEdit From deleted)
> print 'Insert Into TPropositions VALUES (''' + @cProposition + ''','''


+
> @cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''',' +
> @OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) +


''',''' +
> CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
> @PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
> @cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) +


''','''
> + CONVERT(VarChar(20),@DateEdit) +''')'
> Select @Request = 'Insert Into TPropositions VALUES (''' + @cProposition


+
> ''',''' + @cQuestion + ''',''' + @cSociete + ''',''' + @cAuteur + ''','


+
> @OrdreProposition + ',''' + CONVERT(Varchar(20), @DateCreation) +


''',''' +
> CONVERT(Varchar(20), @DateLastModif) + ''',' + @Archiver + ',' +
> @PropositionValide + ',' + @NbrPoint + ',' + @IISACreate + ',''' +
> @cPropositionMaitre + ''',''' + CONVERT(Varchar(20), @DateCreate) +


''','''
> + CONVERT(VarChar(20),@DateEdit) +''')'
>
> If exists(SELECT * FROM deleted WHERE cProposition = @cProposition)
> Insert Into TSuppressions Values
> ('TPropositions',@Request,current_timestamp)
>
>



Avatar
Fred BROUARD
faire de l'auto promo pour un boulot d'aide personnel et gratuit me
parait être un propos un peu abusif.

Ce n'est pas de ma faute si le code que tu as posté est aussi
catastrophique...

Cependant je constate de plus en plus la mauvaise formation des
développeurs. J'ai l'impression que beaucoup de personnes sont venus de
la bureautique, s'improvisant développeur et qu'on leur a filé du boulot
sur des outils sans pour autant les former correctement.

Cela n'empêche pas d'essayer de faire les choses proprement.

Mais sans formation adéquate, cela me parait difficile !

Pour SQL Server, une formation complète selon MS est un cursus de
l'ordre de 25 jours.

Pour la partie développement seule, il faut compter un stage de 5 jours.

Combien de jour a tu consacré pour te former, ne serais que tout seul ?
Combien de page de bouquin spécialisé sur SQL Server as tu lu ?
Combien de site consacré à SQL Server as tu parcouru ???

Je ne te jette pas l'opprobe. Je fais un constat.
Je ne suis pas payé non plus par Microsoft, et quand je poste pour aider
quelqu'un, ou quand j'écris des articles sur SQL je ne suis pas payé et
cela ne me rapporte rien.

Donc pour l'auto promo comme tu dit, si j'ai écrit ces articles c'est
pour aider des gens comme toi et cela gracieusement afin de m'éviter de
reposter toujours la même chose.

Mais tu peut considérer que tu n'en a rien à foutre du temps que je
prends à te répondre... ça me fait toujours plaisir !


A +


--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************

Saulot a écrit:
Bon alors petit 1, Ce code n'est pas de moi. (Mais bon, ca n'excuse rien et
c'est facile comme excuse.)
Moi on m'en engagé comme debuggeur alors je fais ce que je peux avec ce
qu'on me donne.
Ceci dit, je concois bien aisement que ma culture des trigger n'est pas
fameuse, n'en ayant jamais fais.

En revanche, Et d'un, le ton de tes remarques est un peu trop désagréable à
mon gout; je suis navré mais je n'ai pas la science infuse en programmation.
Et de deux, faire de l'autopromo, je trouve cela un peu limite.

Bref,
quoi qu'il en soit, je prend note des remarques et te remercie.
Je vais tenter de corriger tout cela en accord avec ce que tu as dis.




Avatar
Saulot
Ola Ola.... Pax romana...
Je n'en ai aucunement rien à foutre que l'on m'aide et que l'on me
conseille.
En revanche, au risque de t'horrifier un peu plus, je ne suis pas issu de la
bureautique mais bel et bien du developpement.
Mes connaissances du SQL ne sont pas aussi lamentables que tu peux le
croire.
Cependant, n'ayant jamais eu la nécéssité (ou n'y ayant jamais pensé tout
bettement) de travailler avec les triggers, je ne m'y suis jamais interessé
d'ou la teneur du code que tu as pu lire.

Je ne pratique que l'autoformation et dans les limites de mon temps et de
mes besoins.
Il se trouve que j'ai besoin des triggers en ce moment alors je m'y plonge,
y allant à taton.

En bref, je ne sais pas trop ou je veux en venir.
Alors je vais conclure par ceci : je ne suis pas un cas desespéré ^^ si tant
est que l'on daigne gentiment aider les pauvres bougres comme moi tout en
leur laissant le temps de se former.

Voila Voila.

"Fred BROUARD" a écrit dans le message de news:

faire de l'auto promo pour un boulot d'aide personnel et gratuit me
parait être un propos un peu abusif.

Ce n'est pas de ma faute si le code que tu as posté est aussi
catastrophique...

Cependant je constate de plus en plus la mauvaise formation des
développeurs. J'ai l'impression que beaucoup de personnes sont venus de
la bureautique, s'improvisant développeur et qu'on leur a filé du boulot
sur des outils sans pour autant les former correctement.

Cela n'empêche pas d'essayer de faire les choses proprement.

Mais sans formation adéquate, cela me parait difficile !

Pour SQL Server, une formation complète selon MS est un cursus de
l'ordre de 25 jours.

Pour la partie développement seule, il faut compter un stage de 5 jours.

Combien de jour a tu consacré pour te former, ne serais que tout seul ?
Combien de page de bouquin spécialisé sur SQL Server as tu lu ?
Combien de site consacré à SQL Server as tu parcouru ???

Je ne te jette pas l'opprobe. Je fais un constat.
Je ne suis pas payé non plus par Microsoft, et quand je poste pour aider
quelqu'un, ou quand j'écris des articles sur SQL je ne suis pas payé et
cela ne me rapporte rien.

Donc pour l'auto promo comme tu dit, si j'ai écrit ces articles c'est
pour aider des gens comme toi et cela gracieusement afin de m'éviter de
reposter toujours la même chose.

Mais tu peut considérer que tu n'en a rien à foutre du temps que je
prends à te répondre... ça me fait toujours plaisir !


A +


--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************

Saulot a écrit:
> Bon alors petit 1, Ce code n'est pas de moi. (Mais bon, ca n'excuse rien


et
> c'est facile comme excuse.)
> Moi on m'en engagé comme debuggeur alors je fais ce que je peux avec ce
> qu'on me donne.
> Ceci dit, je concois bien aisement que ma culture des trigger n'est pas
> fameuse, n'en ayant jamais fais.
>
> En revanche, Et d'un, le ton de tes remarques est un peu trop


désagréable à
> mon gout; je suis navré mais je n'ai pas la science infuse en


programmation.
> Et de deux, faire de l'autopromo, je trouve cela un peu limite.
>
> Bref,
> quoi qu'il en soit, je prend note des remarques et te remercie.
> Je vais tenter de corriger tout cela en accord avec ce que tu as dis.
>
>



Avatar
Saulot
Qd elle est basé sur son travail, OK ! Mais pas qd c celui de mon superieur
^^
Enfin bref,
Je vais surement aller acheter ton bouqin à midi (Comme koi chui plein de
bonnes résolutions ce matin)

Merci enkore.

"Fred BROUARD" a écrit dans le message de news:
#

Saulot a écrit:
> Ola Ola.... Pax romana...
> Je n'en ai aucunement rien à foutre que l'on m'aide et que l'on me
> conseille.

alors il faut accepter la critique !!!

;-)

A +


> En revanche, au risque de t'horrifier un peu plus, je ne suis pas issu


de la
> bureautique mais bel et bien du developpement.
> Mes connaissances du SQL ne sont pas aussi lamentables que tu peux le
> croire.
> Cependant, n'ayant jamais eu la nécéssité (ou n'y ayant jamais pensé


tout
> bettement) de travailler avec les triggers, je ne m'y suis jamais


interessé
> d'ou la teneur du code que tu as pu lire.
>
> Je ne pratique que l'autoformation et dans les limites de mon temps et


de
> mes besoins.
> Il se trouve que j'ai besoin des triggers en ce moment alors je m'y


plonge,
> y allant à taton.
>
> En bref, je ne sais pas trop ou je veux en venir.
> Alors je vais conclure par ceci : je ne suis pas un cas desespéré ^^ si


tant
> est que l'on daigne gentiment aider les pauvres bougres comme moi tout


en
> leur laissant le temps de se former.
>
> Voila Voila.
>
> "Fred BROUARD" a écrit dans le message de


news:
>
>
>>faire de l'auto promo pour un boulot d'aide personnel et gratuit me
>>parait être un propos un peu abusif.
>>
>>Ce n'est pas de ma faute si le code que tu as posté est aussi
>>catastrophique...
>>
>>Cependant je constate de plus en plus la mauvaise formation des
>>développeurs. J'ai l'impression que beaucoup de personnes sont venus de
>>la bureautique, s'improvisant développeur et qu'on leur a filé du boulot
>>sur des outils sans pour autant les former correctement.
>>
>>Cela n'empêche pas d'essayer de faire les choses proprement.
>>
>>Mais sans formation adéquate, cela me parait difficile !
>>
>>Pour SQL Server, une formation complète selon MS est un cursus de
>>l'ordre de 25 jours.
>>
>>Pour la partie développement seule, il faut compter un stage de 5 jours.
>>
>>Combien de jour a tu consacré pour te former, ne serais que tout seul ?
>>Combien de page de bouquin spécialisé sur SQL Server as tu lu ?
>>Combien de site consacré à SQL Server as tu parcouru ???
>>
>>Je ne te jette pas l'opprobe. Je fais un constat.
>>Je ne suis pas payé non plus par Microsoft, et quand je poste pour aider
>>quelqu'un, ou quand j'écris des articles sur SQL je ne suis pas payé et
>>cela ne me rapporte rien.
>>
>>Donc pour l'auto promo comme tu dit, si j'ai écrit ces articles c'est
>>pour aider des gens comme toi et cela gracieusement afin de m'éviter de
>>reposter toujours la même chose.
>>
>>Mais tu peut considérer que tu n'en a rien à foutre du temps que je
>>prends à te répondre... ça me fait toujours plaisir !
>>
>>
>>A +
>>
>>
>>--
>>Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
>>Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
>>Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
>>****************** mailto: ******************
>>
>>Saulot a écrit:
>>
>>>Bon alors petit 1, Ce code n'est pas de moi. (Mais bon, ca n'excuse


rien
>
> et
>
>>>c'est facile comme excuse.)
>>>Moi on m'en engagé comme debuggeur alors je fais ce que je peux avec ce
>>>qu'on me donne.
>>>Ceci dit, je concois bien aisement que ma culture des trigger n'est pas
>>>fameuse, n'en ayant jamais fais.
>>>
>>>En revanche, Et d'un, le ton de tes remarques est un peu trop
>
> désagréable à
>
>>>mon gout; je suis navré mais je n'ai pas la science infuse en
>
> programmation.
>
>>>Et de deux, faire de l'autopromo, je trouve cela un peu limite.
>>>
>>>Bref,
>>>quoi qu'il en soit, je prend note des remarques et te remercie.
>>>Je vais tenter de corriger tout cela en accord avec ce que tu as dis.
>>>
>>>
>>
>
>

--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************



Avatar
Fred BROUARD
Saulot a écrit:
Ola Ola.... Pax romana...
Je n'en ai aucunement rien à foutre que l'on m'aide et que l'on me
conseille.



alors il faut accepter la critique !!!

;-)

A +


En revanche, au risque de t'horrifier un peu plus, je ne suis pas issu de la
bureautique mais bel et bien du developpement.
Mes connaissances du SQL ne sont pas aussi lamentables que tu peux le
croire.
Cependant, n'ayant jamais eu la nécéssité (ou n'y ayant jamais pensé tout
bettement) de travailler avec les triggers, je ne m'y suis jamais interessé
d'ou la teneur du code que tu as pu lire.

Je ne pratique que l'autoformation et dans les limites de mon temps et de
mes besoins.
Il se trouve que j'ai besoin des triggers en ce moment alors je m'y plonge,
y allant à taton.

En bref, je ne sais pas trop ou je veux en venir.
Alors je vais conclure par ceci : je ne suis pas un cas desespéré ^^ si tant
est que l'on daigne gentiment aider les pauvres bougres comme moi tout en
leur laissant le temps de se former.

Voila Voila.

"Fred BROUARD" a écrit dans le message de news:


faire de l'auto promo pour un boulot d'aide personnel et gratuit me
parait être un propos un peu abusif.

Ce n'est pas de ma faute si le code que tu as posté est aussi
catastrophique...

Cependant je constate de plus en plus la mauvaise formation des
développeurs. J'ai l'impression que beaucoup de personnes sont venus de
la bureautique, s'improvisant développeur et qu'on leur a filé du boulot
sur des outils sans pour autant les former correctement.

Cela n'empêche pas d'essayer de faire les choses proprement.

Mais sans formation adéquate, cela me parait difficile !

Pour SQL Server, une formation complète selon MS est un cursus de
l'ordre de 25 jours.

Pour la partie développement seule, il faut compter un stage de 5 jours.

Combien de jour a tu consacré pour te former, ne serais que tout seul ?
Combien de page de bouquin spécialisé sur SQL Server as tu lu ?
Combien de site consacré à SQL Server as tu parcouru ???

Je ne te jette pas l'opprobe. Je fais un constat.
Je ne suis pas payé non plus par Microsoft, et quand je poste pour aider
quelqu'un, ou quand j'écris des articles sur SQL je ne suis pas payé et
cela ne me rapporte rien.

Donc pour l'auto promo comme tu dit, si j'ai écrit ces articles c'est
pour aider des gens comme toi et cela gracieusement afin de m'éviter de
reposter toujours la même chose.

Mais tu peut considérer que tu n'en a rien à foutre du temps que je
prends à te répondre... ça me fait toujours plaisir !


A +


--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************

Saulot a écrit:

Bon alors petit 1, Ce code n'est pas de moi. (Mais bon, ca n'excuse rien





et

c'est facile comme excuse.)
Moi on m'en engagé comme debuggeur alors je fais ce que je peux avec ce
qu'on me donne.
Ceci dit, je concois bien aisement que ma culture des trigger n'est pas
fameuse, n'en ayant jamais fais.

En revanche, Et d'un, le ton de tes remarques est un peu trop





désagréable à

mon gout; je suis navré mais je n'ai pas la science infuse en





programmation.

Et de deux, faire de l'autopromo, je trouve cela un peu limite.

Bref,
quoi qu'il en soit, je prend note des remarques et te remercie.
Je vais tenter de corriger tout cela en accord avec ce que tu as dis.












--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Avatar
Fred BROUARD
Attention, mon bouquin est spécialisé sur SQL, pas sur SQL Server.
Contenu : http://sqlpro.developpez.com/SQLbookFBmini.JPG
Critiques des bouquins SQL :
http://www.developpez.net/forums/viewtopic.php?ti640

Pour SQL Server il n'existe pas d'ouvrage sur le développement pur.
En revanche le livre de Kevin Kline chez O'Reilly est un excellent
ouvrage sur la langage Transact SQL mais hélas en anglais.

Voir :
http://www.developpez.net/forums/viewtopic.php?t–184

Un cours succinct sur SQL Server :
http://sgbd.developpez.com/cours/sqlserver2000/

A +

Saulot a écrit:
Qd elle est basé sur son travail, OK ! Mais pas qd c celui de mon superieur
^^
Enfin bref,
Je vais surement aller acheter ton bouqin à midi (Comme koi chui plein de
bonnes résolutions ce matin)

Merci enkore.

"Fred BROUARD" a écrit dans le message de news:
#

Saulot a écrit:

Ola Ola.... Pax romana...
Je n'en ai aucunement rien à foutre que l'on m'aide et que l'on me
conseille.



alors il faut accepter la critique !!!

;-)

A +



En revanche, au risque de t'horrifier un peu plus, je ne suis pas issu





de la

bureautique mais bel et bien du developpement.
Mes connaissances du SQL ne sont pas aussi lamentables que tu peux le
croire.
Cependant, n'ayant jamais eu la nécéssité (ou n'y ayant jamais pensé





tout

bettement) de travailler avec les triggers, je ne m'y suis jamais





interessé

d'ou la teneur du code que tu as pu lire.

Je ne pratique que l'autoformation et dans les limites de mon temps et





de

mes besoins.
Il se trouve que j'ai besoin des triggers en ce moment alors je m'y





plonge,

y allant à taton.

En bref, je ne sais pas trop ou je veux en venir.
Alors je vais conclure par ceci : je ne suis pas un cas desespéré ^^ si





tant

est que l'on daigne gentiment aider les pauvres bougres comme moi tout





en

leur laissant le temps de se former.

Voila Voila.

"Fred BROUARD" a écrit dans le message de





news:




faire de l'auto promo pour un boulot d'aide personnel et gratuit me
parait être un propos un peu abusif.

Ce n'est pas de ma faute si le code que tu as posté est aussi
catastrophique...

Cependant je constate de plus en plus la mauvaise formation des
développeurs. J'ai l'impression que beaucoup de personnes sont venus de
la bureautique, s'improvisant développeur et qu'on leur a filé du boulot
sur des outils sans pour autant les former correctement.

Cela n'empêche pas d'essayer de faire les choses proprement.

Mais sans formation adéquate, cela me parait difficile !

Pour SQL Server, une formation complète selon MS est un cursus de
l'ordre de 25 jours.

Pour la partie développement seule, il faut compter un stage de 5 jours.

Combien de jour a tu consacré pour te former, ne serais que tout seul ?
Combien de page de bouquin spécialisé sur SQL Server as tu lu ?
Combien de site consacré à SQL Server as tu parcouru ???

Je ne te jette pas l'opprobe. Je fais un constat.
Je ne suis pas payé non plus par Microsoft, et quand je poste pour aider
quelqu'un, ou quand j'écris des articles sur SQL je ne suis pas payé et
cela ne me rapporte rien.

Donc pour l'auto promo comme tu dit, si j'ai écrit ces articles c'est
pour aider des gens comme toi et cela gracieusement afin de m'éviter de
reposter toujours la même chose.

Mais tu peut considérer que tu n'en a rien à foutre du temps que je
prends à te répondre... ça me fait toujours plaisir !


A +


--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************

Saulot a écrit:


Bon alors petit 1, Ce code n'est pas de moi. (Mais bon, ca n'excuse









rien

et


c'est facile comme excuse.)
Moi on m'en engagé comme debuggeur alors je fais ce que je peux avec ce
qu'on me donne.
Ceci dit, je concois bien aisement que ma culture des trigger n'est pas
fameuse, n'en ayant jamais fais.

En revanche, Et d'un, le ton de tes remarques est un peu trop





désagréable à


mon gout; je suis navré mais je n'ai pas la science infuse en





programmation.


Et de deux, faire de l'autopromo, je trouve cela un peu limite.

Bref,
quoi qu'il en soit, je prend note des remarques et te remercie.
Je vais tenter de corriger tout cela en accord avec ce que tu as dis.










--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************









--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
1 2