Lomakkeen, raportin tai tietokantasivun kansion kuvien näyttäminen

Huomautus

Office 365 ProPlus nimetään uudelleen Microsoft 365 Apps for enterprise -sovellukseksi. Lisätietoja tästä muutoksesta on tässä blogikirjoituksessa.

Alkuperäinen KB-numero:   285820

Huomautus

Edellyttää asiantuntevaa koodausta, yhteentoimivuutta ja usean käyttäjän taitoja. Tämä artikkeli koskee Microsoft Access -tietokantaa (.mdb/.accdb) ja Microsoft Access -projektia (.adp).

Yhteenveto

Joskus kuvien tallentaminen Microsoft Access -taulukkoon ei ole käytännöllistä. Jos kuvia on paljon tai kukin kuvatiedosto on suuri, Microsoft Access -tietokantatiedoston koko voi kasvaa nopeasti.

Tässä artikkelissa esitellään mukautettu funktio, jonka avulla voit

  • Tallenna tiedostopolut ja kuvien nimet taulukkoon.
  • Kuvien näyttäminen kuvaohjausobjektin avulla.
  • Piilota kuvaohjausobjekti, jos kuvaa ei ole käytettävissä.
  • Anna palautetta kuvan näytön tilasta.

Tässä artikkelissa on myös Visual Basic -esimerkkikomentosarja, jonka avulla voit näyttää kuvat tietokantasivulla.

Huomautus

Vaikka tässä esimerkissä käytetään bittikarttakuvia (.bmp), voit käyttää myös muita kuvatyyppejä, kuten .jpg, .pcx ja .gif.

Microsoft esittää ohjelmointiesimerkkejä vain asian havainnollistamiseksi, ilman suoraa tai epäsuoraa vastuuta niiden toimivuudesta. Tämä sisältää muunmuassa epäsuorat vastuut soveltuvuudesta kaupankäyntiin tai soveltuvuuteen yksilöityyn käyttöön. Tässä artikkelissa oletetaan, että olet perehtynyt käytettyyn ohjelmointikieleen, sekä proseduurien luonti- ja virheenkorjaustyökaluihin. Microsoftin tukihenkilöt voivat auttaa selvittämään tietyn proseduurin toiminnallisuutta, mutta he eivät muokkaa näitä esimerkkejä parantamaan yksittäisen tarpeen toiminnallisuutta eivätkä luo siihen proseduureja.

Taulukon luominen tiedosto- ja polkutietojen tallentamista varten

  1. Avaa mallitietokanta Northwind.mdb tai NorthwindCS.adp-malliprojekti.

  2. Luo seuraava taulukko joko Northwind.mdb-tiedostossa tai NorthwindCS.adp-tiedostossa.

    Kohteessa: Northwind.mdb:

    Table: tblImage
    ----------------------------
    Field Name: ImageID
    Data Type: AutoNumber
    Indexed: Yes (No Duplicates)
    
    Field Name: txtImageName
    Data Type: Text
    
    Table Properties: tblImage
    --------------------------
    PrimaryKey: ImageID
    

    Kohteessa: NorthwindCS.adp:

    Table: tblImage
    -----------------------
    Column Name: ImageID
    Datatype: Int
    Allow Nulls: Unchecked
    Identity: Yes
    
    Column Name: txtImageName
    Datatype: varchar
    
    Table Properties: ImageTable
    -------------------------------
    Primary Key Constraint: ImageID
    
  3. Avaa tblImage-taulukko taulukkonäkymässä ja lisää sitten bittikarttatiedoston polku ja nimi kuhunkin tietueeseen. Seuraavassa esimerkkitaulukossa esitetään, miltä tietueet näyttävät:

    Tyyppi Esimerkki
    Absoluuttinen (paikallinen) C: \ Windows \ Zapotec.bmp
    Absoluuttinen (UNC-polku) \\Palvelimen nimi\jakonimi\Zapotec.bmp
    Suhteellinen Kävi koulua Zapotec.bmp

Mukautetun funktion luominen

  1. Luo uusi moduuli ja liitä tai kirjoita seuraava koodi:

    Option 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. Tallenna moduuli moduuliksi 1.

Mukautetun funktion käyttäminen lomakkeessa

  1. Luo seuraava uusi lomake, joka perustuu tblImage-taulukkoon.

    Form: 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>
    

    Huomautus

    Jos et halua polun näkyvän lomakkeessa, voit määrittää Visible ohjausobjektin ominaisuuden txtImageName arvoksi Epätosi.

  2. Valitse Näytä-valikosta Koodija liitä tai kirjoita seuraava koodi:

    Option 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. Avaa frmImage-lomake lomakenäkymässä. Huomaa, että lomakkeessa näkyy kunkin tietueen vastaava bittikartta. Jos txtImageName kenttä on tyhjä tai jos kuvaa ei löydy, näyttöön tulee sopivia sanomia kuvakehyksen sijaan.

Mukautetun funktion käyttäminen raportissa

  1. Luo seuraava ImageTable-taulukkoon perustuva uusi raportti.

    Report: 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>
    

    Huomautus

    Jos et halua polun näkyvän raportissa, voit määrittää Visible ohjausobjektin ominaisuuden txtImageName arvoksi Epätosi.

  2. Valitse Näytä-valikosta Koodija liitä tai kirjoita seuraava koodi:

    Option Compare Database
    Option Explicit
    
    Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
     Me!txtImageNote = DisplayImage(Me!ImageFrame, Me!txtImageName)
    End Sub
    
  3. Avaa rptImage-raportti esikatselussa. Huomaa, että raportissa näkyy kunkin tietueen vastaava bittikartta. Jos txtImageName kenttä on tyhjä tai jos kuvaa ei löydy, näyttöön tulee sopivia sanomia kuvakehyksen sijaan.

Tietokantasivun mukautetun funktion monistaminen

  1. Luo seuraava uusi tietokantasivu, joka perustuu tblImage-taulukkoon.

    Data Access Page: dapImage
    -----------------------------
    Title: Image Data Access Page
    
    Image Control
    ---------------------------------
    ID: ImageFrame
    
    Text box
    ----------------------
    ID: txtImageID
    ControlSource: ImageID
    
    Text box
    ---------------------------
    ID: txtImageName
    ControlSource: txtImageName
    

    Huomautus

    Jos et halua polun näkyvän sivulla, voit määrittää Visibility ohjausobjektin ominaisuuden txtImageName arvoksi Piilotettu.

  2. Valitse Työkalut-valikosta Makrotja valitse sitten Microsoft Script Editor.

  3. Lisää seuraava komentosarja Html-asiakirjan HEAD-tunnisteosan MSODSC:n nykyiseen tapahtumaan.

    Huomautus

    Sinun on läpäistävä parametri, jotta tapahtuma voidaan käynnistää.

    <SCRIPT language=vbscript event=Current(oEventInfo) for=MSODSC>
    <!--
    ImageFrame.src=txtImageName.value
    -->
    </SCRIPT>
    
  4. Avaa dapImage-sivu sivunäkymässä. Huomaa, että sivulla näkyy kunkin tietueen vastaava bittikartta. Jos txtImageName-kenttä on tyhjä, näyttöön tulee ohjausobjektin kuvake. Jos kuvaa ei löydy, kuvaohjausobjektissa näkyy X-kuvake.

http:// polun käyttäminen lomakkeessa

Jos haluat käyttää http:// polkua lomakkeessa, käytä Web-selainohjausobjektia (shdocvw.dll) seuraavasti:

  1. Lisää lomakkeeseen Microsoft Web Browser -ohjausobjekti ja anna sille nimeksi WebBrowser.

  2. Lisää moduuliin seuraava koodi:

    Public 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. Lisää lomakkeen taakse seuraava koodi:

    Option 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