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

Access Discussion :

Mise à jour des tables liées + TIMESTAMP


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Points : 34
    Points
    34
    Par défaut Mise à jour des tables liées + TIMESTAMP
    Bonjour à tous !

    Je suis sous Access 2003, Mysql 4.1.9, et j'ai installé le driver ODBC 3.51 pour interroger le serveur avec Access.

    J'ai suivi toute la procédure de la page
    http://dev.mysql.com/doc/mysql/en/deleted-problem.html
    pour eviter le #Deleted et je n'ai plus ce problème.

    Mais pour éviter ce #Supprimé donc et utiliser des tables attachées il faut ajouter un champ TIMESTAMP dans chaque table liée.
    Avec ce nouveau champ je ne peux plus mettre à jour ou supprimer un enregistrement mais seulement en créer. J'ai bien les privilèges qu'il faut dans le lien odbc et il est possible de mettre à jour un enregistrement par phpmyadmin (pour Timestamp il mettra now() peu importe la valeur renseignée).

    [QUESTION]
    Je reçois l'erreur : " ODBC- Echec de mise à jour sur une table "blabla" attachée. Types de donées SQL hors limites" sous entendu : Je ne peux pas mettre à jour cette ligne par ce que le champ TIMESTAMP est déja renseigné (du coté Access) d'une date ulterieure et le serveur attend un NULL ou un now() dans sa requète d'update.
    [/QUESTION]


    J'ai consulté FAQs et forums mais je capitule alors Merci d'avoir pris le temps de me lire et éventuellement de me répondre !

    Greg

  2. #2
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Pq ne pas utilser des outils dédié à mysql pour accéder ta table ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Je ne comprends pas la réponse désolé.

    J'utilise Access pour interroger mysql et cela ne pose apparement pas de problème aux autres. Chez moi je ne peux que créer des enregistrements pas les modifier ou les supprimer bien que j'ai les privilèges, ce qui est un peu limitant.

    Merci à bientôt.

  4. #4
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Le réponse était qu'il existe des produits spécifiques à MySql pour faire des select, des insert, ...

    Des produit du genre phpMyAdmin, MySql control center et bien d'autres.

    J'ai essayé de faire des pages asp avec l'odbc de mysql et j'ai eu pas mal de problème. Du coup on a fait le projet avec php.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Points : 34
    Points
    34
    Par défaut Re
    Hello

    Mais je les utilise ! phpmyAdmin ou en console direct mais je veux faire une interface : des formulaires etc... faire un appli VB ou en C me prendrait du temps alors qu'access est fait pour faire une interface graphique utilisateur vite fait bien fait pour interroger une base de donnée, voila odbc permet de travailler sur autre chose que sur un .mdb, c'est une possibilité je la prends et ce n'est deja plus trop le sujet !!!
    Mais n'hesitez pas à faire des remarques pour autant !

    En fait je cherche quelqu'un qui fait la meme chose ( c'ad access vers mysql grace à myODBC) alors il a du aussi creer des colones TIMESTAMP pour les tables attachées. Je ne trouve pas de post qui parle de problème de mise à jour des enregistrements dues à ces champs TIMESTAMP sur le forum anglais de mysql alors voila !

    Salut Jab et aux autres

  6. #6
    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 : 40
    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
    En fait je cherche quelqu'un qui fait la meme chose ( c'ad access vers mysql grace à myODBC) alors il a du aussi creer des colones TIMESTAMP pour les tables attachées. Je ne trouve pas de post qui parle de problème de mise à jour des enregistrements dues à ces champs TIMESTAMP sur le forum anglais de mysql alors voila !

    Non jamais

    J'ai pas poussé bien loin mais le peut que j'ai testé semblait fonctionner

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Points : 34
    Points
    34
    Par défaut
    Merci de ton aide.

    Au premier abord cela semblait aussi fonctionner mais en créant un nouvel enregistrement > tous mes champs de cet enregistrement=#Supprimé > Google > erreur connue chez mysql.com > mise à jour Jet et Acces data Componets > des champs TimeSatmp dans chaque tables liée > et l'option Return Matching rows ... et là plus de #Supprimé mais impossible de mettre à jour ou de supprimer) un enregistrement en table ou dans un formulaire (voir + haut)...alors qu'apparement personne n'a ce problème après ces patchs...

    sinon sans ce TIMESTAMP c'est possible de mettre à jour (ou de supprimer) mais il faut faire une macro Actualiser au lieu d'appuyer sur Entrée (ce qui est quand meme plus logique dans un formulaire)

    Merci encore à bientôt !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 35
    Points : 34
    Points
    34
    Par défaut Bug de myodbc ?
    Hello à tous,

    J'ai finalement pris rdv avec un prof de la Fac de Jussieu avec lequel j'ai constaté ce bug décrit ici http://bugs.mysql.com/bug.php?id=9211.

    Ne trouvant pas plus de documentation ni de solution, la seule façon dont nous avons pu resoudre cette impossibilité de mettre à jour fut de changer le driver . Je suis donc passé de la version de myodbc 3.51.11-2 à 3.51.10 et là plus de problème. Donc si quelqu'un arrive à connecter Access sur Mysql avec un champ Timestamp dans la table concernée sans problème avec la derniere version du driver myodbc qu'il n'hesite pas à me MP ! :o

    Bon codage à tous et à bientôt !

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Hello!
    J'ai aussi le problème récurant du #Supprimé# , et les champs TIMESTAMP n'ont pas arrangés le problème pour mon cas !
    (Mysql 4 et Access 2002).
    J'ai donc bricolé qqch:
    Le problème est percu avec les champs en auto incrément, on constate qu'en le remplissant manuellement, pas de problème, mais ce n'est bien sure pas le but...

    La seule parade dans mon cas c'est de récupérer le No du dernier enregistrement lors de la validation du nouvel enregistrement:
    Pour ne pas avoir à tapper trops de code dans chaque formulaire, j'ai créé une fonction que j'ai placée dans une module:

    Function LastINC(Table As String, ChampsINC As String) As Long
    ' On recherche la dernière entrée de la table donnée

    ' On vérifie que les variables sont renseignées
    If (Nz(Table) = "") Or (Nz(ChampsINC) = "") Then
    LastINC = 0
    Exit Function
    End If

    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim i, q As Long ' Compteur
    Dim lngAinc As Long
    Dim strAinc As String

    ' BDD
    Set db = CurrentDb()

    Set rst = db.OpenRecordset(Table)
    If Not rst.EOF Then
    rst.MoveLast
    i = rst.RecordCount
    rst.MoveFirst
    rst.Move (i - 1)
    lngAinc = rst(ChampsINC)
    rst.Close
    End If
    Set rst = Nothing

    LastINC = lngAinc

    ' libération
    Set db = Nothing

    End Function

    Suite dans le prochain post.....

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    .....

    Puis, dans le formulaire, un événement avant insertion appelle la fonction:

    Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me.Id_user = LastINC(Me.RecordSource, "Id_user") + 1
    End Sub


    Voilà, chez moi ca marche..... avec une station !
    Je n'ai aucune idée de ce que ca peut donner sur un réseau, lorsque plusieurs utilisateur veulent insérer une nouvelle entrée sur la même table..

    PS: Ne pas oublier d'inclure la librairie DAO (3.6 dans mon cas) dans les références.

  11. #11
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    J'ai eu le même problème avec mon application sous A97 lors de la création et de la manipulation d'une nouvelle fiche ça afiche les fameux #supprimé la parade trouvé est la meme que la tienne presque j'ai fait de sorte qu' à chaque manipulation sur une nouvelle fiche je simule la fermeture et ouvrerture au dernier enregistrement concerné c'est peut être bête mais ça à l'air d'etre la seul possibilité j'ai tout essayé Poster ma question et ailleurs et le TIMESTAMP ne fonctionne pas vraiment peut etre avec d'autres version MySql mais du moment la clé est généré exterieurement à Access ,ce dernier affiche sa faiblesse à ce niveau là .
    et on remarque que les deux bases ne sont pas tout à fait Synchrone .

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2004
    Messages : 74
    Points : 56
    Points
    56
    Par défaut
    Bonjour scandyna,

    Je suis bien contente d'être tombé sur ce post, j'ai bien compris ta fonction, mais pourquoi ne pas faire cela:
    1- Ouverture du recordset et ajout de l'enregistrement
    2- Fermeture
    3- Réouverture et récupération du numéro auto le plus grand

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
          Set rst = db.OpenRecordset("Employeur") 
           rst.AddNew
           rst("nomCompagnieEmployeur") = "Compagnie1"
           rst.update
           rst.Close
     
           Set rst = db.OpenRecordset("SELECT max(idEmployeur) AS idEmployeurMax FROM Employeur")
           idemp = rst("idEmployeurMax")
    Ceci est une question pour savoir si ton code va mieux gérer la concurrence que ce que je viens de faire?

    Merci!!

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

Discussions similaires

  1. Mettre à jour des tables liées entre elles
    Par Abdelkabir dans le forum VB.NET
    Réponses: 3
    Dernier message: 13/08/2007, 15h49
  2. problème de mise à jour des tables (10g)
    Par bad lieutenant dans le forum Administration
    Réponses: 7
    Dernier message: 26/04/2007, 17h21
  3. Réponses: 2
    Dernier message: 24/02/2007, 20h14
  4. Erreur de mise à jour de table liée
    Par tom_ibonia dans le forum Access
    Réponses: 1
    Dernier message: 19/10/2006, 10h52
  5. Programmer la mise à jour des tables attachées
    Par _developpeur_ dans le forum Access
    Réponses: 3
    Dernier message: 02/12/2005, 20h29

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