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

WinDev Discussion :

Récupérer le dernier auto incrément sur base SQL Server [Etats & Requêtes]


Sujet :

WinDev

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    mai 2005
    Messages
    684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : mai 2005
    Messages : 684
    Points : 390
    Points
    390
    Par défaut Récupérer le dernier auto incrément sur base SQL Server
    Bonjour,

    je me heurte à un petit soucis où je dois connaitre la dernière clé (champs de type auto-incrément) de ma table bl qui tourne en environnement SQL Server.

    J'ai trouvé cet article => http://blog.yvoz.net/2010/06/sql-val...ere-insertion/

    Malheureusement je ne sais pas comment récupérer la valeur, voici le code que j'exécute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sql = "SELECT IDENT_CURRENT('bl') AS cle"
    Rs est une source de données
    SI PAS HExécuteRequêteSQL(Rs,Cnx,hRequêteDéfaut ,Sql) ALORS
         Erreur("Erreur d'initialisation de la requête"+RC+HErreurInfo()+ RC + RC + Sql)
         RETOUR 
    FIN
     
    Info(Rs.cle)
    Erreur dans le code SQL de la requête <Rs>. Initialisation de la requete impossible. Mot inattendu.

    Comment vous faîtes vous ??
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur freelance
    Inscrit en
    juillet 2002
    Messages
    2 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : juillet 2002
    Messages : 2 371
    Points : 4 763
    Points
    4 763
    Par défaut
    Bonjour

    Il ne faut surtout pas utiliser hRequêteDéfaut, mais hRequêteSansCorrection sinon le code SQL est vérifié par Windev et est donc limité à ce que sait faire windev dans ce domaine (...).

    Avec hRequêteSansCorrection la requête est envoyée telle quelle et si la syntaxe est connue du SGBD ça passera

    Par contre il faut que tu fasses un HLitPremier pour te positionner sur le premier enregistrement retourné par ta requête (même s'il n'y a qu'une ligne).
    Je t'invite à regarder l'aide de HExécuteRequêteSQL

  3. #3
    Membre éprouvé

    Développeur informatique
    Inscrit en
    mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Vrai pour hRequêteSansCorrection et surtout quand tu utilise ceci tu dois penser à "quoter" tes noms de fichiers "fichier" du coup tu dois utiliser la fonction Caract(34) car on ne peut pas echapper la double quote dans une chaine.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur freelance
    Inscrit en
    juillet 2002
    Messages
    2 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : juillet 2002
    Messages : 2 371
    Points : 4 763
    Points
    4 763
    Par défaut
    Citation Envoyé par Atsibat Voir le message
    ... tu dois penser à "quoter" tes noms de fichiers "fichier"...
    Tu peux expliquer ce que tu veux dire par là ?

    Concernant les double quote dans les chaînes on peut tout simplement les doubler ou utiliser les []

    Je trouve ça peu lisible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sTest = "avec ""double quote"" !"
    Là c'est mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sTest = [
    avec "double quote"
    ]

  5. #5
    Membre éprouvé

    Développeur informatique
    Inscrit en
    mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Excellent !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sTest = [
    avec "double quote"
    ]
    je n'avais jamais utilisé cette notation, ben pratique dans certains cas.

    Pour la notation "avec ""double quote""" je suis d'accord c'est assez moche à lire

    En fait je me sert souvent d'une procédure qui rajoute automatiquement les " suivant le type de connexion que j'appelle et dans ce cas j'encadre les noms de fichiers avec Caract(34)

    En fait j'ai un tableau des noms de fichiers et des noms de rubriques et si je trouve ce mot dans ma requête il me rajoute les " et dans ce cas la seule notation qui passe en concaténation de chaine est bien Caract(34)

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtSQL= "select * from article"
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtSQL="select * from "+Caract(34)+"article"+Caract(34)
    mais merci pour le truc des []

  6. #6
    Membre averti
    Homme Profil pro
    Développeur
    Inscrit en
    septembre 2007
    Messages
    497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : septembre 2007
    Messages : 497
    Points : 330
    Points
    330
    Par défaut
    Citation Envoyé par bvadam Voir le message
    Bonjour,

    je me heurte à un petit soucis où je dois connaitre la dernière clé (champs de type auto-incrément) de ma table bl qui tourne en environnement SQL Server.

    J'ai trouvé cet article => http://blog.yvoz.net/2010/06/sql-val...ere-insertion/
    (...)
    Hello,

    Je suis l'auteur de http://blog.yvoz.net/.
    J’espère que ça t'a été utile.
    Attention, les fonctions données dans cet article sont des fonctions propres à SQL Server donc il y a peu de chance pour qu'elles soient reconnues par windev ou tout autre langage qui interprète tes requêtes.

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur freelance
    Inscrit en
    juillet 2002
    Messages
    2 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur freelance

    Informations forums :
    Inscription : juillet 2002
    Messages : 2 371
    Points : 4 763
    Points
    4 763
    Par défaut
    Bonjour
    Citation Envoyé par xian21 Voir le message
    Attention, les fonctions données dans cet article sont des fonctions propres à SQL Server donc il y a peu de chance pour qu'elles soient reconnues par windev ou tout autre langage qui interprète tes requêtes.
    Il y a plusieurs façons (trop ?) de faire pour exécuter des requêtes avec Windev. On peut notamment lui demander d'exécuter des requêtes sans les interpréter, donc il envoie le code tel quel et il suffit de récupérer le résultat.
    Ceci ce fait soit avec SQLExec, soit avec HExecuteRequeteSQL et le paramètre hRequeteSansCorrection

    Pour ma part j'utilise SELECT IDENT_CURRENT('matable');

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 21/05/2015, 19h11
  2. Connexion en VB sur base SQL Server 2005
    Par john.fender dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/01/2007, 12h20
  3. Recherche à la google sur base SQL SERVER
    Par seb.49 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 09/08/2006, 19h12
  4. application access sur base sql server
    Par souma dans le forum Access
    Réponses: 1
    Dernier message: 05/05/2006, 10h11
  5. Requete SQL sur base SQL Server VB6
    Par Yanmeunier dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 25/11/2005, 13h30

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