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

ASP Discussion :

Problème d'insertion dans une table Access


Sujet :

ASP

  1. #1
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut Problème d'insertion dans une table Access
    Quand j'inscrit dans ma base de donnée Access à partir de mon fichier .asp avec plusieur utilisateur en même temps sa m'affiche un message d'erreur.
    Est-ce que quelqu'un connait le moyen de récupérer ce message d'erreur et de dire que si j'ai cette erreur j'attend un peu et je réenvoie ma requete.
    Merci d'avance.

    P.S. voici le message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Microsoft OLE DB Provider for ODBC Drivers error '80004005'
     
    [Microsoft][ODBC Microsoft Access Driver] Could not update; currently locked by user 'admin' on machine 'BNV1046'
    enquete.asp, line 44 (correspond à ma ligne d'insertion dans la table).

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    salut,

    Il ne doit y avoir qu'un seul utilisateur connecté : le serveur web.

    alors soit, tu as créé et ouver un objet connexion que tu n'as pas fermé, soit tu as ouvert ta base access sur ton poste...

  3. #3
    Membre régulier Avatar de vanou
    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 160
    Points : 110
    Points
    110
    Par défaut
    Affiche ton code qu'on voit s'il y a une pb qq part!

  4. #4
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Bin justement le problème c'est que quand je lance cette page le fichier .ldb reste même une fois que j'ai "fermer" ma connexion à la base.
    Voici ma fonction de connexion:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function connexion_bd_access (nom_bd_access)  '/////////connexion à une base de données Access//////
      DSN_BASE = "DBQ="& Server.Mappath(nom_bd_access) &";Driver={Microsoft Access Driver (*.mdb)};Driverld=25"
      Set Conn = Server.CreateObject("ADODB.Connection")
       Conn.Open DSN_BASE
      Set RS = Server.CreateObject("ADODB.Recordset")
      connexion_bd_access = RS
    end function
    (Apparement sa fonctionne bien).

    Voici ma fonction de déconnexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function deconnection  '//////////fonction de déconnection 
    if(RS.state = 1 )then RS.close
    conn.close
    set RS = nothing
    set conn = nothing
    end function
    Juste après la déclarationde mes variable tout en haut du programme voici l'appel de la fonction de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connexion_bd_access("enquete.mdb")
    Et tout en bas du programme voici l'appel de ma fonction de déconnexion :
    Where is the problem???
    Peu être que sa viens du fait que mes fonction sont dans un fichier à part (function.asp)?
    Merci d'avance.

  5. #5
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Bon bin j'ai régler le problème pour le fichier .ldb.
    Pendant mes essai j'avais lancer ma page qui ce connecte à ma base alors que celle ci étais deja ouverte et ça m'avais fait des éspèces de duplicatas dans un fichier temp.
    J'ai donc copier ma base dans un dossier local. J'ai supprimer la base sur le réseau. J'ai actualisé et j'ai recopier ma base sur le réseau.
    Et maintenant quand je lance ma page et mes autres pages ça ne me créer pas un fichier.ldb (en tout cas il reste pas ouvert). (oh joie!!!)

    Je referais les testes avec plusieur utilisateurs qui lancent l'enquête en même temps pour voir si ça venais de là et je vous tient au courant.
    Merci!!!!!

  6. #6
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Bon bin j'ai bien fait les tests et ça plante quand même.
    Certain il ont le message d'erreur citer plus haut, d'autre ont au bout d'un long moment de chargement un erreur 'script timed out" et enfin pour certain ça fonctionne et ça rentre les données dans la base de données.
    J'avous que là je sais pas.
    Si quelqu'un voit comment régler le problème?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    367
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 367
    Points : 414
    Points
    414
    Par défaut
    - Est ce que les utlisateurs saisissent la meme information ? fais tu une verification des données saisies ?
    - script Timed out, te signale que le code asp n'a pas pu s'executer dans le delais maximum fixé, ca ressemble a une routine qui tourne sans fin, un traitement trop trop long etc..

    fais des response.write pour debuger, affiche le contenu de la chaine SQL que tu inseres...

  8. #8
    Membre expérimenté
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Points : 1 316
    Points
    1 316
    Billets dans le blog
    1
    Par défaut
    Yop!

    As-tu déjà essayé d'utiliser Oledb avec le Jet engine?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    function connexion_bd_access (nom_bd_access)  
      DSN_BASE = "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & server.Mappath(nom_bd_access)
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open DSN_BASE
      Set RS = Server.CreateObject("ADODB.Recordset")
      connexion_bd_access = RS
    end function
    Ryan
    Mach 2, au moins...

  9. #9
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Salut,
    Il est EXTREMEMENT important que les utilisateurs aient de privilège "modifier" sur la base. Est-ce le cas?
    A+

  10. #10
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Merci à tous! !!!
    J'ai remplacer avec Oledb et j'attend qu'il y ai plus de gens au bureau pour tester.
    Pour ce qui est des utilisateur, même si ils sont connectés avec leur login normallement c'est l'utilisateur IUSR_ qui ce connect à la BDD non?
    Lui il à tous les droits!!!

  11. #11
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Bon et bien j'ai tester avec deux utilisateur (différents) qui ce connectent en même temps et j'ai le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Microsoft JET Database Engine error '80004005' 
     
    Could not update; currently locked. 
     
    /isy/formulaires/xxflboul/enquete/enquete.asp, line 43
    La ligne 43 correspond à ma ligne d'insertion dans la BDD


    Faudrait peut-être que je récupère si il y à un message d'erreur et dans ce cas là renvoyer la requête au bout d'un certain temps non?

  12. #12
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Citation Envoyé par tribaleur
    Pour ce qui est des utilisateur, même si ils sont connectés avec leur login normallement c'est l'utilisateur IUSR_ qui ce connect à la BDD non?
    Non, si tu implémentes l'authentification c'est le login de l'internaute qui est utilisé. Sinon, à quoi ça sert?
    A+

  13. #13
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    merci Immobilis pour cette info.

    P.S vu que ce sont des logins, de connection sur les PC, de réseau intranet c'est la même chose??

  14. #14
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    Si l'authentification sur les ordinateurs se fait sur les domaines OUI. Si c'est une authentification locale NON.

  15. #15
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Bon bin normallement c'est sur le domaine...
    ...

  16. #16
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Bon bin personne ne sais comment savoir (en ASP) si une fois que la page est lancer si il y a une erreur ou si lors de l'execution d'une requête il y a eu une erreur???

  17. #17
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    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
     
    Set conn = server.createobjet("ADODB.Connection")
    on error resume next
     
    conn.begintrans
     
    (TRAITEMENT SQL)
     
    If err.mumber = 0 THEN
         conn.committrans
         response.write("Requêtes executées sans erreur.")
    ELSE
         conn.RollBackTrans
         response.write("Requêtes non executées. Une ou plusieurs erreurs ses ont produites : " & err.description)
    END IF

  18. #18
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Merci immobilis.

    Cependant j'ai une question.

    A quoi sert conn. begintrans et conn.committrans?

  19. #19
    Expert éminent
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Points : 9 506
    Points
    9 506
    Par défaut
    + transaction

  20. #20
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Bon voila la suite de mon problème...

    J'ai une boucle while qui me permet d'insérer dans ma table la réponse à toutes mes questions.
    Cependant si l'une d'elle ne fonctionne pas (ce qui est le cas quand plusieurs utilisateurs répondent en même temps) on n'inscrit pas sa réponse dans la table T_reponse et donc après sa me met en l'air mes statistiques!!!

    Je voudrait donc que si une des réponses ne peut pas être inséré dans la table on ne rentre pas les autres.

    J'ai essaier d'enregistrer dans une tables provisoir et que si tout ce passe bien de réenregistrer dans la vrais table mais ça fonctionne pas ça me met "time out".

    Voici mon 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    on error resume next
        conn.begintrans    
        mysql = "select num_quest as nb from T_question"
        if(RS.state = 1 )then RS.close
        RS.open mysql, conn     
     
        dat_actuel=year(now)                                        '///////récupère la date actuel sous le format aaaa//////
     
        while not RS.eof
         obj=request.form("commentaire"&RS("nb")&"")
         obj=replace(obj,"'","''")
         mysql = "insert into T_reponse_bis (date_rep,num_quest,reponse,commentaire) values ('"&dat_actuel&"','"&RS("nb")&"','"&request.form("question"&RS("nb")&"")&"','"&obj&"')"
         conn.execute mysql
         if err.mumber = 0 then
           conn.committrans
           RS.movenext
         else
           RS.eof=true
         end if     
        wend
     
        if err.mumber = 0 then
          mysql = "select num_quest as nb from T_question"
          if(RS.state = 1 )then RS.close
          RS.open mysql, conn     
     
          dat_actuel=year(now)                                        '///////récupère la date actuel sous le format aaaa//////
     
          while not RS.eof
           obj=request.form("commentaire"&RS("nb")&"")
           obj=replace(obj,"'","''")
           mysql = "insert into T_reponse (date_rep,num_quest,reponse,commentaire) values ('"&dat_actuel&"','"&RS("nb")&"','"&request.form("question"&RS("nb")&"")&"','"&obj&"')"
           conn.execute mysql
           RS.movenext
          wend
     
          mysql = "delete  from T_response_bis"
          if(RS.state = 1 )then RS.close
          conn.execute mysql
        else
          response.write"Requêtes non executées. Une ou plusieurs erreurs se sont produites"
        end if
     
        on error goto 0
     
        response.write "Merci d'avoir répondu"
    Savez vous où est le problème???
    Merci d'avance!!!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [C#] Insertion dans une table Access
    Par th3r1ddl3r dans le forum Windows Forms
    Réponses: 6
    Dernier message: 02/10/2006, 13h24
  2. [Conception] Problème avec INSERT dans une TABLE
    Par dunbar dans le forum PHP & Base de données
    Réponses: 26
    Dernier message: 20/07/2006, 12h56
  3. Problème d'insertion dans une table filtrée.
    Par charlie289 dans le forum Access
    Réponses: 5
    Dernier message: 20/06/2006, 16h45
  4. [MySQL] Problème d'insertion dans une table
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/03/2006, 17h43
  5. Problème d'insertion dans une table MYSQL
    Par greg69 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/10/2005, 11h34

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