Base de données et ajout de colonnes [Résolu]

51M0N 8 Messages postés vendredi 29 mai 2009Date d'inscription 29 novembre 2010 Dernière intervention - 26 nov. 2010 à 10:09 - Dernière réponse : 51M0N 8 Messages postés vendredi 29 mai 2009Date d'inscription 29 novembre 2010 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 27 nov. 2010 à 16:01
3
Merci
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.

Merci Mayzz 3

codes-sources a aidé 82 internautes ce mois-ci

Commenter la réponse de Mayzz
51M0N 8 Messages postés vendredi 29 mai 2009Date d'inscription 29 novembre 2010 Dernière intervention - 29 nov. 2010 à 08:12
0
Merci
Thanx for the hint. Je vais essayer ça de suite.
Commenter la réponse de 51M0N

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.