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

VB.NET Discussion :

VB.net oleDB et excel [Débutant]


Sujet :

VB.NET

Vue hybride

Ashireon VB.net oleDB et excel 15/04/2015, 13h19
Kropernic Hello, Si je ne raconte... 15/04/2015, 13h35
Ashireon C'est possible mais si je ne... 15/04/2015, 14h30
Kropernic My bad ! J'ai cru que... 15/04/2015, 14h35
Ashireon Lire un fichier pas de soucis... 15/04/2015, 14h51
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut VB.net oleDB et excel
    Bonjour à tous et à toutes
    J'ai le problème suivant je fait une petite application qui doit ecrire dans un fichier excel.
    Cependant je ne peut pas utiliser interop car la machine n'a pas le pack office
    Donc du coup les données je pensais les transférer via OleDB.
    Mais j'ai soit une erreur soit Rien.

    Je mets le code suivant

    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
    Public Sub EnregistrementPiece()
            Dim feuille As String = "Feuil1"
            Dim StrSQL As String
            Using Conn As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Chemin & ";Extended Properties=""Excel 8.0;HDR=NO;IMEX=1""")
     
                StrSQL = "UPDATE [" & feuille & "]  SET F25=" & CStr(Now) & " WHERE F2 = ' " & MainRMP.CBpiece.SelectedItem.ToString & "'"
                Conn.Open()
                Dim command As New OleDbCommand(StrSQL)
                command.executeqwery()
     
                command.CommandTimeout = 20
     
     
     
                Conn.Close()
     
            End Using
     
        End Sub
    J'ai péché ca un peu partout mais je pense ne pas faire correctement la commande. il faut savoir que le fichier excel n'est pas franchement structuré comme une base de donnée j'ai des colonnes avec un nom en première ligne et d'autres non. Il se peut qua cela soit ma requete qui soit pourrie egalement ??

    Merci pour ceux qui ont l'habitude sur OleDB de me filer un coup de pouce.

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Hello,

    Si je ne raconte pas de trop de bêtises, quand on travaille avec oledb, on ne travaille pas avec les références colonne/ligne mais avec les noms des colonnes. Ce qui veut dire que votre document doit avoir une première ligne d'en-tête car c'est là-dessus que ce base le moteur provider oledb pour exécuter les différents ordre sql.

    source OLEDB.

    Par contre, avec ADO, là on utilise apparemment les références colonne/ligne d'excel.

    source ADO.

  3. #3
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    C'est possible mais si je ne m'abuse HDR=no dans ma connection OleDB specifie que je n'ai pas d'entète de colonne et du coup c'est spécifié de F1 à FXX? non ?
    j'essaie de faire en source ado mais j'y connais encore moins..

    cdt

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    My bad !

    With Excel workbooks, the first row in a range is the header row (or field names) by default. If the first range does not contain headers, you can specify HDR=NO in the extended properties in your connection string. If you specify HDR=NO in the connection string, the Jet OLE DB provider automatically names the fields for you (F1 represents the first field, F2 represents the second field, and so on).
    J'ai cru que tu voulais écrire dans la cellule F25 avec une condition sur la cellule F2.

    Par contre, j'ai tiré ce passage de la source ADO que j'ai donné précédemment et pas de celle OLEDB .

    Je vais vite faire un test de mon côté. J'ai justement lu un fichier excel avec oledb récemment, vais pouvoir reprendre et adapter facilement.

  5. #5
    Membre éclairé
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 479
    Par défaut
    Lire un fichier pas de soucis avec oleDB , c'est écrire dedans.
    J'aurai déjà résolu mon prob si j'avais la possibilité interop.excel mais la non faut que je trouve un autre moyen.

    la j'ai l'erreur suivante sur executenoquery : l'opération doit utiliser une requête qui peut être mis à jour.

    ?
    en tout cas merci de ton aide je continue a creuser

  6. #6
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Hello,

    Je viens de remarque que je n'utilise pas du tout le même provider que toi. Perso, j'utilise "Microsoft.ACE.OLEDB.12.0". Mais ce que ce soit le mien ou le tien, si j'ajoute hdr=no à ma chaîne de connexion, j'ai une erreur comme quoi il ne trouve pas d'ISAM (kezako?) installable...

    Du coup, je ne peux pas tester l'update sans ligne d'en-tête. Avec l'en-tête par contre, ça j'ai pu tester et ça marche bien.

    Un détail mais on ne sait jamais, chez moi je dois suffixer le nom de la feuille par "$". Mais bon, cela te donnerait une erreur disant qu'il ne trouve pas l'objet pas que la requête n'est pas correcte...

    N.B. : Je vais tester en prenant exactement la même chaîne de connexion que toi pour voir.
    Toujours le même problème d'ISAM avec ta chaîne de connexion.

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

Discussions similaires

  1. [ADO.Net][OleDb] Pourquoi ma requête access ne fonctionne pas?
    Par Bapt.ice dans le forum Accès aux données
    Réponses: 6
    Dernier message: 05/05/2006, 17h19
  2. [VB.NET] Importation données Excel pour alimenter BDD Sql Server
    Par Aphrauditte dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/05/2006, 16h24
  3. [MFC] OLEDB et Excel
    Par Capnader dans le forum MFC
    Réponses: 3
    Dernier message: 22/04/2005, 18h41
  4. Définitions SQL*Net / OLEDB
    Par Spoutnik dans le forum Oracle
    Réponses: 2
    Dernier message: 21/02/2005, 13h50
  5. [VB.NET] [Winform] DataGrid Excel et CheckBox
    Par mic56 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/06/2004, 15h10

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