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 :

Aide pour la réalisation d'un curseur


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut Aide pour la réalisation d'un curseur
    Bonjour,

    Je dois récupérer des informations d'un fichier texte.
    Je l'importe dans une table avec un champ unique (Data)

    Voici un extrait de ma table (Format fixe : les informations sont toujours aux mêmes emplacements dans la table) :

    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
    AXXXXXXX/AAA*******************************************************************************************************************************************************************Page ****2
    *******************************GRAND BOOKK AUXXXX. DU *14/12/2008 AU 14/12/2008
    Tiers : 99999 ***********CCCC
    Compte collectif *: 00001 EUR 44444444 ***CAP RRRRR.APPPPPPPPP
    Compte auxiliaire : **********9555555 ****CCC LLLL ASSSSSSSS TTD ***************************Date dernier mouvement : 09/12/2008
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ¦Identif. ¦ *N° *¦ *Date ***¦ **Référence ***¦Libellé de l'écriture *************¦Code *¦Pr¦Code *¦Date *****¦ **************Montant ************************¦ Nouveau solde **********¦
    ¦ Lot ****¦écrit.¦Comptable ¦ *Lettr./Even. *¦ **********************************¦Opé **¦ *¦lettr.¦Traitement¦ ***Débit ***********************Crédit *******¦ *******************Sens ¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------------------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 13/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ *************44.774,46¦ ************************¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------+-----------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Total des mouvements *************¦ *****¦ *¦ *****¦ *********¦ ******************0,00¦ ******************0,00¦ ************************¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 14/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ *************44.774,46¦ ************************¦
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ***********************************************************************************************************************************************************************************../..
    **************************************************************************************************************************************************************************************************************************************************************LLLLLL ********************************************************************************Comptabilités *********************************************************************15/12/2008 11:24
    AXXXXXXX/AAA*******************************************************************************************************************************************************************Page ****2
    *******************************GRAND BOOKK AUXXXX. DU *14/12/2008 AU 14/12/2008
    Tiers : 988888 ***********CICI GRRRRR MMMM
    Compte collectif *: 00001 EUR 55555555 ***.APPPPPPPPP
    Compte auxiliaire : **********9555555 ****CCCC GGG MEMEMEC *********************************Date dernier mouvement : 01/12/2004
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ¦Identif. ¦ *N° *¦ *Date ***¦ **Référence ***¦Libellé de l'écriture *************¦Code *¦Pr¦Code *¦Date *****¦ **************Montant ************************¦ Nouveau solde **********¦
    ¦ Lot ****¦écrit.¦Comptable ¦ *Lettr./Even. *¦ **********************************¦Opé **¦ *¦lettr.¦Traitement¦ ***Débit ***********************Crédit *******¦ *******************Sens ¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------------------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 13/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ ******************0,00¦ ************************¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------+-----------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Total des mouvements *************¦ *****¦ *¦ *****¦ *********¦ ******************0,00¦ ******************0,00¦ ************************¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 14/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ ******************0,00¦ ************************¦
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ***********************************************************************************************************************************************************************************../..
    **************************************************************************************************************************************************************************************************************************************************************LLLLLL ********************************************************************************Comptabilités *********************************************************************15/12/2008 11:24
    Mon objectif est sortir pour l'exemple ci-dessus, les résultats suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Tiers      Solde 1      Solde 2     Mvt 1     Mvt 2
    999999   44.774,46  44.774,46  0,00       0,00
    988888   0,00          0,00         0,00       0,00
    En recherchant un peu sur le net, je pense que je doit faire un curseur, cependant n'ayant jamais fait ce genre de manip sur SQL, et ne comprenant pas trés bien la logique d'un curseur, pourriez vous m'aidez svp !

    Merci d'avance pour votre aide !

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Ce que vous voulez faire est du traitement de texte, ce que ne sait pas faire SQL Server qui n'est pas conçu pour cela.
    Vous pouvez faire un applicatif utilisant des expressions régulières qui parcourait votre fichier puis insèrerait les données en base.

    @++

  3. #3
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Merci de votre réponse. Qu'entendez vous par expressions régulières ?

    Vous êtes sur que cela n'est pas possible via sql serveur ? Avec une procédure stockée qui parcours les différents enregitrements ?

    Ex.
    Lorsque l'on trouve la chaine de caractère 'Tiers : ' alors le champs tiers = les 5 caractères qui suivent.
    Le champ Solde 1 est entre les caractères 135 à 158 de la 7ème ligne qui suit 'Tiers :' ect...

    J'imagine que cela est possible non ?

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Vous pouvez effectivement via une procédure stockée en utilisant les fonctions de chaine exploiter votre champ.

    Pour l'avoir fait pour un client (intégration d'un email dans un champ de type texte et extraction des données permettant la mise à jour de certaines données dans une table cible ..), il faut cependant que votre fichier respecte un certain modèle auquel cas il sera difficile , voir impossible d'exploiter correctement vos données.

    ++

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    La forme est bien défini.
    Seulement j'aurais besoin de votre aide pour coder cela
    Je voudrai que la PS parcours ma table (un seul champs Data). A chaque fois qu'elle rencontre un enregistrement qui contient 'Tiers :%' (nous le nommerons (déclancheur) alors elle doit renvoyer les informations suivantes :
    - Tiers : Même enregistrement que le déclancheur = substring (Data, 9, 5)
    - Solde 1 : Enregistrement + 1 du déclencheur = substring (Data, 111, 22)
    - Solde 2 : Enregistrement + 1 du déclencheur = substring (Data, 135, 22)
    - Mvt 1 : Enregistrement + 2 du déclencheur = substring (Data, 111, 22)
    - Mvt 2 : Enregistrement + 2 du déclencheur = substring (Data, 135, 22)
    - Solde 3 : Enregistrement + 3 du déclencheur = substring (Data, 111, 22)
    - Solde 4 : Enregistrement + 3 du déclencheur = substring (Data, 135, 22)

    Je sais exactement ce que je veux faire mais je ne sais pas comment le faire !

    Je n'ai aucune idée de comment je peux coder cela ??

    Merci de votre aide à tous.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Désolé d'insister, mais quelqu'un a t-il une idée de comment réaliser cela ?

    Merci d'avance.

  7. #7
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonsoir,

    Avant d'aller plus loin qd même, est ce que le contenu de votre fichier est insérér tel quel dans un champ de type texte dans une table ? Sinon effectivement je ne pense pas que ce soit du côté sql que la solution existe...

    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
    AXXXXXXX/AAA*******************************************************************************************************************************************************************Page ****2
    *******************************GRAND BOOKK AUXXXX. DU *14/12/2008 AU 14/12/2008
    Tiers : 99999 ***********CCCC
    Compte collectif *: 00001 EUR 44444444 ***CAP RRRRR.APPPPPPPPP
    Compte auxiliaire : **********9555555 ****CCC LLLL ASSSSSSSS TTD ***************************Date dernier mouvement : 09/12/2008
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ¦Identif. ¦ *N° *¦ *Date ***¦ **Référence ***¦Libellé de l'écriture *************¦Code *¦Pr¦Code *¦Date *****¦ **************Montant ************************¦ Nouveau solde **********¦
    ¦ Lot ****¦écrit.¦Comptable ¦ *Lettr./Even. *¦ **********************************¦Opé **¦ *¦lettr.¦Traitement¦ ***Débit ***********************Crédit *******¦ *******************Sens ¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------------------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 13/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ *************44.774,46¦ ************************¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------+-----------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Total des mouvements *************¦ *****¦ *¦ *****¦ *********¦ ******************0,00¦ ******************0,00¦ ************************¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 14/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ *************44.774,46¦ ************************¦
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ***********************************************************************************************************************************************************************************../..
    **************************************************************************************************************************************************************************************************************************************************************LLLLLL ********************************************************************************Comptabilités *********************************************************************15/12/2008 11:24
    AXXXXXXX/AAA*******************************************************************************************************************************************************************Page ****2
    *******************************GRAND BOOKK AUXXXX. DU *14/12/2008 AU 14/12/2008
    Tiers : 988888 ***********CICI GRRRRR MMMM
    Compte collectif *: 00001 EUR 55555555 ***.APPPPPPPPP
    Compte auxiliaire : **********9555555 ****CCCC GGG MEMEMEC *********************************Date dernier mouvement : 01/12/2004
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ¦Identif. ¦ *N° *¦ *Date ***¦ **Référence ***¦Libellé de l'écriture *************¦Code *¦Pr¦Code *¦Date *****¦ **************Montant ************************¦ Nouveau solde **********¦
    ¦ Lot ****¦écrit.¦Comptable ¦ *Lettr./Even. *¦ **********************************¦Opé **¦ *¦lettr.¦Traitement¦ ***Débit ***********************Crédit *******¦ *******************Sens ¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------------------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 13/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ ******************0,00¦ ************************¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------+-----------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Total des mouvements *************¦ *****¦ *¦ *****¦ *********¦ ******************0,00¦ ******************0,00¦ ************************¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 14/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ ******************0,00¦ ************************¦
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ***********************************************************************************************************************************************************************************../..
    **************************************************************************************************************************************************************************************************************************************************************LLLLLL ********************************************************************************Comptabilités *********************************************************************15/12/2008 11:24

  8. #8
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonsoir,

    Pour faire cette requête, j'ai supposé que dans les exemples de données que vous nous avez procurés, chaque ligne de votre table s'arrête après 15/12/2008 11:24')

    Ainsi je me suis créé une table Data dont la structure est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE TbData
    (
    	Data VARCHAR(MAX)
    )
    GO
    En y insérant les données comme suit :

    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
    INSERT INTO TbData VALUES ('AXXXXXXX/AAA*******************************************************************************************************************************************************************Page ****2
    *******************************GRAND BOOKK AUXXXX. DU *14/12/2008 AU 14/12/2008
    Tiers : 99999 ***********CCCC
    Compte collectif *: 00001 EUR 44444444 ***CAP RRRRR.APPPPPPPPP
    Compte auxiliaire : **********9555555 ****CCC LLLL ASSSSSSSS TTD ***************************Date dernier mouvement : 09/12/2008
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ¦Identif. ¦ *N° *¦ *Date ***¦ **Référence ***¦Libellé de l''écriture *************¦Code *¦Pr¦Code *¦Date *****¦ **************Montant ************************¦ Nouveau solde **********¦
    ¦ Lot ****¦écrit.¦Comptable ¦ *Lettr./Even. *¦ **********************************¦Opé **¦ *¦lettr.¦Traitement¦ ***Débit ***********************Crédit *******¦ *******************Sens ¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------------------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 13/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ *************44.774,46¦ ************************¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------+-----------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Total des mouvements *************¦ *****¦ *¦ *****¦ *********¦ ******************0,00¦ ******************0,00¦ ************************¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 14/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ *************44.774,46¦ ************************¦
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ***********************************************************************************************************************************************************************************../..
    **************************************************************************************************************************************************************************************************************************************************************LLLLLL ********************************************************************************Comptabilités *********************************************************************15/12/2008 11:24')
     
    INSERT INTO TbData VALUES ('AXXXXXXX/AAA*******************************************************************************************************************************************************************Page ****2
    *******************************GRAND BOOKK AUXXXX. DU *14/12/2008 AU 14/12/2008
    Tiers : 988888 ***********CICI GRRRRR MMMM
    Compte collectif *: 00001 EUR 55555555 ***.APPPPPPPPP
    Compte auxiliaire : **********9555555 ****CCCC GGG MEMEMEC *********************************Date dernier mouvement : 01/12/2004
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ¦Identif. ¦ *N° *¦ *Date ***¦ **Référence ***¦Libellé de l''écriture *************¦Code *¦Pr¦Code *¦Date *****¦ **************Montant ************************¦ Nouveau solde **********¦
    ¦ Lot ****¦écrit.¦Comptable ¦ *Lettr./Even. *¦ **********************************¦Opé **¦ *¦lettr.¦Traitement¦ ***Débit ***********************Crédit *******¦ *******************Sens ¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------------------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 13/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ ******************0,00¦ ************************¦
    +---------+------+----------+----------------+-----------------------------------+------+--+------+----------+-----------------------+-----------------------+-------------------------¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Total des mouvements *************¦ *****¦ *¦ *****¦ *********¦ ******************0,00¦ ******************0,00¦ ************************¦
    ¦ ********¦ *****¦ *********¦ ***************¦ Solde au 14/12/2008 **************¦ *****¦ *¦ *****¦ *********¦ **********************¦ ******************0,00¦ ************************¦
    +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    ***********************************************************************************************************************************************************************************../..
    **************************************************************************************************************************************************************************************************************************************************************LLLLLL ********************************************************************************Comptabilités *********************************************************************15/12/2008 11:24')
    Voici le code :

    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
    SELECT CAST(Tiers AS INT) Tiers,
    		CAST(Solde1 AS NUMERIC(10,2)) Solde1,
    		CAST(Solde2 AS NUMERIC(10,2)) Solde2,
    		CAST(Mvt1 AS NUMERIC(10,2)) Mvt1,
    		CAST(Mvt2 AS NUMERIC(10,2)) Mvt2
    FROM
    (
    	SELECT RTRIM(LTRIM(Tiers)) Tiers,
    			REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Solde1)), '*', ''), '¦', ''), '.', ''), ',', '.') Solde1,
    			REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Solde2)), '*', ''), '¦', ''), '.', ''), ',', '.') Solde2,
    			REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Mvt1)), '*', ''), '¦', ''), '.', ''), ',', '.') Mvt1,
    			REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(LTRIM(Mvt2)), '*', ''), '¦', ''), '.', ''), ',', '.') Mvt2
    	FROM
    	(
    		SELECT SUBSTRING(Data, CHARINDEX('Tiers : ', Data) + LEN('Tiers : '), 7) Tiers,
    				SUBSTRING(Data, CHARINDEX('Solde au ', Data) + LEN('Solde au ') + 11, 117) Solde1,
    				SUBSTRING(Data, CHARINDEX('Solde au ', Data, CHARINDEX('Solde au ', Data)) + LEN('Solde au ') + 11, 117) Solde2,
    				SUBSTRING(Data, CHARINDEX('Total des mouvements ', Data) + LEN('Total des mouvements '), 66) Mvt1,
    				SUBSTRING(Data, CHARINDEX('Total des mouvements ', Data) + LEN('Total des mouvements ') + 66, 49) Mvt2
    		FROM dbo.TbData
    	) SOUS_CHAINE
    ) VALEURS_CHAINE
    Pour clarifier, j'ai utilisé des tables dérivées.
    La fonction de chaîne CHARINDEX permet de rechercher la première occurrence d'un caractère ou d'une expression chaîne dans une chaîne, à partir d'une position ou pas (3e paramètre).

    J'ai du remplacer les points des nombres par une chaîne vide et les virgules par des point pour pouvoir les transtyper en type numérique.

    Je vous ai parlé des expressions régulières, dont vous trouverez une documentation ici.
    C'est un mécanisme plus puissant et plus souple que le code que je viens de vous donner, que je ne vous conseille pas d'utiliser si vous recherchez les performances.

    Bon courage,

    @++

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 849
    Points : 52 982
    Points
    52 982
    Billets dans le blog
    6
    Par défaut
    Ce que vous voulez faire c'est de la cosmétique...
    A lire sur le sujet :
    http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9

    Il est possible, mais stupide de vouloir faire cela sur un SGBDR. Sauf à vouloir explicitement pourrir les performances de votre application. En règle générale ou essaye d'éviter le plus possible l'usage des curseur qui sont les objets les plus lents et les plus consommateur de ressources !

    A +

  10. #10
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 55
    Points
    55
    Par défaut
    Vraiment merci à tous pour votre aide !

    J'ai trouver une solution en créant une table temporaire avec un compteur autoincrémenté. je ne passe donc pas par un curseur.

    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
    select IDENTITY(int, 1, 1) As Clef, Data into #TMP from VBank
     
    select
    Substring (T.Data, 9, 5) As Tiers,
    Substring (S1.Data, 111, 22) As Solde1,
    Substring (S1.Data, 135, 22) As Solde2,
    Substring (M.Data, 111, 22) As Mvt1,
    Substring (M.Data, 135, 22) As Mvt2,
    Substring (S2.Data, 111, 22) As Solde3,
    Substring (S2.Data, 135, 22) As Solde4
    from #TMP T
    INNER JOIN #TMP S1 on T.Clef + 8 = S1.Clef 
    INNER JOIN #TMP M on T.Clef + 10 = M.Clef 
    INNER JOIN #TMP S2 on T.Clef + 11 = S2.Clef
    where T.Data like 'Tiers : %' and T.clef > 15
    Je ne sais pas pourquoi je n'y ai pas pensé tout de suite. C'était la solution la plus simple !

    Merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Demande d'aide pour la réalisation d'un petit jeu video
    Par Frank1010 dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 08/09/2009, 07h59
  2. demande un peu d'aide pour la réalisation d'un macro.
    Par bedoch dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/05/2009, 10h30
  3. [MySQL] besoin d'aide pour jointure à réaliser
    Par nebil dans le forum PHP & Base de données
    Réponses: 28
    Dernier message: 17/07/2008, 15h15
  4. Aide pour la réalisation d'une application
    Par étoile de mer dans le forum Débuter
    Réponses: 3
    Dernier message: 31/05/2008, 15h07
  5. aide pour la réalisation de compteur
    Par dark_vidor dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 23/10/2006, 23h06

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