Base de données et ajout de colonnes

Résolu
51M0N Messages postés 6 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 29 novembre 2010 - 26 nov. 2010 à 10:09
51M0N Messages postés 6 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 29 novembre 2010 - 29 nov. 2010 à 08:12
Bonjour à vous tous.

Je suis régulièrement en galère sur la programmation, mais généralement, j'essaie de trouver par moi-même une solution pour remédier, mais là...

Exposé de la situation : Je construis actuellement un gestionnaire GPEC (Gestion Prévisionnelle des Emplois et des Compétences) qui permet de stocker dans des bases de données l'ensemble des informations contenues dans les fiches de fonctions et si besoin est, de les ressortir sur Word. (Mon but final est en fait de tout dématérialiser pour ne pas être emm****)

Comme vous l'aurez donc compris, je dois régulièrement modifier le contenu des tables et les tables elles-mêmes.
Je dois pour cela :
- Ajouter des colonnes à mes tables, lorsqu'une nouvelle fiche est créée. Système Oui/Non pour définir si l'item est présent dans la fiche.
- Ajouter des enregistrements, lorsqu'un item n'est pas encore apparu et qu'une fonction le nécessite.

Le problème est le suivant :
- Ajouter des colonnes au datagrid par programmation, c'est OK... mais il n'enregistre rien! Je peux modifier le contenu de ce qui existe déjà, pas de souci, mais il refuse catégoriquement d'enregistrer ce que je veux ajouter.
-Ajouter des enregistrements : le générateur d'erreurs prétend que je ne peux pas ajouter d'enregistrements par programmation à un DatagridView s'il est lié à une base de données. C'est con : c'est ce que je veux faire!

Donc voilà.
Si quelqu'un a une explication rationnelle avant que je ne détruise l'écran dans un accès colère.

Merci

Oh, j'oubliais :
XP SP3
Access 2003.
Ça a peut être une importance.

2 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
27 nov. 2010 à 16:01
Salut,

En .Net, comme tu l'as peut être déjà remarqué toutes les requêtes se font via le langage SQL peut importe le SGBD. Pour la Modification Table/Base et Ajout/Suppression/Modification d'enregistrement il suffit donc simplement d'envoyer des requêtes SQL vers celle-ci (Ce que fait le DataGridView à travers le TableAdapter avec beaucoup de limites).

En fait tout dépend de la façon dont tu as conçu ton projet, via les assistants de Visual Studio (Déconseillé lors ce que l'on ne connais pas vraiment son fonctionnement en interne, ironique car c'est fait pour facilité la vie au développeurs à la base) ou par code. Pire encore, un mélange des deux...

Quant au DataGridView, il se base sur le modèle de ta table pour générer ses colonnes mais à l'inverse n'ajoute pas les colonnes à ta table en cas de mise à jour vers celle-ci. Il ajoute/met à jour simplement le contenu des colonnes du modèle car il travail via les objets TableAdapter et CommandBuilder qui ont été conçu pour gérer principalement 4 requêtes SQL: SELECT, INSERT, DELETE, UPDATE, ne concernant que le contenu des tables et non la table elle-même (pas de requête ALTER).

Pour ce qui est de la modification par code, c'est une logique les données présentes dans ton DataGridView sont tirées de la source de données que tu lui précises, on ne peux donc pas donner plusieurs sources de données à celui-ci (Base + Code).

La solution c'est d'ajouter tes colonnes en envoyant directement des requêtes SQL à ta base, puis de recharger ta table dans le DataGridView pour que l'utilisateur puisse en modifier le contenu. Ou directement de gérer le tout par code, plus long mais plus sûr.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
51M0N Messages postés 6 Date d'inscription vendredi 29 mai 2009 Statut Membre Dernière intervention 29 novembre 2010
29 nov. 2010 à 08:12
Thanx for the hint. Je vais essayer ça de suite.
0
Rejoignez-nous