Billeder
Beskrivelse
Billeder
Access arbejder som I nok ved fint med mange forskellige billedformater - af de mest almindelige kan nævnes: bmp og wmf, der kan vises helt uden problemer - mange af de andre kræver, at der er installeret konverterings ting på maskinen, hvilket der normalt også er for mange af de mest almindelige.
Almindeligvis bruger man et OLE felt til at opbevare billederne i, men med VBA kan vi gøre det lidt lettere ved blot at opbevare en sti til billedet i databasen. Med lidt VBA kan vi få billedet vist i forms eller rapporter.
Processen er følgende:
- Lav et felt i din database, hvor brugeren kan skrive den fulde sti til billedet
- Opret den form, hvor du vil vise billedet
- Indsæt feltet med stien på formen
- Indsæt et helt almindeligt billede objekt på formen - altså ikke et ubundet eller et bundet (i første omgang indsætter du bare et tilfældigt billede i objektet). På denne måde bliver samme billede vist på alle poster indtil vi med vores kode ændrer det. Det kan være en god idé at sætte billedets TilpasStørrelsesTilstand til Stræk.
- I form_current proceduren kan du så indsætte koden:
ImageControlName er navnet på den billedekontrol du lige har indsat og ImagePath er navnet på det felt, der indeholder billedets filnavn (og sti).[ImageControlName].Picture = [ImagePath] - Samme kode kan du vælge at indsætte i AfterUpdate() så du kan rette i adressen på billedet.
Øvelse
Tag en kopi af databasen fra forrige øvelse og kald den "Billeder.mdb"
Sørg for at der kommer billeder på kundekartotekets formular.
Du kan hente billeder på www.fam-ostergaard.dk
Pak databasen sammen eller omdøb den og send den til mig.
Løsning
Du kan hente mit forslag til løsningen her og prøve at sætte billeder på.
Løsningen er baseret på følgende eventhandlere:
Først en procedure jeg kalder, hver gang billedet skal opdateres (når der skiftes mellem kunderne, redigeres i billede feltet mm.)
Private Sub UpdateBillede() On Error GoTo fejl If BilledeURL.Value <> "" Then Billede.Picture = BilledeURL.Value Else Billede.Picture = "F:\IMG_5817.JPG" End If Exit Sub fejl: MsgBox "Billedet kan ikke findes" End Sub Og dernæst de steder, hvor der skal opdateres:
Private Sub BilledeURL_BeforeUpdate(Cancel As Integer) UpdateBillede End Sub Private Sub Form_Current() UpdateBillede . . . Og endelig en knap, der kan bruges til at vælge et billede fra disken (en snut kode jeg har fundet hos Microsoft):
Private Sub cmdVælgBillede1_Click() 'Requires reference to Microsoft Office 10.0 or 11.0 Object Library. Dim fDialog As Office.FileDialog Dim varFile As Variant 'Set up the File Dialog. Set fDialog = Application.FileDialog(msoFileDialogFilePicker) With fDialog 'Allow user to make multiple selections in dialog box .AllowMultiSelect = False 'Set the title of the dialog box. .Title = "Please select one or more files" 'Clear out the current filters, and add our own. .Filters.Clear ' .Filters.Add "Access Databases", "*.MDB" ' .Filters.Add "Access Projects", "*.ADP" .Filters.Add "All Files", "*.*" 'Show the dialog box. If the .Show method returns True, the 'user picked at least one file. If the .Show method returns 'False, the user clicked Cancel. If .Show = True Then 'Loop through each file selected and add it to our list box. For Each varFile In .SelectedItems BilledeURL.Value = varFile UpdateBillede Next Else MsgBox "You clicked Cancel in the file dialog box." End If End With End Sub Brug for hjælp til VBA, VSTO eller SQL?
Scient Data tilbyder professionel IT-konsulentbistand
Kontakt Scient Data →