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 6 et antérieur Discussion :

Modification de type de colonne sous Access


Sujet :

VB 6 et antérieur

  1. #1
    Invité
    Invité(e)
    Par défaut Modification de type de colonne sous Access
    Bonjour,
    je souhaite passer une champ Access de type numérique en texte sous VB. Or en utilisant un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE Task ALTER COLUMN TaskID varchar(10)
    J'obtiens une erreur "system ressources exceeded" (la table à environ 500000 entrées, ça ne m'étonne pas ).

    J'ai donc essayé de faire la chose suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.TableDefs("Task").Fields("TaskID").Type = dbText
    Et là c'est l'erreur "3219: Invalid Operation" qui sort.

    Pour le moment je contourne le problème avec la création d'une colonne texte additionnelle, copier le contenu de la colonne à modifier vers la nouvelle et changer les noms. Mais c'est bien lourd.
    Y a-t-il moyen de faire ce que je veux sous DAO?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Bonjour,

    j'ai toujours fait comme ta méthode de contournement. Je ne pense pas que ça puisse marcher si la table contient déjà des données, sauf peut-être si tu passes de Integer à Currency par exemple, mais quid des données si tu veux passer de Currency à Integer déjà ? Alors entre un numérique et un alpha, je ne vois pas comment les données peuvent être conservées/converties

    Si quelqu'un a la solution, ça m'intéresse aussi =)

  3. #3
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Voici la routine que j'utilise pour modifier la taille d'une colonne texte
    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
    33
    34
    35
    36
    37
    38
    Public Function StChangeFieldSize(BaseName As String, TableName As String, FieldName As String, NewSize As Integer)
        'BaseName  = nom de la base
        'TableName = nom de la table
        'FieldName = nom du field
        'NewSize = nouvelle taille
        Dim Dbse As dao.Database
        Dim Tble As dao.TableDef
        Dim F1 As dao.Field
        Dim F2 As dao.Field
        Dim OldPos As Integer
        Set Dbse = dao.OpenDatabase(BaseName)
        Set Tble = Dbse.TableDefs(TableName)
        On Error GoTo erreurStChangeFieldName
        Set F1 = Tble.Fields(FieldName)
        If F1.Size = NewSize Then Exit Function 'deja fait
        OldPos = F1.OrdinalPosition
     
        Set F2 = Tble.CreateField("Temp", dbText, NewSize)
        Tble.Fields.Append F2
        Dbse.Execute "update [" & TableName & "] set Temp=[" & FieldName & "]"
        Tble.Fields.Delete FieldName
        F2.Name = FieldName
        F2.OrdinalPosition = OldPos
        On Error GoTo 0
        StChangeFieldSize = 0
    SortChangeFieldSize:
        Dbse.Close
        Exit Function
    erreurStChangeFieldName:
        StChangeFieldSize = -1
            MsgBox "Erreur n° " & Str$(Err) & vbCrLf & Err.Description, , _
                   "SqChangeFieldSize(" & BaseName & "," & _
                                     TableName & "," & _
                                     FieldName & "," & _
                                     NewSize & ")"
        Resume SortChangeFieldSize
     
    End Function
    Cette routine melange du dao et du sql pour plus d'efficatité
    Tu peux t'en inspirer pour resoudre ton problème.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Phifi
    Bonjour,
    j'ai toujours fait comme ta méthode de contournement. Je ne pense pas que ça puisse marcher si la table contient déjà des données
    Pourtant sous Access, ça se passe sans problème ce genre de conversion (avec des données en numérique).
    C'est pour ça que je me suis acharné à essayer de faire la conversion directement.

  5. #5
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Access ne convertit pas les colonnes, En interne, il crée une nouvelle colonne, la remplis avec les données de l'ancienne, et finalement supprime l'ancienne.
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  6. #6
    Invité
    Invité(e)
    Par défaut
    Haaaa ok. Merci beaucoup de l'info donc

Discussions similaires

  1. Fusion de deux colonnes sous ACCESS
    Par oliver75 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/02/2010, 14h20
  2. Enorme probleme avec modification de type de colonne
    Par tibere dans le forum Administration
    Réponses: 2
    Dernier message: 07/04/2007, 13h57
  3. Réponses: 1
    Dernier message: 05/12/2006, 21h39
  4. Modification du type d'affichage d'un sous-formulaire
    Par jarod_bx dans le forum Access
    Réponses: 1
    Dernier message: 10/11/2005, 18h34
  5. [VB6] Type de colonne Access sous VB ?
    Par jlvalentin dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/02/2005, 11h10

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