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

VBA Access Discussion :

Pilote ODBC dBase: Opération non autorisée pour ce type d’objet


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Points : 261
    Points
    261
    Par défaut Pilote ODBC dBase: Opération non autorisée pour ce type d’objet
    Bonjour

    Je dois modifier (en VBA) la structure de certaines tables dBase IV.

    Les opérations "ADD" et "DROP" fonctionnent à merveille, mais pour ce qui est du "ALTER TABLE", je provoque dans Microsoft Access (version 2003) le message d'erreur suivant:

    "[Microsoft][Pilote ODBC dBase] Opération non autorisée pour ce type d’objet."

    Après bien des recherche, je me retrouve devant aucune piste de solution ....

    Avez-vous déjà rencontré ce problème ?

    Voici donc le code de base qui me sert actuellement dans mon cheminement.

    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
     
    Function ModifDBF()
    On Error GoTo Err_ModifDBF
     
     
    Dim Cn As ADODB.Connection
    Dim Chemin As String, strNomTable As String
    Dim MonSQL As String
     
    Chemin = "C:\Temp\"
    strNomTable = "Mike_A.dbf"
     
    Set Cn = New ADODB.Connection
     
    Cn.Open "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & Chemin & ";"
     
    MonSQL = "ALTER TABLE " & strNomTable & " ALTER Mike Int"
    'MonSQL = "ALTER TABLE " & strNomTable & " Add Mike Char(10)"
    'MonSQL = "ALTER TABLE " & strNomTable & " DROP Mike"
     
    Cn.Execute MonSQL
     
    Cn.Close
     
    Exit_ModifDBF:
        Exit Function
     
    Err_ModifDBF:
        MsgBox Err.Description
        Resume Exit_ModifDBF
     
    End Function

    Merci de venir à mon aide ...

    Mike

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 172
    Points
    12 172
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Que veux-tu faire avec ton ALTER ?
    La syntaxe inscrite me semble étrange.

    Moi je verrais plutôt un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonSQL = "ALTER TABLE " & strNomTable & " ADD COLUMN textField20 VARCHAR(255) NULL;"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonSQL = "ALTER TABLE " & strNomTable & " ALTER COLUMN " & strFieldName &" TEXT(255);"
    Je n'ai plus la syntaxe exacte vu l'ancienneté de DB IV mais ça doit s'approcher.

    si DB IV n'est plus, alors importe tes tables dans des tables Access et manipule les avec DAO...

    Argy

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Points : 261
    Points
    261
    Par défaut
    Bonjour argyronet

    Question de syntaxe pour dBase, pour passer à 20 caractères, je peux utiliser plusieurs syntaxes sans provoquer d'erreur tel :

    'MonSQL = "ALTER TABLE " & strNomTable & " Add " & strNomChamp & " Char(20)"
    'MonSQL = "ALTER TABLE " & strNomTable & " Add Column " & strNomChamp & " Char(20)"
    'MonSQL = "ALTER TABLE " & strNomTable & " Add " & strNomChamp & " Text(20)"
    Et si je fais un erreur de syntaxe, je reçois un message approprié ...

    La syntaxe est donc validé avant l'exécution de la commande....

    Merci ... et je cherche encore ....

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Points : 261
    Points
    261
    Par défaut
    Même message d'erreur en utilisant une autre méthode de connection ADO

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Set Cn = CreateObject("ADODB.Connection")
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=" & Chemin & ";" & _
                       "Extended Properties=""DBASE IV;"";"


    Je vais regarder vers DAO comme proposé par argyronet .....

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 553
    Points
    24 553

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Points : 261
    Points
    261
    Par défaut
    Le test avec les objets DAO est identique.

    Les commandes ADD et DROP fonctionnent super bien.

    Mais je ne parviens toujours pas à modifier la taille de mon champ "MIKE" à 20 caractères, le système me retournant presque le même message
    "Opération non autorisée pour ce type d’objet."
    Voici le code utilisé .....
    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
    Function ModifDBF_DAO()
    On Error GoTo Err_ModifDBF_DAO
     
    Dim cn As DAO.Database
    Dim MaTable As Database
    Dim Chemin As String, strNomTable As String, strNomChamp As String
    Dim MonSQL As String
     
    Chemin = "C:\Temp\"
    strNomTable = "Mike_A.dbf"
    strNomChamp = "MIKE"
     
    Set cn = DBEngine.OpenDatabase (Chemin, True, False, "dBase IV;")
     
    MonSQL = "ALTER TABLE " & strNomTable & " ALTER " & strNomChamp & " Char(20)"
    'MonSQL = "ALTER TABLE " & strNomTable & " ADD " & strNomChamp & " Char(30)"
    'MonSQL = "ALTER TABLE " & strNomTable & " DROP " & strNomChamp & "
     
    cn.Execute MonSQL
    cn.Close
     
    Exit_ModifDBF_DAO:
        Exit Function
     
    Err_ModifDBF_DAO:
        MsgBox Err.Description
        Resume Exit_ModifDBF_DAO
     
    End Function

    Pour loufab: j'ai bien regardé le lien que tu m'a proposé, mais mon neuronne n'y trouve pas de piste évidente
    Pourrais-tu élaborer ?

    Merci encore de vous pencher sur mon cas .....

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 553
    Points
    24 553
    Par défaut
    Bonjour,

    Tu ne peux pas modifier la structure d'un champ DBF depuis ACCESS. Je suis même étonné que Add et Drop fonctionne. C'est peut-être dû au pilote de la IV ?!

    Il te faut passer par une série de requêtes pour créer une nouvelle colonne de 20 caractères dans une nouvelle table (dbf) puis faire le transfert des données.

    D'où le lien que je t'ai fourni.

    Cordialement,

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    226
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 226
    Points : 261
    Points
    261
    Par défaut
    Merci loufab ....

    tu viens de confirmer ce que je redoutais ....

    On va devoir faire autrement ....

    À la prochaine

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 553
    Points
    24 553
    Par défaut
    Tu as justement la solution dans le lien...

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

Discussions similaires

  1. [AC-2007] Opération non autorisée pour ce type d'objet
    Par mcryco dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/02/2014, 16h25
  2. [AC-2003] [VBA] Opération non autorisée pour ce type d'objet.
    Par ludobalu dans le forum VBA Access
    Réponses: 7
    Dernier message: 31/10/2012, 08h26
  3. Réponses: 9
    Dernier message: 12/11/2008, 11h28
  4. erreur 3251 opération non autorisé pour ce type d'objet
    Par alexkickstand dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/02/2008, 21h39
  5. Erreur ASP 0104 Opération non autorisée
    Par mister_rom dans le forum ASP
    Réponses: 5
    Dernier message: 08/02/2007, 10h50

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