Base de données Access 2016

Base de données Access 2016

Exemple de table Clients en mode Saisie ou Affichage

Exemple de table en mode création Table Clients

Gérer des photos et des pièces jointes

Insertion de photo dans un champ ou une colonne

Exemple de formulaire Clients avec 7 enregistrements

Enregistrement numéro 1

Enregistrement numéro 2

PARTIE ACCESS NIVEAU VBA +++

SOURCE WEB ORIGINE

https://docs.microsoft.com/fr-fr/office/troubleshoot/access/display-images-using-custom-function

Comment afficher des images à partir d’un dossier dans un formulaire, un rapport ou une page d’accès aux données

  • Article
  • 14/02/2022
  • 6 minutes de lecture
  • 1 contributeur
  • S’applique à:Access 2010, Microsoft Office Access 2007, Microsoft Office Access 2003

 Notes

Office 365 ProPlus est renommé Applications Microsoft 365 pour les entreprises. Pour plus d’informations sur ce changement, lisez ce billet de blog.

Numéro de la ko d’origine :   285820

 Notes

Nécessite un codage expert, une interopérabilité et des compétences multi-outils. Cet article s’applique à une base de données Microsoft Access (.mdb/.accdb) et à un projet Microsoft Access (.adp).

Résumé

Parfois, il n’est pas pratique de stocker des images dans une table Microsoft Access. Si vous avez de nombreuses images ou si chacun de vos fichiers image est grand, la taille du fichier de base de données Microsoft Access peut rapidement augmenter.

Cet article illustre une fonction personnalisée que vous pouvez utiliser pour :

  • Stockez les chemins d’accès aux fichiers et les noms des images dans une table.
  • Afficher des images à l’aide d’un contrôle Image.
  • Masquer le contrôle d’image si aucune image n’est disponible.
  • Fournissez des commentaires sur l’état d’affichage de l’image.

Cet article contient également des exemples Visual Basic script que vous pouvez utiliser pour afficher les images dans une page d’accès aux données.

 Notes

Bien que cet exemple utilise des images bitmap (.bmp), vous pouvez également utiliser d’autres types d’image, tels que .jpg, .pcx et .gif.

Microsoft fournit des exemples de programmation à titre d’illustration uniquement, sans garantie expresse ou implicite. Cela inclut, sans y être limité, les garanties implicites de commercialisation et d’adaptation à un but en particulier. Cet article considère que vous connaissez le langage de programmation présenté et les outils utilisés pour créer et déboguer des procédures. Les techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d’une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques.

Création de la table pour stocker les données de fichier et de chemin d’accès

  1. Ouvrez l’exemple de base de données, Northwind.mdb, ou l’exemple de projet, NorthwindCS.adp.
  2. Créez le tableau suivant dans Northwind.mdb ou dans NorthwindCS.adp.Dans Northwind.mdb :ConsoleCopierTable: tblImage ---------------------------- Field Name: ImageID Data Type: AutoNumber Indexed: Yes (No Duplicates) Field Name: txtImageName Data Type: Text Table Properties: tblImage -------------------------- PrimaryKey: ImageID Dans NorthwindCS.adp :ConsoleCopierTable: tblImage ----------------------- Column Name: ImageID Datatype: Int Allow Nulls: Unchecked Identity: Yes Column Name: txtImageName Datatype: varchar Table Properties: ImageTable ------------------------------- Primary Key Constraint: ImageID
  3. Ouvrez la table tblImage en affichage Feuille de données, puis ajoutez le chemin d’accès et le nom d’un fichier bitmap à chaque enregistrement. Le tableau d’exemples suivant montre à quoi peuvent ressembler les enregistrements :TABLE 1TypeExempleAbsolute (Local)C:\Windows\Zapotec.bmpAbsolute (chemin UNC)\\Servername\sharename\Zapotec.bmpRelativeZapotec.bmp

Création de la fonction personnalisée

  1. Créez un module, puis collez ou tapez le code suivant :VBCopierOption Compare Database Option Explicit Public Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As String On Error GoTo Err_DisplayImage Dim strResult As String Dim strDatabasePath As String Dim intSlashLocation As Integer With ctlImageControl If IsNull(strImagePath) Then .Visible = False strResult = "No image name specified." Else If InStr(1, strImagePath, "\") = 0 Then ' Path is relative strDatabasePath = CurrentProject.FullName intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath)) strDatabasePath = Left(strDatabasePath, intSlashLocation) strImagePath = strDatabasePath & strImagePath End If .Visible = True .Picture = strImagePath strResult = "Image found and displayed." End If End With Exit_DisplayImage: DisplayImage = strResult Exit Function Err_DisplayImage: Select Case Err.Number Case 2220 ' Can't find the picture. ctlImageControl.Visible = False strResult = "Can't find image in the specified name." Resume Exit_DisplayImage: Case Else ' Some other error. MsgBox Err.Number & " " & Err.Description strResult = "An error occurred displaying image." Resume Exit_DisplayImage: End Select End Function
  2. Enregistrez le module en tant que Module1.

Utilisation de la fonction personnalisée dans un formulaire

  1. Créez le nouveau formulaire suivant basé sur la table tblImage.ConsoleCopierForm: frmImage ---------------------- Caption: Image Form RecordSource: tblImage Image Control --------------------------------- Name: ImageFrame Picture: "C:\Windows\Zapotec.bmp" Text box ---------------------- Name: txtImageID ControlSource: ImageID Text box --------------------------- Name: txtImageName ControlSource: txtImageName Text box --------------------------- Name: txtImageNote ControlSource: <Blank>  NotesSi vous ne souhaitez pas que le chemin d’accès apparaisse dans le formulaire, Visible vous pouvez définir la propriété du txtImageName contrôle sur False.
  2. Dans le menu Affichage , cliquez sur Code, puis collez ou tapez le code suivant :VBCopierOption Compare Database Option Explicit Private Sub Form_AfterUpdate() CallDisplayImage End Sub Private Sub Form_Current() CallDisplayImage End Sub Private Sub txtImageName_AfterUpdate() CallDisplayImage End Sub Private Sub CallDisplayImage() Me!txtImageNote = DisplayImage(Me!ImageFrame, Me!txtImageName) End Sub
  3. Ouvrez le formulaire frmImage en mode Formulaire. Notez que le formulaire affiche l’bitmap correspondante pour chaque enregistrement. Si le txtImageName champ est vide ou si l’image est in trouvée, vous recevez les messages appropriés au lieu du cadre d’image.

Utilisation de la fonction personnalisée dans un rapport

  1. Créez le rapport suivant basé sur la table ImageTable.ConsoleCopierReport: rptImage ---------------------- Caption: Image Report RecordSource: tblImage Image Control --------------------------------- Name: ImageFrame Picture: "C:\Windows\Zapotec.bmp" Text box ---------------------- Name: txtImageID ControlSource: ImageID Text box --------------------------- Name: txtImageName ControlSource: txtImageName Text box --------------------------- Name: txtImageNote ControlSource: <Blank>  NotesSi vous ne souhaitez pas que le chemin d’accès apparaisse dans l’état, Visible vous pouvez définir la propriété du txtImageName contrôle sur False.
  2. Dans le menu Affichage , cliquez sur Code, puis collez ou tapez le code suivant :VBCopierOption Compare Database Option Explicit Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer) Me!txtImageNote = DisplayImage(Me!ImageFrame, Me!txtImageName) End Sub
  3. Ouvrez l’état rptImage en mode Aperçu avant impression. Notez que le rapport affiche l’bitmap correspondante pour chaque enregistrement. Si le txtImageName champ est vide ou si l’image est in trouvée, vous recevez les messages appropriés au lieu du cadre d’image.

Duplicatation de la fonction personnalisée dans une page d’accès aux données

  1. Créez la page d’accès aux données suivante basée sur la table tblImage.ConsoleCopierData Access Page: dapImage ----------------------------- Title: Image Data Access Page Image Control --------------------------------- ID: ImageFrame Text box ---------------------- ID: txtImageID ControlSource: ImageID Text box --------------------------- ID: txtImageName ControlSource: txtImageName  NotesSi vous ne souhaitez pas que le chemin d’accès apparaisse dans la page, Visibility txtImageName vous pouvez définir la propriété du contrôle sur Masqué.
  2. Dans le menu Outils, pointez sur Macros, puis cliquez sur Microsoft Script Editor.
  3. Ajoutez le script suivant à l’événement Current du MSODSC dans la partie balise HEAD du document HTML. NotesVous devez transmettre un paramètre afin que l’événement soit déclenché.Script Visual BasicCopier<SCRIPT language=vbscript event=Current(oEventInfo) for=MSODSC> <!-- ImageFrame.src=txtImageName.value --> </SCRIPT>
  4. Ouvrez la page dapImage en affichage Page. Notez que la page affiche l’bitmap correspondante pour chaque enregistrement. Si le champ txtImageName est vide, une icône de contrôle s’affiche. Si l’image est in trouvée, une icône X apparaît dans le contrôle image.

Utiliser un http:// chemin d’accès dans un formulaire

Pour utiliser un chemin d http:// dans un formulaire, utilisez le contrôle de navigateur Web (shdocvw.dll) comme suit :

  1. Ajoutez un contrôle Microsoft Web Browser au formulaire et nommez-le WebBrowser.
  2. Ajoutez le code suivant à un module :VBCopierPublic Function DisplayImageWeb(ctlBrowserControl As Control, _ strImagePath As Variant) On Error GoTo Err_DisplayImage Dim strDatabasePath As String Dim intSlashLocation As Integer With ctlBrowserControl If IsNull(strImagePath) Then ElseIf Left(strImagePath, 4) = "http" Then .Navigate (strImagePath) Else If InStr(1, strImagePath, "\") = 0 Then ' Path is relative strDatabasePath = CurrentProject.FullName intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath)) strDatabasePath = Left(strDatabasePath, intSlashLocation) strImagePath = strDatabasePath & strImagePath End If .Navigate (strImagePath) End If End With Exit_DisplayImage: Exit Function Err_DisplayImage: Select Case Err.Number Case Else MsgBox Err.Number & " " & Err.Description Resume Exit_DisplayImage: End Select End Function
  3. Ajoutez le code suivant derrière le formulaire :VBCopierOption Compare Database Option Explicit Private Sub Form_AfterUpdate() CallDisplayImage End Sub Private Sub Form_Current() CallDisplayImage End Sub Private Sub txtImageName_AfterUpdate() CallDisplayImage End Sub Private Sub CallDisplayImage() DisplayImageWeb Me.WebBrowser9, Me.txtImageName End Sub

Contenu recommandé

À propos de l’auteur

Avatar de l’utilisateur

formateurbureautique2022 administrator

Secured By miniOrange