begin process at 2008 07 23 23:36:50
1 215 381 membres
520 nouveaux aujourd'hui
14 174 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : ajouter image Bdd ACCESS [ Base de données / Access ] (ggrug26)

ajouter image Bdd ACCESS le 06/03/2008 16:00:13

ggrug26
Bonjour,

je programme sous C#,

mon programme doit permettre d'ajouter une image dans une table, dans une Bdd,
et voici mon erreur: "La référence d'objet n'est pas définie à une instance d'un objet."

Mon code:

privatevoid btEnregistrIMG_Click(object sender, EventArgs e)

{

//On récupère les valeures des variables à modifier

this.CsV.Image = pbxImage.Image;

//on vérifie que tout les champs sont remplis

if (pbxImage.Image == null)

{

MessageBox.Show("Veuillez choisir une image au préalable");

}

else

{

//déclaration du data adapter

OleDbDataAdapter Dta = newOleDbDataAdapter(this.SqlGrid, this.Conn);

//création d'une nouvelle ligne

this.DtrGrid = this.DtsGrid.Tables["PhotoContact"].NewRow();                   !!!!!C'est ici que se produit l'erreur !!!!

//Ajout de la ligne et remplissage des différents champs

this.DtrGrid["N°"] = this.DtsGrid.Tables["PhotoContact"].Rows.Count + 1;

this.DtrGrid["Image"] = CsV.Image;

//ajout de la ligne à la table (affichage visuel)

this.DtsGrid.Tables["PhotoContact"].Rows.Add(DtrGrid);

//on leve l'exception

try

{

//on met tout dans la base de donnée

this.CmdGrid = newOleDbCommandBuilder(Dta);

Dta.UpdateCommand = CmdGrid.GetUpdateCommand();

Dta.Update(DtsGrid,

"TabDonneesContacts");

}

//on gere l'exception en cas d'enregistrement raté.

catch (DBConcurrencyException DBCEx)

{

MessageBox.Show("Impossible d'enregistrer le nouveau contact");

} }

quelqu'un serait il en mesure de me dire ce qu'est cette erreur, je ne vois pas du tout

Merci de votre aide !



Re : ajouter image Bdd ACCESS le 06/03/2008 16:40:07

Nurgle
Membre Club
(Admin CS)
Salut,

Eh bien, soit DtsGrid n'existe pas (vérifie qu'il est bien créé), soit DtsGrid.Table["PhotoContact"] n'existe pas...  !

Vérifie que le DataTable auquel tu veux accéder s'appelle bien "PhotoContact" ; ça peut être une erreur de frappe, au lieu de "PhotosContact" ou "PhotoContacts" ou un truc du genre...

Bonne journée,
A++


Nurgle (Antoine) - MSP

Re : ajouter image Bdd ACCESS le 07/03/2008 07:48:50

ggrug26
Salut,

le onm de table est correct, le dtsgrid est bien déclarer,
je l'utilise dailleurs dans un autre bouton et il marche sans souci...

Je suis en train de penser a qq chose le datatable permet de se lier avec la Bdd, mais par contre dans mon datagrid view que j'utilise, j'affiche une autre table de la meme Bdd.

Serais-ce parce que je n'utilise pas la meme table?

Re : ajouter image Bdd ACCESS le 07/03/2008 09:35:41

ggrug26
HOP !!!!!!   Modif !!  Mais ça marche toujours pas ...
Apparemment, je n'utilisait pas la bonne méthode pour récupérer mon image!

D'après ce que j'ai trouvé, je dois utiliser un tableau de byte (Byte[] bytImage = mstImage.GetBuffer();)

Par contre j'ai le meme type d'erreur que lorsque j'oubli de renseigner une colonne,
soit qu'il y a un problème dans la requete INSERT TO...
Je n'ai que 2 colonne pourtant (N° et Image).
 
Des idées ???

code:

privatevoid btEnregistrIMG_Click(object sender, EventArgs e)
{
//on vérifie que tout les champs sont remplis
if (pbxImage.Image == null)
{
MessageBox.Show("Veuillez choisir une image au préalable");
}
else
{
// Tableau d'octets representant l'image au format jpeg
MemoryStream mstImage = newMemoryStream();
pbxImage.Image.Save(mstImage, System.Drawing.Imaging.
ImageFormat.Jpeg);
Byte[] bytImage = mstImage.GetBuffer();
//déclaration du data adapter
OleDbDataAdapter Dta = newOleDbDataAdapter(this.SqlGrid, this.Conn);
//création d'une nouvelle ligne
this.DtrGrid = this.DtsGrid.Tables["TabDonneesContacts"].NewRow();
//Ajout de la ligne et remplissage des différents champs
this.DtrGrid["ID"] = this.DtsGrid.Tables["TabDonneesContacts"].Rows.Count + 1;
this.DtrGrid["Image"] = bytImage;
//ajout de la ligne à la table (affichage visuel)
this.DtsGrid.Tables["TabDonneesContacts"].Rows.Add(DtrGrid);
//on leve l'exception
try
{
//on met tout dans la base de donnée
this.CmdGrid = newOleDbCommandBuilder(Dta);
Dta.UpdateCommand = CmdGrid.GetUpdateCommand();
Dta.Update(DtsGrid,
"TabDonneesContacts");                                                    !!!!on plante ici !!!!
}
//on gere l'exception en cas d'enregistrement raté.
catch (DBConcurrencyException DBCEx)
{
MessageBox.Show("Impossible d'enregistrer la nouvelle image...");
}}

Re : ajouter image Bdd ACCESS le 07/03/2008 11:43:36

ggrug26
pour préciser , en fait tout ce que j'ai déclaré, je l'ai fait pour l'autre table.

la requete SqlGrid est réécrite pour la bonne table et le nom de table est changé, mais y a t il d'autres choses a voir? dois-je faire une autre ouverture de Bdd, mais cette fois ci avec la deuxieme table?

Re : ajouter image Bdd ACCESS le 11/03/2008 09:40:46

ggrug26
J'ai tout repris, mes dataset, datarow, datatable sont déclaré en double (pour mes 2 tables).

J'ai oublié de dire je crois que l'erreur retourné est erreur de syntaxe dans l'instruction INSERT INTO.

cette erreur m'est déja apparu lorsque j'essayer de faire une mise a jour de table sans avoir renseigner toutes les lignes.

Là j'en ai 2 et je renseigne les 2 mais est ce que mon type Byte utilisé est la bonne chose a utilisé pour enregistré une image?
Dans la base je met l'image dans un objet OLE...

Des idées ? des questions? j'ai que cette partie qui ne marche pas et la je suis en galère.

Merci de votre aide.


Classé sous : image, ajouter, dta, dtrgrid, dtsgrid

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS