[VB] DAO veld is leeg => Error

Pagina: 1
Acties:

  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
Ik ben aant het werken aan een eindproject voor de school en nu zitten we met een probleem. In onze database zijn sommige velden leeg die opgeroepen worden en die in textvelden geplaatst worden. We werken met DAO. Onze code die we tot nu toe hebben is:
Set Artikel = BoekSoft.OpenRecordset( _
"SELECT Product,Fabric,Fabricw,Release,PrijsIn,PrijsEx,Image,Auteurs,Taal,Editie,ISBN,Pagemed " & _
"FROM Artikel Where Product ='" & cmbArtikel.Text & "'", _
dbOpenDynaset)
With Artikel
If Not .BOF Or Not .EOF Then
txtFabrikant.Text = !Fabric
txtWebsite.Text = !Fabricw
txtAuteur.Text = !Auteurs
txtTaal.Text = !Taal
txtEditie.Text = !Editie
txtISBN.Text = !ISBN
txtBijschrift.Text = !Pagemed
txtRelease.Text = !Release
PrijsExclBTW.Caption = "€ " & !Prijsex
PrijsIncBTW.Caption = "€ " & !PrijsIn

Afbeelding.Picture = LoadPicture(App.Path & "\Images\" & !Image)


End If


End With
We hebben al geprobeerd om bv het volgende te doen:

If !Taal Not Null then txtTaal.text=!Taal

Maar deze code werkt niet en geeft nog steeds foutberichten dat het veld Null is. Hoe kan ik dit het beste oplossen?

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Is irritant probleem, weet niet precies meer hoe ik het vroeger opgelost heb. Maar, je kunt de database veranderen. Bij de eigenschappen staat er ergens "Waarde null toelaten" oid (true/false, ja/nee)

  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

Ik gebruik altijd deze functie:

Visual Basic:
1
2
3
4
5
6
7
Function FtoStr(s)
    If IsNull(s) Then
        FtoStr = ""
    Else
        FtoStr = s
    End If
End Function


werkt perfect.

Gebruiken dus met txtTaal.text=ftostr(!taal)

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery


  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
heb het al beter gemaakt , vreemd dat mijn code nu wel werkt, was maar klein verschil in

Verwijderd

ik zou graag zien hoe je het opgelost hebt ddkiller0900

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
De snelste en simpelste oplossing (voor stringvelden dan) is om er een lege string achter te plakken, zo dus:
code:
1
txtFabrikant.Text = !Fabric & ""

Er staat me alleen iets van bij dat dit niet meer onder VB.NET werkt, waarom precies weet ik niet meer.

Daarom gebruik ik nu altijd een eigen functie varNZ een zelfgemaakte versie van de NZ functie uit Access. Deze geef je de veldwaarde mee en een default waarde, als de veldwaarde NULL is wordt de default waarde geretourneerd anders de veldwaarde. Je moet wel met Variants werken omdat die wel de waarde NULL mogen bevatten, in tegenstelling tot Strings en andere datatypes.

(Uit mijn hoofd, dus mogelijk wat typefouten)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Public Function varNZ(ByVal varWaarde_IN as Variant, ByVal varDefault_IN as Variant) as Variant

    Dim varResult as Variant

    If IsNull(varWaarde_IN) Then
        varResult = varDefault_IN
    Else
        varResult = varWaarde_IN
    End If

    varNZ = varResult

End Function


Dan krijg je:
code:
1
2
txtFabrikant.Text = varNZ(!Fabric, "")
txtFabrikantNummer.Text = varNZ(!FabricNr, 0)

  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

Lister schreef op 01 oktober 2002 @ 20:13:
De snelste en simpelste oplossing (voor stringvelden dan) is om er een lege string achter te plakken, zo dus:
code:
1
txtFabrikant.Text = !Fabric & ""


[...]
Dan zou ik de VBnullstring gebruiken, zo dus

code:
1
txtFabrikant.Text = !Fabric & VBnullstring

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery

Pagina: 1