Lomakkeen, raportin tai tietokantasivun kansion kuvien näyttäminen
Alkuperäinen KT numero: 285820
Huomautus
Edellyttää asiantuntijakoodausta, yhteentoimivuutta ja moniajotaitoa. 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 useita tai jos jokainen kuvatiedosto on suuri, Microsoft Access -tietokantatiedoston koko voi kasvaa nopeasti.
Tässä artikkelissa esitellään mukautettua funktiota, jonka avulla voit:
- Tallenna tiedostopolut ja kuvien nimet taulukkoon.
- Näytä kuvat kuvaohjausobjektin avulla.
- Piilota kuvan ohjausobjekti, jos kuvaa ei ole käytettävissä.
- Anna palautetta kuvan näyttö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 bittikartan kuvia (.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.
Luodaan taulukkoa tiedoston ja polun tietojen tallentamista varten
Avaa mallitietokanta, Northwind.mdb tai malliprojekti NorthwindCS.adp.
Luo seuraava taulukko joko Northwind.mdb tai NorthwindCS.adp-tiedostoon.
In 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
Avaa tblImage-taulukko taulukkonäkymässä ja lisää sitten bittikarttatiedoston polku ja nimi kuhunkin tietueeseen. Seuraavassa esimerkkitaulukossa näytetään, miltä tietueet saattavat näyttää:
Kirjoita Esimerkki Absoluuttinen (paikallinen) C:\Windows\Zapotec.bmp Absoluuttinen (UNC-polku) \\Servername\sharename\Zapotec.bmp Suhteellinen Zapotec.bmp
Mukautetun funktion luominen
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
Tallenna moduuli muodossa Module1.
Mukautetun funktion käyttäminen lomakkeessa
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 ominaisuudeksitxtImageName
False.Valitse Näytä-valikostaKoodi ja 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
Avaa frmImage-lomake lomakenäkymässä. Huomaa, että lomake näyttää kunkin tietueen vastaavan bittikartan.
txtImageName
Jos kenttä on tyhjä tai kuvaa ei löydy, näyttöön tulee kuvakehyksen sijaan sopivia viestejä.
Mukautetun funktion käyttäminen raportissa
Luo seuraava uusi raportti, joka perustuu ImageTable-taulukkoon.
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 ominaisuudeksitxtImageName
False.Valitse Näytä-valikostaKoodi ja 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
Avaa raportti esikatselunäkymässä. Huomaa, että raportti näyttää kunkin tietueen vastaavan bittikartan.
txtImageName
Jos kenttä on tyhjä tai kuvaa ei löydy, näyttöön tulee kuvakehyksen sijaan sopivia viestejä.
Mukautetun funktion monistaminen tietokantasivulla
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
ohjausobjektintxtImageName
ominaisuudeksi Piilotettu.Valitse Työkalut-valikostaMakrot ja valitse sitten Microsoft Script Editor.
Lisää seuraava komentosarja MSODSC:n Nykyiseen tapahtumaan HTML-asiakirjan HEAD-tunnisteosassa.
Huomautus
Sinun on välitettävä parametri, jotta tapahtuma voidaan käynnistää.
<SCRIPT language=vbscript event=Current(oEventInfo) for=MSODSC> <!-- ImageFrame.src=txtImageName.value --> </SCRIPT>
Avaa dapImage-sivu sivunäkymässä. Huomaa, että sivulla näkyy kunkin tietueen vastaava bittikartta. Jos txtImageName-kenttä on tyhjä, näkyviin tulee ohjausobjektikuvake. 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ä selainohjausobjektia (shdocvw.dll) seuraavasti:
Lisää lomakkeeseen Microsoft Web Browser -ohjausobjekti ja anna sille nimeksi WebBrowser.
Lisää seuraava koodi moduuliin:
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
Lisää seuraava koodi lomakkeen taakse:
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
Palaute
https://aka.ms/ContentUserFeedback.
Tulossa pian: Vuoden 2024 aikana poistamme asteittain GitHub Issuesin käytöstä sisällön palautemekanismina ja korvaamme sen uudella palautejärjestelmällä. Lisätietoja on täällä:Lähetä ja näytä palaute kohteelle