Toon posts:

access/vba [ongeldig gebruik van Null]

Pagina: 1
Acties:
  • 430 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
hallo mensen,

ik ben momenteel bezig met een access database. In één van de tabellen wordt een adres opgeslagen van een afbeelding. Via VBA plaats ik deze afbeelding dan in een 'Picture' op m'n formulier.

In mijn script kan ik nu het zogeheten "browser" venster omhoog halen. Het bestand dat hier aangevinkt wordt schrijf ik vervolgens naar:
1. Tabel (voor opslag)
2. Picture op formulier (ter voorbeeld)

Op deze manier zorg ik ervoor dat de database maximaal 5 foto's bevat (dit komt ten goede van de grote van de database).

Nu wil ik dat als ik mijn formulier open de volgende zaken doorlopen worden:
- Formulier openen
- controlleren of er al een link in de tabel staat
- zo ja: Wordt het plaatje ingevuld met deze link
- zo nee: Wordt het plaatje ingevuld met een standaard foto

Dit gaat dus mis. Ik krijg het bericht "ongeldig gebruik van Null" als er één of meer afbeeldingen niet in de tabel staan (anders gezegd; als hij de standaard foto moet weergeven). Mijn code is als volgd:

[voor het vullen van de picture & tabel]
-------------------------------------------------------------------------------
Private Sub Knop19_Click()

Dim dlgOpen As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Dim vrtselecteditem As Variant
With fd
If .Show = -1 Then
For Each vrtselecteditem In .SelectedItems
If FileLen(vrtselecteditem) / 1024 > 100 Then
MsgBox "Foto is te groot en wordt niet geupload!! " & FileLen(vrtselecteditem) / 1024 & " kB"
Else
Afbeelding_1 = vrtselecteditem
Afbeelding21.Picture = vrtselecteditem
Dim destinationfile As String
destinationfile = "c:/mobile/NEW-" & Auto_ID & "_1.jpg"
FileCopy vrtselecteditem, destinationfile ' Copy source to target.
MsgBox "Foto toegevoegd!!"
End If
Next vrtselecteditem
End If
End With
Set fd = Nothing
End Sub


[Bij het opstarten van het formulier]
-------------------------------------------------------------------------------

If Afbeelding_1 = Null Then
Afbeelding21.Picture = "C:\Documents and Settings\Monnikhof\Mijn documenten\Mijn afbeeldingen\details_de.bmp"

Else
Afbeelding21.Picture = Afbeelding_1

End If

-------------------------------------------------------------------------------

hierbij gaat het dus mis bij het laatste stuk code. De foutopsporing geeft "afbeelding 21.picture = afbeelding_1" als fout.

(veel tekst :? maar ik zie zelf geen probleem)

  • Carpenter
  • Registratie: December 2002
  • Laatst online: 23:18
Afbeelding21.Picture = "" & Afbeelding_1 & "" :? Kweet niet of het helpt maar je zou het kunnen proberen.

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 01-09 09:29

Schonhose

Retro Icoon

Ik neem even aan dat Afbeelding_1 van het type string is. Daar werkt het null object niet op.

Wat je kan doen is i.p.v. checken op null, checken of de string leeg is middels "" (zoals hierboven beschreven)

Anders kun je nog een andere variabele maken die bijhoudt of een plaatje geladen kan worden

Dim PlaatjeGeladen as boolean

In het begin aangeven dat PlaatjeGeladen = False en wanneer er een pic geladen wordt dan deze op true zetten.

Omdt hij in meerdere procedures beschikbaar moet zijn kun je hier een Global van maken of aan elke procedure meegeven (laatste is netter)

Dan i.p.v. de if statement met Null gebruiken:

If PlaatjeGeladen = False then
'load Default pic
else
'load pic
end if

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


Verwijderd

of probeer is

if isNull(Afbeelding_1)

Verwijderd

Topicstarter
Perfecto :Y) de laatste oplossing (isnull) werkt !! Nu eens zien wat het volgende is waar ik tegen aanloop O-) thx