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 :

Trop de champs définis.


Sujet :

VB.NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Par défaut Trop de champs définis.
    Bonjour a tous.

    Je vient à vous car Visual VB 2008 me donne cette erreure lors de l'enregistrement de mon dataset.

    Je travail sur une base de donnée Acces 2003 de 246 champs (donc pas trop normalement)

    Lorsque je je test mon application :
    - si je ne modifie pas un enregistrement, je peut enregistrer mon dataset par la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Enregistrer_DataSet()
    Me.Validate()
    Me.Plannings_HebdoBindingSource.EndEdit()
    Me.TableAdapterManager.UpdateAll(Me.Crasinit32_DS)
    End Sub
    - par contre des que je modifie une valeur, vb leve l'exception OleDB trop de champs

    avant de vous contacter j'ai fait :
    - un column.count pour vérifier que le nombre de colonnes etaient bien le bon
    - un compactage de ma base pour éviter des champs "phantomes"
    - supprimer 9 champs de ma base (puis compactage)
    - supprimer puis recréer mon dataset
    - chercher sur les forums

    la je bloque...
    le pire étant que l'application se comporte bien (bonne prise en compte des modifications au bon endroit dans mes listes box)

    si quelqu'un avais des suggestions...

  2. #2
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    The Microsoft Jet database engine has an internal limit of 255 fields per query. As the Microsoft Jet database engine iterates through the records in an update query, it creates a field for the original value and a field for the updated value. When more than 127 fields are selected, it reaches the 255 field limit of a query.
    Don't put more than 127 fields onAdd/Edit pages.
    Il me semble que si la table comporte une clé primaire, on pourrait modifier l'UpdateCommand du DataAdapter en n'indiquant dans la clause "WHERE" que la clé primaire au lieu de tous les champs.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Par défaut
    Merci pour votre réponse.

    Il apparait donc qu'une base de donnée (si on veut pouvoir la modifier) ne peut donc pas posséder plus de 127 champs.

    la ca me pose un problème.

    vous semblez proposer une solution, mais vous en dite trop peu pour mes connaissances. pourriez vous développer un peu ?

    sinon, je scinde ma table en 2 et je me débrouille pour charger deux dataset.

  4. #4
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Prenons une table T avec 3 champs ID, COL1 et COL2, ID étant la clé primaire.

    MyDataAdapter.UpdateCommand.Text par défaut ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE "T" SET ID=NewId COL1=NewCol1 COL2=NewCol2 
    WHERE ID=OldId COL1=OldCol1 COL2=OldCol2
    on pourrait la remplacer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE "T" SET ID=NewId  COL1=NewCol1 COL2=NewCol2 
    WHERE ID=OldId
    Remarque : comme applicativement Newid sera en général égal à OldId, on peut même supprimer "ID=NewId" de la clause SET.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 10
    Par défaut
    Merci pour vos réponses rapide.

    N'ayant pas fabriqué mes dataset a la main (je suis passé par l'éditeur) j'ai fait une "rapide" recherche dans les partie cachées du code de l'application pour chercher la commande update pour ne pas mourir idiot.

    En attendant votre réponse j'ai scindé ma table en deux partie avec un troisième table pour faire la liaison, donc problème résolu. Pas propre du tout mais fonctionnel.

    je garde votre post sous le coude avec un copie du répertoire de mon application avant modification, afin de me re-pencher sur ce problème une fois la livraison effectuée.

    Merci encore Graffito

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/09/2010, 11h08
  2. Réponses: 2
    Dernier message: 16/01/2009, 12h45
  3. SQL - trop de champs définis - pourtant "que" 156
    Par debdev dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 15/08/2008, 11h40
  4. Trop de champs définis? Je n'en ai que 12!
    Par wizlord dans le forum Access
    Réponses: 16
    Dernier message: 25/09/2006, 16h23
  5. (Erreur 3190) Trop de champs définis
    Par bart64 dans le forum Access
    Réponses: 2
    Dernier message: 29/11/2005, 20h47

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