IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Problème d'apostrophes et de variables date


Sujet :

Développement SQL Server

  1. #21
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    De ce que j'ai compris, sa table avec les dix colonnes n'est pas la cible de l'insertion, mais la source pour les différentes fonctions utilisées (dbo.MIN_Extrait...).

    La requête que j'ai proposée ne fait que remplacer la procédure stockée postée dans le message initial : cette sp fait une boucle pour insérer dix fois des données qui proviennent toujours de la même ligne de la table article. La seule chose qui change c'est l'appel des fonctions avec la variable @NumPromo.

    Il serait certainement aussi préférable de se passer de ces fonctions, et de tout faire dans la requête, ce qui serait bien plus performant, mais sans le code des dites fonctions...

    Et en effet, si la table SOLDE (celle aux dix colonnes) était mieux modélisée, le problème ne se poserait même pas, puisqu'il suffirait probablement d'une simple jointure entre article et solde.

  2. #22
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    Je reviens à tester ma procédure actuelle qui fonctionne pour un article.
    Je rappelles qu'elle a cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    --CREATE PROCEDURE MIM_LoadDemarques AS
    BEGIN
    	DECLARE @leNumPromo INT
    	DECLARE @leCodeArt VARCHAR(20)
    	DECLARE @laSaison INT
    	DECLARE @laDateDeDebut VARCHAR(10)
    	DECLARE @laDateDeFin VARCHAR(10)
    	DECLARE @lePrix FLOAT
     
    	SET @leNumPromo = 1
     
    -- TRUNCATE TABLE Mim_Demarques
     
    	WHILE (@leNumPromo<=1)
    	BEGIN
    		SELECT distinct @leCodeArt = substring(codearticle,1,10), 
    			   @laSaison = saison,
    			   @laDateDeDebut = dbo.MIM_ExtraitDateDebutFR(rtrim(codearticle),@leNumPromo),
    			   @laDateDeFin = dbo.MIM_ExtraitDateFinFR(rtrim(codearticle),@leNumPromo),
    			   @lePrix = dbo.MIM_ExtraitPrixPromo(rtrim(codearticle),@leNumPromo)
    		FROM article
    		WHERE codearticle = '015480201001'
     
    		INSERT INTO tabletest500 values (@leCodeArt)
    		INSERT INTO tabletest500 values (@laSaison)
    		INSERT INTO tabletest500 values (@laDateDeDebut)
    		INSERT INTO tabletest500 values (@laDateDeFin)
    		INSERT INTO tabletest500 values (@lePrix)
     
     
    		/*INSERT INTO MIM_Demarques (CodeProduit, Saison, DateDebut, DateFin, Prix)
    			   VALUES (@leCodeArt,@laSaison,@laDateDeDebut,@laDateDeFin,@lePrix)*/
     
    		SET @leNumPromo = (@leNumPromo + 1)
    	END
    END
    Elle fonctionne sans soucis. Mais quand je remet la condition WHILE (@leNumPromo<=10) (pour mes 10 éventuelles promotions), il me met cette erreur :
    ErrorCode: -2146232060

    [.Net SqlClient Data Provider]
    Number: 245, Class: 16, State: 1, Line: 8
    ErrorMessage: Erreur de syntaxe lors de la conversion de la valeur varchar '*' vers une colonne de type de données int.
    Je ne comprend absolument pas pourquoi il me parle de ça !

    Ensuite je me suis rendu compte que c'est quand je n'ai pas les 10 promotions de remplies (c-à-d tout le temps) qu'il met cette erreur.
    J'ai donc inséré la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    IF (@laDateDeDebut <> NULL)
    		BEGIN
    			INSERT INTO tabletest500 values (@leCodeArt)
    			INSERT INTO tabletest500 values (@laSaison)
    			INSERT INTO tabletest500 values (@laDateDeDebut)
    			INSERT INTO tabletest500 values (@laDateDeFin)
    			INSERT INTO tabletest500 values (@lePrix)
    		END
    Sauf que là il n'insère plus aucune ligne..

  3. #23
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par valentin_emn Voir le message
    J'ai donc inséré la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (@laDateDeDebut <> NULL)
    Sauf que là il n'insère plus aucune ligne..
    Normal, cette condition n'est jamais vraie.

    Mettez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (@laDateDeDebut IS NOT NULL)

    Cela dit, j'ai toujours du mal à comprendre où vous voulez en venir...

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    Comment ça se fait que la condition n'est jamais vraie ? Car si en paramètre de ma fonction la valeurs est NULL, la date récupérée aura la valeur NULL, du coup le if devrait passer ?

    Ca ne fonctionne pas non plus avec le is not null.

  5. #25
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 780
    Points
    30 780
    Par défaut
    NULL n'est égal à rien, pas même NULL.
    NULL est différent de tout, y compris NULL.
    NULL IS NULL et c'est tout !
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #26
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    NULL est différent de tout, y compris NULL.
    Ha tiens, j'aurai plutôt dit :
    NULL n'est différent de rien.

    @valentin_emn, NULL marque une absence de valeur
    En ce sens, il ne peut pas être comparé à quoi que ce soit, et une comparaison, quelle qu'elle soit, ayant un opérande à NULL ne sera jamais ni vraie ni fausse. une telle opération renvoie UNKNOW.

    Pour comprendre :

    Si la couleur de votre voiture est la même que la couleur de ma voiture, relisez ce post depuis le début
    Si la couleur de votre voiture est différente de la couleur de ma voiture, relisez ce post depuis le début

    Si vous lisez ceci, c'est que vous avez compris

  7. #27
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    Donc en gros, NULL est incomparable (=, <>; ON, NOT IN ...) ?

  8. #28
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 780
    Points
    30 780
    Par défaut
    Tout juste !
    La seule opération valide que tu puisses faire avec NULL, c'est <exp> IS [NOT] NULL
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #29
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    Du coup je fais comment pour gérer le cas où il n'y a pas 10 promos ?

    Car avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF (@laDateDeDebut IS NOT NULL)
    , il ne rentre jamais dedans.
    (et j'ai toujours l'erreur :
    ErrorCode: -2146232060

    [.Net SqlClient Data Provider]
    Number: 245, Class: 16, State: 1, Line: 8
    ErrorMessage: Erreur de syntaxe lors de la conversion de la valeur varchar '*' vers une colonne de type de données int.
    )

  10. #30
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par valentin_emn Voir le message
    et j'ai toujours l'erreur
    Et nous, nous n'avons toujours pas le code des fonctions, où se situe probablement cette erreur...

  11. #31
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    CREATE FUNCTION MIM_ExtraitDateDebutFR(@Chaine AS VARCHAR(20), @vNumeroPromo AS CHAR) RETURNS VARCHAR(10) AS
    BEGIN
      	DECLARE @DDebut VARCHAR(10)
      	DECLARE @DDebutJ VARCHAR(3)
      	DECLARE @DDebutM VARCHAR(3)
      	DECLARE @DDebutA VARCHAR(3)
     
      	IF (@vNumeroPromo=1)
    	  	SELECT @DDebut = PrixSolde1
      		FROM solde
      		WHERE Reference = rtrim(@Chaine)+'P'
     
     	IF (@vNumeroPromo=2)
    		SELECT @DDebut = PrixSolde2
    	  	FROM solde
    	  	WHERE Reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=3)
    	  	SELECT @DDebut = PrixSolde3
      		FROM solde
      		WHERE Reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=4)
    		SELECT @DDebut = PrixSolde4
    	  	FROM solde
    	  	WHERE Reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=5)
    		SELECT @DDebut = PrixSolde5
    	  	FROM solde
    	  	WHERE Reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=6)
    	 	SELECT @DDebut = PrixSolde6
    	  	FROM solde
    	  	WHERE Reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=7)
    	 	SELECT @DDebut = PrixSolde7
    	  	FROM solde
    	  	WHERE Reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=8)
    		SELECT @DDebut = PrixSolde8
    	  	FROM solde
    	  	WHERE Reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=9)
    	 	SELECT @DDebut = PrixSolde9
    	  	FROM solde
    	  	WHERE Reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=10)
    	 	SELECT @DDebut = PrixSolde10
    	  	FROM solde
    	  	WHERE Reference = rtrim(@Chaine)+'P'
     
      	SET @DDebut = substring(@DDebut,1,6)
      	IF @DDebut like '%.'
      		SET @DDebut = '0' + @DDebut
     
      	SET @DDebutJ = substring(@DDebut,1,2)+'/'
      	SET @DDebutM = substring(@DDebut,3,2)+'/'
      	SET @DDebutA = substring(@DDebut,5,2)
     
      	SET @DDebut = @DDebutJ+@DDebutM+'20'+@DDebutA  
     
     	RETURN (@DDebut)
    END
    ET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    CREATE FUNCTION MIM_ExtraitDateFinFR(@Chaine AS VARCHAR(20), @vNumeroPromo AS INT) RETURNS varchar(100) AS
    BEGIN
      	DECLARE @DFin VARCHAR(50)
      	DECLARE @DFinJ VARCHAR(3)
      	DECLARE @DFinM VARCHAR(3)
      	DECLARE @DFinA VARCHAR(3)
     
      	IF (@vNumeroPromo=1)
    	  	select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde1) AS VARCHAR),8,6)
      		from solde 
      		where reference = rtrim(@Chaine)+'P'
     
     	IF (@vNumeroPromo=2)
    		select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde2) AS VARCHAR),8,6)
    	  	from solde 
    	  	where reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=3)
    	  	select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde3) AS VARCHAR),8,6)
    	  	from solde 
    	  	where reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=4)
    		select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde4) AS VARCHAR),8,6)
    	  	from solde 
    	  	where reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=5)
    		select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde5) AS VARCHAR),8,6)
    	  	from solde 
    	  	where reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=6)
    	 	select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde6) AS VARCHAR),8,6)
    	  	from solde 
    	  	where reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=7)
    	 	select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde7) AS VARCHAR),8,6)
    	  	from solde 
    	  	where reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=8)
    		select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde8) AS VARCHAR),8,6)
    	  	from solde 
    	  	where reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=9)
    	 	select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde9) AS VARCHAR),8,6)
    	  	from solde 
    	  	where reference = rtrim(@Chaine)+'P'
     
      	IF (@vNumeroPromo=10)
    	 	select @DFin = SUBSTRING(CAST(CONVERT(DECIMAL (13,7),PrixSolde10) AS VARCHAR),8,6)
    	  	from solde 
    	  	where reference = rtrim(@Chaine)+'P'
     
      	SET @DFin = substring(@DFin,1, 6)
      	SET @DFinJ = substring(@DFin,1,2)+'/'
      	SET @DFinM = substring(@DFin,3,2)+'/'  	
      	SET @DFinA = substring(@DFin,5,2)
     
      	SET @DFin = @DFinJ+@DFinM+'20'+@DFinA  	
     
     
     	RETURN (@DFin)
     
     
    END
    Donc quand les fonctions récupèrent des valeurs NULL (pas de promos), la procédure fait quand même l'insert.

  12. #32
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    Pour ce qui est de la condition, j'ai trouvé : au lieu de gérer du NULL, je vérifie sur le prix :

    Mais j'ai quand même l'erreur ><...

  13. #33
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Si @LePrix est null, cette expression ne sera jamais vraie non plus.

    Concernant vos fonctions, par quelle magie transforment-elle des prix en date (le tout en passant par des varchar) ?

    Vous vous demandez pourquoi cela ne fonctionne pas pour plusieurs articles, moi je me demande comment cela fonctionne pour un seul !

    Votre erreur vient probablement d'une mauvaise donnée quelque part.

    Vous pouvez faire du pas à pas pour trouver l'origine, mais il serait certainement plus utile de reprendre votre code et l'uniformiser. Utilisez les bons types pour les données qu'ils doivent contenir, et ce genre de problème disparaitra.
    Restez également homogène dans les types utilisés. Rien que sur vos deux fonctions :
    Le type de @vNumPromo est tantôt un CHAR, tantôt un INT
    Le type de retour des fonctions est tantôt un VARCHAR(10) (pour une date visiblement ! ), tantôt un varchar(100)

  14. #34
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Le type de @vNumPromo est tantôt un CHAR, tantôt un INT
    C'est d'ailleurs de là que vient le problème !
    Lorsque vous convertissez un INT vers un CHAR dont la longueur est insuffisante (et ici, le CHAR est implicitement un CHAR(1), donc suffisant pour 1..9 mais trop petit pour 10), la conversion retourne *. C'est lors de votre conversion implicite en INT de cet astérisque que vous obtenez votre message d'erreur.

  15. #35
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2015
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 44
    Points : 27
    Points
    27
    Par défaut
    Salut !!

    Malheureusement, je ne suis plus en stage depuis le 27 février, donc je n'ai plus aucun moyen d'essayer de modifier ma procédure.

    J'ai quand même lu vos messages et j'ai essayé de réfléchir à ce que j'avais fait, et je pense que le problème vient effectivement de là :

    Citation Envoyé par aieeeuuuuu
    Le type de @vNumPromo est tantôt un CHAR, tantôt un INT
    C'est d'ailleurs de là que vient le problème !
    Lorsque vous convertissez un INT vers un CHAR dont la longueur est insuffisante (et ici, le CHAR est implicitement un CHAR(1), donc suffisant pour 1..9 mais trop petit pour 10), la conversion retourne *. C'est lors de votre conversion implicite en INT de cet astérisque que vous obtenez votre message d'erreur.
    J'ai donc envoyé vos réponses à mes responsables de stage pour qu'ils essayent et je leur ai demandé de me tenir au courant.

    Merci à vous.

  16. #36
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Hello,

    C'est un peu tard mais je me permets d'intervenir pour une remarque d'ordre général qui a déjà été plus ou moins faite mais pas assez appuyée à mon goût.

    Le plus gros problème ici (si on fait abstraction de la modélisation) est que vous tentez de codez en t-sql comme vous codez en C#. Je ne vous jette pas la pierre, je faisais pareil jusqu'à il n'y a pas si longtemps.

    Quand on travaille côté DB, il faut vraiment penser en terme d'ensembles et pas en terme d'enregistrements. Malheureusement, on ne nous apprend pas cela à l'école et c'est assez déroutant au début.
    De plus la cohérence et l'adéquation des données avec le type de donnée utilisé est primordial et permettra d'éviter bon nombre de problème.
    Kropernic

Discussions similaires

  1. Problème sur variable date [BO 5.1.9]
    Par LOPEZ dans le forum Deski
    Réponses: 6
    Dernier message: 06/06/2014, 08h23
  2. Réponses: 7
    Dernier message: 24/10/2011, 21h49
  3. problèmes variable Date
    Par stargates dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/05/2008, 17h57
  4. PRoblème d'apostrophe dans variable.
    Par jbidou88 dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/06/2007, 14h57
  5. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo