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

Macros et VBA Excel Discussion :

Connection DB access fonctionne mal. [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut Connection DB access fonctionne mal.
    Bonjour,

    Je me tourne vers vous parce que je suis tombé sur un colle (du moins pour moi).

    Voila l'idée: j'ouvre une connexion sur ma base de données access, j'ouvre mon fichier excel contenant soit des nouvelles lignes, soit des lignes à mettre à jour, et je traite le bazar.

    La macro que j'ai écrite fonctionne plutôt bien, sur 25 fichiers de >50k lignes, 23 fichier fonctionne correctement.

    Par contre, sur 2 fichier, j'ai des lignes qui causent une erreur:
    Erreur d’exécution '-2147467259 (80004005)':
    Impossible d'ouvrir la base de données « ». Ce n'est peut être pas un base de données que votre application reconnait ou le fichier est peut être endommagé.
    Ce problème apparait sur la ligne 20833, la ligne 20911, etc... pour vous dire que ça sort vraiment de nulle part. J'ai vérifié et revérifié les lignes en questions, elles fonctionne. J'ai copié collé la requête qui plante dans access, et ça me sort mon résultat comme il faut. j'ai essayé de mettre la ligne en question au début du fichier, et elle plante toujours.

    J'ai écrit un error handler qui check la description de l'erreur et fait "con.close... con.open" quand il trouve cette fameuse erreur... ça n'a rien résolu.

    J'ai passé 2h30 sur google, et pas moyen de trouver quoi que ce soit qui peut m'aider...

    Le code en lui même doit être juste, et honnêtement il est très compliqué donc je vous épargne d'avoir à le lire; voici ce que j'ai pour la connexion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CHEM_DB = main.Range("B1")
    CHEM_SRC = main.Range("B2")
     
    'ouvrir la connexion
    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & CHEM_DB & "; Persist Security Info=False;"
    con.Open
    Un exemple de requete qui plante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update `VIQMEL` set `VIQMEL`.`Fact date`='01/07/2011' where `VIQMEL`.`Notification`=306585712;
    et une qui marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update `VIQMEL` set `VIQMEL`.`Fact date`='INCORRECT' where `VIQMEL`.`Notification`=306650456;
    C'est l'erreur que je ne comprends pas, on dirait que la connexion cafouille, mais pourquoi sur ces lignes, et pourquoi je ne peut pas la rétablir?

    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    apparemment tu est en MySql.
    tu passe une date dans un champ qui vraisemblablement est un varchar, il faut caster ta variable:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST ( '01/07/2011' as VARCHAR(10))

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut
    Le champ en question est bien un champ "texte" et le string passé dans la requête est bien un String (que je fabrique par concaténation en glissant des / entre les nombres), pas du tout un format date.

    De plus, je m'en rends compte après avoir essayé 40 autres fichiers qui correspondent à différentes tables, cette erreur arrive aussi sur certain fichiers qui n'ont pas de dates du tout:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into `VIAUF` values(7712180,'LG0049','1,0',201110);
    La ligne ci dessus plante tandis que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into `VIAUF` values(7712200,'LG0070','1,0',201110);
    fonctionne.

    J'aimerai croire que c'est lié aux requêtes, qu'il y ai une erreur de syntaxe ou autre, mais tout indique que non. Et pourtant, ça plante toujours sur les même lignes.

  4. #4
    Invité
    Invité(e)
    Par défaut
    tu n'aurais pas un problème de contrainte dans cet exemple?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut
    Pas que je sache, non. Quand je copie colle cette requête dans access manuellement, aucuns problèmes.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut
    Suite a énormément d’expérimentation, debugging et googling, j'ai trouvé la source de cette erreur:

    http://www.developpez.net/forums/d11...cution-3049-a/

    Drôle de coïncidence, le seul lien utile que google trouve est un thread de ce forum

    En gros, ma base pèse ~2 090 mb, et du coup elle fait n'importe quoi, merci windows pour ces erreurs explicites et page d'aide extrêmement complètes

    /sarcasme

    En espérant que ça pourrai aider un autre, un jour. Résolu.

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

Discussions similaires

  1. Connection RDO ACCESS
    Par foblar dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/08/2006, 21h43
  2. connection base ACCESS distante
    Par Alexlesilex dans le forum Access
    Réponses: 2
    Dernier message: 08/06/2006, 22h11
  3. Connecter mysql à access en ODBC (et non le contraire)
    Par guidav dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 28/03/2006, 14h51
  4. un DELETE qui fonctionne mal
    Par HULK dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/02/2006, 18h59
  5. prob connection bdd access chez hebergeur
    Par zorba49 dans le forum ASP
    Réponses: 2
    Dernier message: 14/09/2005, 19h23

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