IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment afficher une photo de access


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut Comment afficher une photo de access
    Bonjour

    J ai une base access et une table individu avec une colonne contenenant des photos, je n arrive pas a afficher celles ci dans un compo image

    commenrtfaire

    merci

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
              // -- Recuperation de la photo --
                //Requête à exécuter (ici, nous récupérons le mot de passe des mesures de la courbe)
                string sRequete = "SELECT idCompte, photo FROM COMPTE WHERE idCompte=" + Convert.ToInt32(r["idCompte"].ToString());
     
                // Connexion à la base de test
                OleDbConnection cnxTestAccessImage = new OleDbConnection(MaClass.doConnectionString.ToString());
                cnxTestAccessImage.Open();
     
                // Lecture de l'image 
                OleDbCommand cmdTestAccessImage = new OleDbCommand(string.Concat(sRequete), cnxTestAccessImage);
                OleDbDataReader drTestAccessImage = cmdTestAccessImage.ExecuteReader(CommandBehavior.CloseConnection);
                if (drTestAccessImage.Read())
                {
                    //MessageBox.Show( drTestAccessImage["idCompte"].ToString());
     
                    // Charge en memoire l'image
     
                    MemoryStream mstImage = new MemoryStream((Byte[])(drTestAccessImage["Photo"]));
     
                    // Affiche l'image
                    pPhoto.Image = Image.FromStream(mstImage);
                }

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut
    En fait ca me donne ca comme erreur
    et la je ne comprends rien

    merci de m aider

    'exception System.InvalidCastException n'a pas été gérée
    Message=Impossible d'effectuer un cast d'un objet de type 'System.DBNull' en type 'System.Byte[]'.
    Source=GIEP
    StackTrace:
    à GIEP.F_GestionUser.dgwListe_CellClick(Object sender, DataGridViewCellEventArgs e) dans C:\Developpement\Projets_Net\GIEP\Gestion des inscriptions des élèves et du personnel\F_GestionUser.cs:ligne 70
    à System.Windows.Forms.DataGridView.OnCellClick(DataGridViewCellEventArgs e)
    à System.Windows.Forms.DataGridView.OnMouseClick(MouseEventArgs e)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.DataGridView.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.RunDialog(Form form)
    à System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
    à System.Windows.Forms.Form.ShowDialog()
    à GIEP.F_Protection.button3_Click(Object sender, EventArgs e) dans C:\Developpement\Projets_Net\GIEP\Gestion des inscriptions des élèves et du personnel\F_Protection.cs:ligne 38
    à System.Windows.Forms.Control.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.ButtonBase.WndProc(Message& m)
    à System.Windows.Forms.Button.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.RunDialog(Form form)
    à System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
    à System.Windows.Forms.Form.ShowDialog()
    à GIEP.F_Main.button5_Click(Object sender, EventArgs e) dans C:\Developpement\Projets_Net\GIEP\Gestion des inscriptions des élèves et du personnel\F_Main.cs:ligne 49
    à System.Windows.Forms.Control.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.ButtonBase.WndProc(Message& m)
    à System.Windows.Forms.Button.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    à System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    à System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    à System.Windows.Forms.Application.Run(Form mainForm)
    à GIEP.Program.Main() dans C:\Developpement\Projets_Net\GIEP\Gestion des inscriptions des élèves et du personnel\Program.cs:ligne 19
    à System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    à System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()
    InnerException:

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut
    En changeant la requete sql j ai plus la 1ere erreur mais une autre a la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pPhoto.Image = Image.FromStream(mstImage);

    L'exception System.ArgumentException n'a pas été gérée
    Message=Le paramètre n'est pas valide.
    Source=System.Drawing
    StackTrace:
    à System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
    à System.Drawing.Image.FromStream(Stream stream)
    à GIEP.F_GestionUser.dgwListe_CellClick(Object sender, DataGridViewCellEventArgs e) dans C:\Developpement\Projets_Net\GIEP\Gestion des inscriptions des élèves et du personnel\F_GestionUser.cs:ligne 79
    à System.Windows.Forms.DataGridView.OnCellClick(DataGridViewCellEventArgs e)
    à System.Windows.Forms.DataGridView.OnMouseClick(MouseEventArgs e)

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    c'est pourtant explicite
    Impossible d'effectuer un cast d'un objet de type 'System.DBNull' en type 'System.Byte[]'.
    tu as une valeur nulle dans la base, et tu essaye de caster null en tableau de byte
    avant le cast il faut donc tester si ce n'est pas null
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 76
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 47
    Par défaut
    Pour le null j ai résolu en chageant la requete SQL, mais c est a l affectation dans le picturebox que ca coince encore

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    le code m'a l'air bon, par contre les octets dans ta base ne représente peut etre pas un format d'image
    quel est le code d'insert de cette image ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Comment Afficher une photo en plusieurs
    Par kabidian dans le forum IHM
    Réponses: 11
    Dernier message: 31/08/2013, 21h48
  2. Comment Afficher une photo dans un rave
    Par GuyzoS dans le forum Débuter
    Réponses: 2
    Dernier message: 27/01/2010, 15h49
  3. comment afficher une photo dans un état ?
    Par dj_techno dans le forum IHM
    Réponses: 7
    Dernier message: 13/11/2007, 09h13
  4. Comment afficher une photo et une signature
    Par angiosfr dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 23/11/2005, 21h42
  5. comment afficher une boite de dialogue simple ?
    Par Ekimasu dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 08/06/2004, 16h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo