Ole objecten (bitmap images)

Status
Niet open voor verdere reacties.
Ik kreeg een watchdog mail met de vraag of de status van mijn vraag moest worden aangepast. Dus dacht ik......vraag eens voorzichtig na! Ik dacht al aan een weekje vakantie :)
De db is inderdaad alleen maar een overzicht/verzameling van gegevens. Relaties zijn niet echt aan de orde en het heeft ook, denk ik, niet echt zin om de gegevens in verschillende tabellen onder te brengen. Ik vraag me alleen af of bijv. een tekstveld als "vermeerderingstechnieken" niet erg veel ruimte gaat bezetten als daar uitgebreide verhalen in komen.
 
Overigens moet ik er gelijk nog bijzeggen dat ik nooit een link heb gehad; ik heb dus alleen het bestand van 23 september...
 
Dat heb ik via de e-mail naar je verzonden! Dat kan ik je vanmiddag thuis nogmaals doorsturen.
 
Helaas is die mail ofwel niet aangekomen, dan wel digitaal aan stukjes gescheurd door onze digitale waakhond ;)
 
Ik heb hem nogmaals als prive bericht verstuurd.
Laat even weten of je hem binnen hebt?

Groet, Remco
 
Ik heb 't een uurtje of wat afgewacht, maar ik denk dat het toch niet aan mij lag; noppes in de meeldoos!
 
Laatst bewerkt:
Het lag niet zozeer aan jou, maar aan het bestandsformaat denk ik; Outlook weigert mdb bestanden, en een meeltje met een mdb verwijzing wordt gelijk naar de ongewenste items gebonjourd. En daar stond je vorige mail dus ook... Om er zeker van te zijn dat een bestand(mail) goed overkomt, kun je het bestand het beste eerst zippen. Dan heeft Microsof er geen problemen mee. Maar hij is ontvangen!
 
Je opzet is een beetje onhandig in mijn ogen; je gebruikt verkeerde veldeigenschappen in mijn ogen. Zo heb je een Ja/Nee veld voor eenjarig, en een Ja/Nee veld voor meerjarig. In die opzet kun je beide opties aanvinken, en dat zou niet mogelijk mogen zijn, denk ik. Hetzelfde (misschien) voor Kamerplant en Tuinplant. Dus je onderscheidings categorieën zouden beter kunnen. Het werken met OLE objecten raad ik af; ik zou met tekstvelden werken waarin je een pad opslaat, en m.b.v. images objecten het plaatje op rapport en formulier laten zien. (zeg maar de techniek uit mijn voorbeeld). Je voorbeeldje is dermate klein (en leeg;een paar voorbeeldrecords zou toch wel handig zijn) dat hij makkelijk te comprimeren en zippen is. Dus hierbij voor iedereen een werkbestandje.
 

Bijlagen

Ik zal er maandag een paar records in zetten als voorbeeld en nadenken wat te doen met de ja/nee velden.
Ik kan helaas thuis geen mdb bestanden openen. Foutje in Libreoffice (ben ik aan het uitzoeken). Dus het wordt maandag.
Goed weekend.

Groet, Remco
 
Ik heb een aantal wijzigingen aangebracht en data toegevoegd. Via de mail!

Groet, Remco
 
Ik heb de Allen Browne's programmacode op alle mogelijke manieren proberen in te passen in mijn db maar zonder resultaat. Ergens moet toch ook een pad gespecificeerd worden om bij de images te komen. Ik zag in de db administratie dat een afbeelding voor de knop om naar de foto pagina te gaan gespecificeerd stond in het eigenschappenveld onder de kop afbeeldingen C:\assets.bmp. Maar heb dit nog niet naar mijn db kunnen vertalen!
Graag hulp?
 
Ik heb onderstaande code nogmaals proberen in te voegen in mijn db. Standplaats zon is een tekstvak.
Ik krijg echter een aantal foutmeldingen:
1. Private Sub Form_Load()
er is geen sub-form!

2. Me.Foto.Value = Path & "\" & Me.OpenArgs

?? Kun je wat hints geven?

Private Sub Standplaats_zon_Click()

'Copyright: Allen Browne's Database And Training, 2007.
'Author: Allen Browne. allen@allenbrowne.com
Option Compare Database
Option Explicit

' Only the first X bytes of the file are read into a byte array.
' BUFFERSIZE is X. A larger number will use more memory and
' be slower. A smaller number may not be able to decode all
' JPEG files. Feel free to play with this number.
Private Const BUFFERSIZE As Long = 65535

Dim ConMod
Dim Path As String
Dim iWidth As Long, iHeight As Long

Private Sub Form_Load()
Dim Path As String
Path = CurrentProject.Path
Dim smt() As String

If Not IsNull(Me.OpenArgs) Then
Me.Foto.Value = Path & "\" & Me.OpenArgs
smt = Split(ListImageDimensions(Me.Foto), "|")
DoCmd.MoveSize 5000, 400, (smt(0) * 8) + 100, (smt(1) * 8) + 300
Me.ImageFrame.Width = smt(0) * 8
Me.ImageFrame.Height = smt(1) * 8
''Me.ImageFrame.SizeMode = acOLESizeClip
''Me.ImageFrame.SizeMode = acOLESizeZoom
Me.ImageFrame.SizeMode = acOLESizeStretch
Me.Repaint
If (IsRelative(Me.Foto) = True) Then
Me.ImageFrame.Picture = Path & Me.Foto
Else
Me.ImageFrame.Picture = Me.Foto
End If
Else
MsgBox "Er is geen foto om te laten zien...", vbOKOnly
DoCmd.Close acForm, Me.Name
End If

End Sub

Private Sub cmdCancel_Click()
On Error GoTo Err_Handler

DoCmd.Close acForm, Me.Name, acSaveNo

Exit_Handler:
Exit Sub

Err_Handler:
Call LogError(Err.Number, Err.Description, ConMod & ".cmdCancel_Click")
Resume Exit_Handler
End Sub

Function IsRelative(fName As String) As Boolean
' Onwaar als resultaat geven als de bestandsnaam een station of UNC-pad bevat
IsRelative = (InStr(1, fName, ":") = 0) And (InStr(1, fName, "\\") = 0)
End Function

Private Sub Foto_AfterUpdate()

If (IsRelative(Me.Foto) = True) Then
Me![ImageFrame].Picture = Path & Me.Foto
Else
Me![ImageFrame].Picture = Me.Foto
End If

End Sub

Private Sub ImageFrame_Click()

DoCmd.Close acForm, Me.Name

End Sub

Function ImgDimension(img)
Dim myImg, fs

On Error Resume Next
iWidth = 9999
iHeight = 9999
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.FileExists(img) Then Exit Function
Set myImg = LoadPicture(img)
iWidth = Round(myImg.Width / 26.4583)
iHeight = Round(myImg.Height / 26.4583)
Set myImg = Nothing

End Function

Function ListImageDimensions(sFoto As String) As String
Dim sFileName As String
Dim sPath As String
Dim sTemp As String
'' sPath = "F:\AT\TUIN EN KAS\MDB images planten bestand\database"
'' sFileName = Dir(sPath & "*.jpg")
sFileName = sFoto

'' While sFileName <> ""
ImgDimension sFileName
sTemp = iWidth & "|" & iHeight
'' Wend
ListImageDimensions = sTemp
End Function

Private Sub Knop730_Click()
Dim smt() As String
smt = Split(ListImageDimensions(Me.Foto), "|")

''Me.InsideHeight = smt(1) * 8
''Me.InsideWidth = smt(0) * 8

End Sub
 
Kun je de code opmaken met de Code knop (knop #) met netjes ingesprongen lussen? Zo is hij nauwelijks leesbaar.
 
Dit is hem!

Code:
Option Compare Database

Private Sub Form_Open(Cancel As Integer)

End Sub



Private Sub Standplaats_zon_Click()

'Copyright: Allen Browne's Database And Training, 2007.
'Author:    Allen Browne. [email]allen@allenbrowne.com[/email]
Option Explicit

' Only the first X bytes of the file are read into a byte array.
' BUFFERSIZE is X.  A larger number will use more memory and
' be slower.  A smaller number may not be able to decode all
' JPEG files.  Feel free to play with this number.
Private Const BUFFERSIZE As Long = 65535

Dim ConMod
Dim Path As String
Dim iWidth As Long, iHeight As Long

Private Sub Form_Load()
Dim Path As String
Path = CurrentProject.Path
Dim smt() As String

If Not IsNull(Me.OpenArgs) Then
    Me.Foto.Value = Path & "\" & Me.OpenArgs
    smt = Split(ListImageDimensions(Me.Foto), "|")
    DoCmd.MoveSize 5000, 400, (smt(0) * 8) + 100, (smt(1) * 8) + 300
    Me.ImageFrame.Width = smt(0) * 8
    Me.ImageFrame.Height = smt(1) * 8
    ''Me.ImageFrame.SizeMode = acOLESizeClip
    ''Me.ImageFrame.SizeMode = acOLESizeZoom
    Me.ImageFrame.SizeMode = acOLESizeStretch
    Me.Repaint
    If (IsRelative(Me.Foto) = True) Then
        Me.ImageFrame.Picture = Path & Me.Foto
    Else
        Me.ImageFrame.Picture = Me.Foto
    End If
Else
    MsgBox "Er is geen foto om te laten zien...", vbOKOnly
    DoCmd.Close acForm, Me.Name
End If

End Sub

Private Sub cmdCancel_Click()
On Error GoTo Err_Handler
    
    DoCmd.Close acForm, Me.Name, acSaveNo

Exit_Handler:
    Exit Sub

Err_Handler:
    Call LogError(Err.Number, Err.Description, ConMod & ".cmdCancel_Click")
    Resume Exit_Handler
End Sub

Function IsRelative(fName As String) As Boolean
    ' Onwaar als resultaat geven als de bestandsnaam een station of UNC-pad bevat
    IsRelative = (InStr(1, fName, ":") = 0) And (InStr(1, fName, "\\") = 0)
End Function

Private Sub Foto_AfterUpdate()

    If (IsRelative(Me.Foto) = True) Then
        Me![ImageFrame].Picture = Path & Me.Foto
    Else
        Me![ImageFrame].Picture = Me.Foto
    End If

End Sub

Private Sub ImageFrame_Click()

    DoCmd.Close acForm, Me.Name

End Sub

Function ImgDimension(img)
Dim myImg, fs
    
    On Error Resume Next
    iWidth = 9999
    iHeight = 9999
    Set fs = CreateObject("Scripting.FileSystemObject")
    If Not fs.FileExists(img) Then Exit Function
    Set myImg = LoadPicture(img)
    iWidth = Round(myImg.Width / 26.4583)
    iHeight = Round(myImg.Height / 26.4583)
    Set myImg = Nothing

End Function

Function ListImageDimensions(sFoto As String) As String
Dim sFileName As String
Dim sPath As String
Dim sTemp As String
''    sPath = "F:\AT\TUIN EN KAS\MDB images planten bestand\database"
''    sFileName = Dir(sPath & "*.jpg")
    sFileName = sFoto
    
''    While sFileName <> ""
        ImgDimension sFileName
        sTemp = iWidth & "|" & iHeight
''    Wend
    ListImageDimensions = sTemp
End Function

Private Sub Knop730_Click()
Dim smt() As String
smt = Split(ListImageDimensions(Me.Foto), "|")

''Me.InsideHeight = smt(1) * 8
''Me.InsideWidth = smt(0) * 8

End Sub
 
Laatst bewerkt:
Ik durf het bijna niet te vragen maar is het niet op te lossen of ben ik gewoon 'geexcommuniceerd" :p
 
Laatst bewerkt:
Leg nog even uit wat het probleem nu is, want als ik de draad zo teruglees, weet ik niet meer waar hij over gaat :) En wat je wilt...
 
Het ging om een planten db waarbij er images ingevoegd moeten worden. Ik had dit als OLE object gedaan wat mij dus is afgeraden! Het was ook niet mogelijk om deze OLE objecten op een label uit te printen. Om dit op te lossen had jij me geadviseerd om tekstvelden te verwijzen naar het pad van het plaatje, en het Image object met VBA te koppelen.
Jij hebt mij toen de code van Allen Brown gegeven maar dat krijg ik niet aan de praat.
Tot zover de stand van zaken!
 
Kan ik er van uitgaan dat geen bericht betekent dat jij de image koppeling ook niet aan de praat krijgt?

Groet, Remco
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan