Kommunauty
Connexion
Inscription

Problème PROG C# SQL BDD ACCESS: programme pour comparer et modifier une table en utilisant une autre


marwanbe2802 Messages : 2

bonjour,

donc j'essaie de créer un prog qui utilise une bdd Appelé Basedd composé de 2 tables la première DENR(la principale a afficher a la fin) et et la deuxième GRET(la secondaire).

l'objectif c'est de comparer les élément de la table GRET avec celles de la table DENR .si l’élément (commentaire dans GRET=defaut dans DENR) est présent dans la Table DENR,on modifie a valeur de la quantité dans la table DENR en incrémentant de 1.Si il n'est pas présent on le rajoute dans la table DENR avec une quantité égale a GRET_Q(toujours a 1 pour l'instant) .cette comparaison est lancé après avoir cliqué sur le bouton (Mise à jour)

puis automatiquement après on efface la table GRET qui sera chaque jour manuellement modifié sur Access par un opérateur.

Pour l'instant le problème est le suivant:

Je pense comprendre que cela est a cause de l'impossibilité de modifié un affichage mais il faut modifier la base de donnée elle même (c'est a dire la datasource) sauf que j'ai jamais codé sur du C# ou SQL (niveau très débutant).et la seule solution que je vois c'est celle que j'ai appliqué jusqu’à présent.et je ne comprend rien sur les exemples dans d'autres sujets vue que c'est pas la même fonction.

PS :A savoir que j'ai connecté la BDD( dataset) par le générateur vue que je connais pas trop le code .

MERCI A vous !!!

Le code :

[code]bonjour,

donc j'essaie de créer un prog qui utilise une bdd Appelé Basedd composé de 2 tables la première DENR(la principale a afficher a la fin) et et la deuxième GRET(la secondaire).

l'objectif c'est de comparer les élément de la table GRET avec celles de la table DENR .si l’élément (commentaire dans GRET=defaut dans DENR) est présent dans la Table DENR,on modifie a valeur de la quantité dans la table DENR en incrémentant de 1.Si il n'est pas présent on le rajoute dans la table DENR avec une quantité égale a GRET_Q(toujours a 1 pour l'instant) .cette comparaison est lancé après avoir cliqué sur le bouton (Mise à jour)

puis automatiquement après on efface la table GRET qui sera chaque jour manuellement modifié sur access par un opérateur.

Pour l'instant le problème est le suivant:

Je pense comprendre que cela est a cause de l'impossibilité de modifié un affichage mais il faut modifier la base de donnée elle même (c'est a dire la data source) sauf que j'ai jamais codé sur du C# ou SQL (niveau très débutant).et la seule solution que je vois c'est celle que j'ai appliqué jusqu’à présent.et je ne comprend rien sur les exemples dans d'autres sujets vue que c'est pas la même fonction.

PS :A savoir que j'ai connecté la BDD( dataset) par le générateur vue que je connais pas trop le code .

MERCI A vous !!!

Le code :

[code]

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace WindowsFormsApplication5

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

/* checking if items in the GRET are available on the DENR table */

try

{

DataTable src1 = dataGridView1.DataSource as DataTable; /* DENR table */

DataTable src2 = dataGridView2.DataSource as DataTable; /* Gret Table */

int index1 = 0;

if (dataGridView1 == null)

{

MessageBox.Show("No rows in dataGrid");

}

foreach (DataGridViewRow d_row1 in dataGridView1.Rows)

{

DataRow row1 = (d_row1.DataBoundItem as DataRowView).Row;

foreach (DataGridViewRow d_row2 in dataGridView2.Rows)

{

DataRow row2 = (d_row2.DataBoundItem as DataRowView).Row;

int index2 = 0;

bool duplicateRow = true;

for (int cellIndex = 0; cellIndex < row1.ItemArray.Count(); cellIndex++)

{

/* checking if columns matchs , if so then duplicateRow is true , else duplicateRow is false */

if (!row1.ItemArray[cellIndex].ToString().Equals(row2.ItemArray[cellIndex].ToString()))

{

duplicateRow = false;

break;

}

}

/* match found */

if (duplicateRow)

{

/* coloring results */

dataGridView1.Rows[index1].DefaultCellStyle.BackColor = Color.Green;

dataGridView2.Rows[index2].DefaultCellStyle.BackColor = Color.Green;

/* increment the QE */

dataGridView1.Rows[index1].Cells[2].Value = Int32.Parse(dataGridView1.Rows[index1].Cells[2].Value.ToString()) + 1;

}

else

{

/* adding the GRET item to DENR */

DataGridViewRow tmp_row = (DataGridViewRow)dataGridView2.Rows[index2].Clone();

/* edit QTE , affecting it to 1 */

tmp_row.Cells[2].Value = 1;

dataGridView1.Rows.Add(tmp_row);

}

index2++;

}

index1++;

}

/* cleaning the GRET table */

dataGridView2.Rows.Clear();

dataGridView2.Refresh();

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

private void Form1_Load(object sender, EventArgs e)

{

try

{

// TODO: cette ligne de code charge les données dans la table 'baseDDDataSet.GRET'. Vous pouvez la déplacer ou la supprimer selon les besoins.

this.gRETTableAdapter.Fill(this.baseDDDataSet.GRET);

// TODO: cette ligne de code charge les données dans la table 'baseDDDataSet.DENR'. Vous pouvez la déplacer ou la supprimer selon les besoins.

this.dENRTableAdapter.Fill(this.baseDDDataSet.DENR);

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

}[/code:3]

mercredi 20 juillet 2016

Notorius Messages : 589
marwanbe2802 :

bonjour,

donc j'essaie de créer un prog qui utilise une bdd Appelé Basedd composé de 2 tables la première DENR(la principale a afficher a la fin) et et la deuxième GRET(la secondaire).

l'objectif c'est de comparer les élément de la table GRET avec celles de la table DENR .si l’élément (commentaire dans GRET=defaut dans DENR) est présent dans la Table DENR,on modifie a valeur de la quantité dans la table DENR en incrémentant de 1.Si il n'est pas présent on le rajoute dans la table DENR avec une quantité égale a GRET_Q(toujours a 1 pour l'instant) .cette comparaison est lancé après avoir cliqué sur le bouton (Mise à jour)

puis automatiquement après on efface la table GRET qui sera chaque jour manuellement modifié sur Access par un opérateur.

Salut,

Alors pour être honnête j'ai absolument rien compris

Tu devrais essayer de nous expliquer ce que tu veux faire exactement avec des exemples génériques parce que là on a du mal à voir où tu veux en venir en fait. Tu manipules des tables et des quantités (certainement de la gestion des stocks), mais ça a l'air un peu brouillon expliqué comme ça.

Autre chose, je suis pas un spécialiste en matière de gestion de BDD, mais la méthode que tu utilises (comparer la colonne commentaires) me semble pas être la meilleure solution en sachant que y'a des tonnes d'autres manières, certainement plus précises, de comparer deux tables/colonnes.

mercredi 20 juillet 2016 (Dernière édition mercredi 20 juillet 2016)

marwanbe2802 Messages : 2
Notorius :
marwanbe2802 :

bonjour,

donc j'essaie de créer un prog qui utilise une bdd Appelé Basedd composé de 2 tables la première DENR(la principale a afficher a la fin) et et la deuxième GRET(la secondaire).

l'objectif c'est de comparer les élément de la table GRET avec celles de la table DENR .si l’élément (commentaire dans GRET=defaut dans DENR) est présent dans la Table DENR,on modifie a valeur de la quantité dans la table DENR en incrémentant de 1.Si il n'est pas présent on le rajoute dans la table DENR avec une quantité égale a GRET_Q(toujours a 1 pour l'instant) .cette comparaison est lancé après avoir cliqué sur le bouton (Mise à jour)

puis automatiquement après on efface la table GRET qui sera chaque jour manuellement modifié sur Access par un opérateur.

Salut,

Alors pour être honnête j'ai absolument rien compris

Tu devrais essayer de nous expliquer ce que tu veux faire exactement avec des exemples génériques parce que là on a du mal à voir où tu veux en venir en fait. Tu manipules des tables et des quantités (certainement de la gestion des stocks), mais ça a l'air un peu brouillon expliqué comme ça.

Autre chose, je suis pas un spécialiste en matière de gestion de BDD, mais la méthode que tu utilises (comparer la colonne commentaires) me semble pas être la meilleure solution en sachant que y'a des tonnes d'autres manières, certainement plus précises, de comparer deux tables/colonnes.

salut, je suis très débutant en c# et gestion de basedd ,mais en gros oui je veux gérer une base de donnée et la mettre a jour quotidiennement en rajoutant de nouvelles données(les nouvelles données sont présentes sous forme d'une autre table Access présente dans bdd ( appelé GRET), en modifiant la quantité si la donnée existe deja dans la base(appelé DENR) sinon on la crée a la fin du tableau avec une quantité égale à 1

c'est une proposition que j'ai trouvé qui modifie d’après la datagridview mais pour moi lors de la compilation il ne veut pas en signalant qu'on ne peut pas modifier un affichage mais il faut modifier la base en elle même le soucis c'es que jee n'ai aucune idée de comment faire cela ... j’espère que c'est plus compréhensible

pour voirr mieux le code il est present dans le lien suivant https:https://openclassrooms.com/forum/sujet/probleme-prog-c-sql-bdd-access

merci

mercredi 20 juillet 2016 (Dernière édition mercredi 20 juillet 2016)

Notorius Messages : 589
marwanbe2802 :

c'est une proposition que j'ai trouvé qui modifie d’après la datagridview mais pour moi lors de la compilation il ne veut pas en signalant qu'on ne peut pas modifier un affichage mais il faut modifier la base en elle même le soucis c'es que jee n'ai aucune idée de comment faire cela ... j’espère que c'est plus compréhensible

Il te faut quelques notions en matière de base de données alors. Parce que là l'erreur montre effectivement que ce que tu essaies de modifier c'est l'affichage. La base de données elle restera intacte puisqu'il n'y a aucun appel fait dessus.

Pour résumer, la gestion d'une BDD ça se passe comme ça généralement :

  • Tu créés des tables selon ce que tu veux faire. Et dans ces tables tu places des items (GRET, DENR, etc...)
  • A chaque ajout / modification d'item, tu fais un appel sur la base de données. Avec un un simple IF/ELSE pour vérifier si l'item est déjà présent. Et le créer s'il ne l'est pas.

Une requête sur une base de données SQL ça ressemble à ça : SELECT item FROM Table

Pourquoi on créé d'abord la base de donnée avec les tables et les colonnes avant de la remplir? Pour avoir un contrôle sur tout ce qui sera entré par la suite. Par exemple on pourra paramétrer telle colonne pour qu'elle n'accepte que des nombres. Telle autre pour du texte, etc...

Plus un certain nombre d'autres choses comme créer une relation entre certaines colonnes/tables, bref une base de donnée c'est avant tout une architecture qu'il faut mettre en place dès le début. Notamment pour éviter les mauvaises surprises par la suite.

vendredi 22 juillet 2016 (Dernière édition samedi 23 juillet 2016)

Répondre Pour répondre, tu dois d'abord t'inscrire rapidement sur Kommunauty. Rejoins-nous vite !