ggrug26
Messages postés40Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention30 mai 2008
-
6 mars 2008 à 16:00
ggrug26
Messages postés40Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention30 mai 2008
-
11 mars 2008 à 09:40
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."
cs_Nurgle
Messages postés1642Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention28 avril 20114 6 mars 2008 à 16:40
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...
ggrug26
Messages postés40Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention30 mai 2008 7 mars 2008 à 07:48
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?
ggrug26
Messages postés40Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention30 mai 2008 7 mars 2008 à 09:35
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).
//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 =
new
MemoryStream();
pbxImage.Image.Save(mstImage, System.Drawing.Imaging.
ImageFormat.Jpeg);
Byte[] bytImage = mstImage.GetBuffer();
//déclaration du data adapter
OleDbDataAdapter Dta =
new
OleDbDataAdapter(
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 =
new
OleDbCommandBuilder(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...");
}}
ggrug26
Messages postés40Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention30 mai 2008 7 mars 2008 à 11:43
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?
Vous n’avez pas trouvé la réponse que vous recherchez ?
ggrug26
Messages postés40Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention30 mai 2008 11 mars 2008 à 09:40
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.