begin process at 2012 05 26 21:02:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Procédures Stockées

 > 

Remplacement de valeurs pour formule de calcul


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Remplacement de valeurs pour formule de calcul

samedi 24 octobre 2009 à 13:38:01 | Remplacement de valeurs pour formule de calcul

anspauldou

Bonjour

J'ai deux tables Formule et SaisieValeur
La table Formule contient :
Insert Into Formule (NumFormule, LibFormule)
Values ('01', (({a}+{b})*({c}-{d})/{e}))

La table SaisieValeur contient

Insert Into SaisieValeur (NumVal, Valeur)
Values (a, 2000)
Insert Into SaisieValeur (NumVal, Valeur)
Values (b, 1000)
Insert Into SaisieValeur (NumVal, Valeur)
Values (c, 500)
Insert Into SaisieValeur (NumVal, Valeur)
Values (d, 300)
Insert Into SaisieValeur (NumVal, ValeurNumeric)
Values (e, 1500)

je voudrais un script (procedure stockée ou fonction en SQL 2005) qui me permettra de remplacer les valeurs a,b,c,d,e de la table Formule par les valeurs de la colonne ValeurNumeric la table SaisieValeur de sorte à afficher en finale ((2000+1000)*(500-300)/1500).

Merci d'avance
mardi 27 octobre 2009 à 12:55:06 | Re : Remplacement de valeurs pour formule de calcul

Marroubi




bonjours anspauldou;

j'ai crée une base de données spécialement pour toi !!


et j'ai crée un proc qui permet de retourner le résultat comme tu indique ci-dessus .

Script de la création des tables:

Code :
USE [Teste]
GO
/****** Objet :  Table [dbo].[Formule]    Date de génération du script : 10/27/2009 11:47:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Formule](
	[NumFormule] [nvarchar](50) NOT NULL,
	[LibFormule] [nvarchar](50) NULL,
 CONSTRAINT [PK_Formule] PRIMARY KEY CLUSTERED 
(
	[NumFormule] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]



Code :
USE [Teste]
GO
/****** Objet :  Table [dbo].[SaisieValeur]    Date de génération du script : 10/27/2009 11:47:53 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SaisieValeur](
	[NumVal] [nvarchar](50) NOT NULL,
	[Valeur] [nvarchar](50) NULL,
 CONSTRAINT [PK_SaisieValeur] PRIMARY KEY CLUSTERED 
(
	[NumVal] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]


  • Proc :
    Code :
    CREATE PROC GetFormule (@numFormule AS VARCHAR(2))
    AS
    BEGIN
    	DECLARE curValeur  CURSOR FOR SELECT * FROM saisieValeur
    	DECLARE @numValeur VARCHAR(1)
    	DECLARE	@valeur VARCHAR(3)
    
    	OPEN curValeur
    	FETCH NEXT FROM curValeur INTO @numValeur,@valeur
    
    	DECLARE @formule VARCHAR(50)
    	SET @formule=(SELECT LibFormule FROM formule WHERE NumFormule=@numFormule)
    
    	WHILE(@@fetch_status=0)
    		BEGIN
    			SELECT @numValeur,@valeur
    			DECLARE @caractere VARCHAR(1)
    			DECLARE @i INT
    			SET @i=0
    
    			WHILE(@i<len(@formule))
    				BEGIN
    					DECLARE @pos INT
    					SET @pos=(SELECT charindex(@numValeur ,@formule,@i))
    					SET @formule=isnull((SELECT STUFF(@formule,@pos, 1, @valeur)),@formule)
    					SET @i=@i+1
    				END
    			FETCH NEXT FROM curValeur INTO @numValeur,@valeur
    		END
    	SELECT @formule
    
    	CLOSE curValeur
    	DEALLOCATE curValeur
    END

  • l'exécution de proc :
    Code :
    EXEC Getformule '01'


    Bonne Casse-tête.
  • mercredi 28 octobre 2009 à 12:35:23 | Re : Remplacement de valeurs pour formule de calcul

    anspauldou

    Bonjour

    Je te remercie encore une fois pour ton script qui marche bien sauf qu'il y a un petit souci dans la formulation de mon problème, je souhaite avoir la formule avec les parenthèses sans les accolades '{}' autour de mes valeurs à remplacer dans mes formules exemple :

    en entrée de mon paramètre de procédure : (({a}+{b})*({c}-{d})/{e})
    en sortie : ((2000+1000)*(500-300)/1500)
    C'est ce que je voudrai en sortie.

    Merci encore une fois
    mercredi 28 octobre 2009 à 12:58:48 | Re : Remplacement de valeurs pour formule de calcul

    Marroubi




    de rien,
    alors c'est simple:

    changer cette ligne de code :

    Code :
    SET @formule=isnull((SELECT STUFF(@formule,@pos,1, @valeur)),@formule)


    par :

    Code :
    SET @formule=isnull((SELECT STUFF(@formule,@pos-1,3, @valeur)),@formule)


    Bonne Casse-tête.
    vendredi 30 octobre 2009 à 10:40:20 | Re : Remplacement de valeurs pour formule de calcul

    anspauldou

    Bonjour

    Je tiens encore une fois à te remercier pour ton aide j'ai testé et ça marche à merveille.

    Cordialement
    vendredi 30 octobre 2009 à 10:45:07 | Re : Remplacement de valeurs pour formule de calcul

    Marroubi

    Réponse acceptée !



    De rien mon ami,

    tu peux maintenant marquer ta question comme Résolue dans la liste des questions.

    Bonne Casse-Tête.



    Cette discussion est classée dans : insert, into, formule, values, saisievaleur


    Répondre à ce message

    Sujets en rapport avec ce message

    Requete sur un AGREGAT [ par cyberice67 ] Bonjour, Voilà j'ai un big problème sur une requete SQL. J'ai une base de donnée SQL Server est j'essaie de créer une requete portant sur un agregat. Probleme d'integrité dans une stored avec transaction [ par issoux ] Conflit entre l'instruction INSERT et la contrainte COLUMN FOREIGN KEYVoilà mon erreur : j'ai une transaction que voici (sous sql server 2000) :CREATE violation de contraintes unique [ par dark_cross ] CREATE TABLE appareil(        num_vol number(4) PRIMARY KEY,    num_avion NUMBER(4),     nbvolh_mois NUMBER(4),    nbhvol_tot NUMBER(6),    capacite N Insert into [matable] values (ma variable, Select...) c'est possible?? [ par yanis7518 ] Salut à tous, Je voudrais faire une procédure stockée qui fait des insertions d'une table vers une autre. Dans ma nouvelle table j'ai un Guid que je Parcourt de chaine et Formule de calcul [ par anspauldou ] Bonjour J'ai deux tables dont l'une est Table_Formule et l'autre Table_Donnee. La table Table_Formule contient les informations suivantes : insert in [SQL Server 2005] Demande de Brainstorming [ par WhiteHippo ] Bonjour à tous, Supposons que j'ai une table temporaire créée et remplie comme suit : [code=sql] DECLARE @__TableTemps TABLE ( nom char(1) @@identity apres Insertion [ par issoux ] Bonjour,  J'utilise dans une stored procedure trois  Insert . J'ai besoin de l'id du premier insert pour le mettre dans le deuxieme Insert . Mes id so Insert into #tmp (...) exec sp_myStoerdProc [ par clochette001 ] Hello, Besoin d'exécuter une sp sans output, en récupérant le résultat du select de cette sp. Create sp_A @p_param int as select balance from table Probleme de requête INSERT INTO AVEC INNER JOIN [ par kenry22 ] BONJOUR à tous! je suis en entrain de faire une requête qui me permettrait d'ajouter différentes informations dans mes tables Et le problème que je n' Problème requête insert into avec select dans une autre table [ par francoissql ] Bonjour, Je cherche à copier des données d'une table vers une autre J'ai crée la requête suivante : insert into [SL_MUFIBUF-201001].[dbo].[KOSTKTR]


    Nos sponsors


    Sondage...

    CalendriCode

    Mai 2012
    LMMJVSD
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   

    Consulter la suite du CalendriCode

    Photothèque

    A découvrir



     
    Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
    CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
    CodeS-SourceS.com© est une marque déposée tous droits réservés

    Google Coop CodeS-SourceS Google Coop CodeS-SourceS
    Temps d'éxécution de la page : 0,952 sec (3)

    Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales