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.NET Discussion :

Impossible de remplir un fichier excel via ADO


Sujet :

ASP.NET

  1. #1
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut Impossible de remplir un fichier excel via ADO
    Bonjour

    Je cherche pourquoi je ne peux pas mettre à jour mes données dans un fichier Excel via DAO

    Le truc qui m'énerve c'est que ça fonctionne en production mais pas en développement ni en recette (c'est le même serveur pour la recette et la production, seul le serveur de développement est différent)

    Lorque j'essaie de faire mon INSERT INTO, j'ai le message suivant : "L'opération doit utiliser une requête qui peut être mise à jour"

    J'ai vérifié les droits d'écriture sur le dossier où est le fichier Excel, le groupe "Tous le monde" a les droits en lecture/écriture

    Sur le serveur de développement, j'ai carrément joué bourrin, j'ai mis les droits en lecture/écriture à tous le monde pour tout le projet et ce n'est pas mieux

    Voici ma chaîne de connexion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    string connString = 
        @"Provider=Microsoft.Jet.OLEDB.4.0;" +
        @"Data Source=" + Full_XLS_FileName + ";" +
        @"Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""";
    avec Full_XLS_FileName qui est le chemin complet et absolu vers le fichier Excel à remplir

    et ma requette INSERT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO [DATA$]
    VALUES (/*mes valeurs*/)
    Le nombre de valeurs données dans le INSERT correspond bien au nombre de colones définies dans la feuille DATA. Mes codes sont identiques en développement et en production. Mes fichiers Excel modèles sont aussi les mêmes (je copie un modèle dans un répertoire avant de le remplir, et j'ai bien contrôlé les droits du fichier modèle et du fichier copié)

    Je parcours google depuis 2 jours pour arriver à comprendre ce qui se passe. mais là je craque :'(

    (Au pire, personne ne connais un logiciel qui me permettes de coparer les droits des fichiers/repertoires de 2 dossiers ?)

    Merci d'avance pour l'aide que vous pourrez m'apporter (et pour la détente de mes nerfs )

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par mioux Voir le message
    Le truc qui m'énerve c'est que ça fonctionne en production mais pas en développement ni en recette (c'est le même serveur pour la recette et la production, seul le serveur de développement est différent)
    Tu as mis en production quelque chose qui ne fonctionne ni en développement, ni en recette ?

    La connextion ADO, c'est quoi ? ODBC ou OleDb ? Montre-nous un peu plus de code, stp.

  3. #3
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    Non, quand j'ai fais mon dev, ca fonctionnait ;D

    Justement c'est ca le problème, c'est que je n'arrive pas à comprendre pourquoi ça ne fonctionne plus, d'où peut venir le problème... et j'aimerai qu'il ne m'arrive pas en prod suite à une mise à jour

    Et pour la connexion c'est OleDb (c'est ce que je voulais dire à la place de ADO je me confond tout en plus )

    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
    string connectionString = Get_ExcelConnection(fichier);
     
    DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb");
    DbConnection oDbConnnection = factory.CreateConnection();
    oDbConnnection.ConnectionString = connectionString;
    DbCommand command = oDbConnnection.CreateCommand();
     
    oDbConnnection.Open();
     
    string EXCEL =
        @"INSERT INTO [" + excelTable + @"]
        VALUES (@mot_id, @langue_id, @base_id, @mot_fr, @abrv_fr, @mot_en, @abrv_en, @mot_lng, @abrv_lng, @taille)";
     
    // ici je remplace les "@variable" par des valeurs, les requêtes paramétrées n'étant pas gérées par le moteur.
     
    command.CommandText = EXCEL;
    command.ExecuteNonQuery();
     
    oDbConnnection.Close();
    Je plante à la ligne command.ExecuteNonQuery();

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Ce n'est probablement pas un problème de droit :
    Essaye l'une et/ou les deux propositions suivantes :
    - retirer la propriété IMEX=1 de la chaine de connexion
    - mettre la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows à 0.

  5. #5
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    Sans le IMEX ca fonctionne merci

    Maintenant je pars en quête de "A quoi peut servir la propriété IMEX" (parce que là, on avait copié un code tout fait trouvé sur Internet et qui avait le mérite de fonctionner... Du coup on a pas cherché à comprendre à quoi servait IMEX)

  6. #6
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Citation Envoyé par http://www.connectionstrings.com/excel
    "IMEX=1;" indique au moteur de toujours lire les colonnes contenant des données mixtes (nombres, dates, chaînes etc) en tant que texte. Remarquez que cette option peut empêcher l'accès en écriture dans une feuille Excel.

  7. #7
    Membre habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 367
    Points : 191
    Points
    191
    Par défaut
    Oui j'avais trouvé

    Et sur le même site

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

Discussions similaires

  1. création d'un fichier excel avec ADO
    Par sony351 dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/02/2007, 15h54
  2. fermer fichier excel via OLE
    Par richard038 dans le forum Delphi
    Réponses: 2
    Dernier message: 27/09/2006, 17h26
  3. Script d'envoie d'un fichier excel via un formulaire
    Par Morphine.Nw dans le forum ASP
    Réponses: 4
    Dernier message: 26/01/2006, 13h08
  4. Impossible d'importer un fichier excel
    Par _developpeur_ dans le forum Access
    Réponses: 2
    Dernier message: 24/01/2006, 12h21

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