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

Requêtes et SQL. Discussion :

Problème de point-virgule absent


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut Problème de point-virgule absent
    Salut,

    Je suis en train de générer des numéros dans une table pour des données importées depuis une ancienne base.
    J'utilise une requête INSERT INTO passée en Docmd.runSQL pour insérer le numéro une fois qu'il est calculé.

    Mais bizarrement, j'ai un message d'erreur indiquant qu'il manque un point-virgule à la fin de la requête (alors qu'il y en a bien un).

    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
    23
    24
    25
    26
    27
     
    ublic Sub creerNumInscription()
        'Créé un numéro d'inscription à partir de la date de première candidature
        Dim strsql As String, strSQL2 As String, tmpNumInscription As String, rst As DAO.Recordset, bd As DAO.Database, rst2 As DAO.Recordset
        Set bd = CurrentDb
        strsql = "SELECT P.numPErsonne,C.dateCandidature FROM tPErsonne P INNER JOIN tCandidature C ON P.numPErsonne=C.numPersonne ORDER BY C.dateCandidature ASC"
        Set rst = bd.OpenRecordset(strsql)
        rst.MoveFirst
        While Not rst.EOF
            tmpNumInscription = Year(rst("datecandidature"))
            Set rst2 = bd.OpenRecordset("SELECT numInscription FROM tPersonne WHERE INSTR(numInscription," & tmpNumInscription & ")>0;")
            If rst2.RecordCount > 0 Then
                rst2.MoveLast
                tmpNumInscription = CStr(rst2("numInscription") + 1)
            Else
                tmpNumInscription = tmpNumInscription & "0001"
            End If
            Debug.Print tmpNumInscription
            strSQL2 = "INSERT INTO tPersonne(numInscription) VALUES('" & tmpNumInscription & "') WHERE numPersonne=" & rst("numPersonne") & ";"
            Debug.Print strSQL2
            DoCmd.RunSQL strSQL2
            rst.MoveNext
        Wend
        Set rst2 = Nothing
        Set rst = Nothing
        Set bd = Nothing
    End Sub
    Le débogueur s'arrête sur l'instruction docmd.runsql strsql2 en indiquant qu'il manque un point-virgule.

    Pourtant, ce point-virgule existe, j'ai vérifié avec un debug.print.
    Voici le résultat de la trace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    call creernuminscription
    19870001
    INSERT INTO tPersonne(numInscription) VALUES('19870001') WHERE numPersonne=195;
    Que faire ?

  2. #2
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Bjr

    N'as-tu pas oublié le ; à la fin de cet endroit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        strsql = "SELECT P.numPErsonne,C.dateCandidature FROM tPErsonne P INNER JOIN tCandidature C ON P.numPErsonne=C.numPersonne ORDER BY C.dateCandidature ASC"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par Gabout
    Bjr

    N'as-tu pas oublié le ; à la fin de cet endroit ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        strsql = "SELECT P.numPErsonne,C.dateCandidature FROM tPErsonne P INNER JOIN tCandidature C ON P.numPErsonne=C.numPersonne ORDER BY C.dateCandidature ASC"
    Salut,

    J'ai ajouté depuis des ; à la fin de chacun pour être plus sûr, mais il s'arrêtet toujours sur strSQL2...

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Es tu sûr que numInscription est de type texte ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/03/2009, 12h53
  2. [ODBC] Point-virgule absent à la fin de l'instruction SQL
    Par loulitta dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/06/2008, 10h55
  3. [access 2003] erreur d'execution 3137, point virgule absent
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/02/2008, 08h41
  4. un problème de point virgule ?
    Par tosna dans le forum Débuter
    Réponses: 7
    Dernier message: 30/05/2007, 16h40
  5. [FLASH MX] Problème de point virgule
    Par noarno dans le forum Flash
    Réponses: 4
    Dernier message: 20/07/2004, 15h24

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