Avatar billede mini41 Nybegynder
17. november 2003 - 14:14 Der er 10 kommentarer og
1 løsning

Forhindre fejl ved ikke numerisk felt

Jeg har en database hvor et af felterne hedder 'pris'
Dette felt indeholder i 99% af tilfældene en numerisk værdi, men kan også indeholde bogstaver.

Jeg henter værdien fra dette felt med bpris=rs("pris") hvilket jo giver en fejl hvis feltet ikke er numerisk.

Hvordan undgår jeg fejl og samtidig sætter bpris til en fast tekst som feks "ingen pris online"
Avatar billede keysersoze Ekspert
17. november 2003 - 15:37 #1
If isnummeric(rs("pris")) Then
  bpris = rs("pris")
Else
bpris = "ingen pris online"
End If
Avatar billede mini41 Nybegynder
17. november 2003 - 15:59 #2
Det giver en fejl :

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'isnummeric'
Avatar billede mini41 Nybegynder
17. november 2003 - 16:03 #3
Her er den del af scriptet:

strSQL = "SELECT * FROM ibmthinkpad WHERE"
strSQL = strSQL & " (partnummer LIKE '" & strKeyword &"' OR beskrivelse LIKE '" & strKeyword & "')"
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=d:\websider\global\comgrosinfo.dk\comgrosinfo.dk\db\ibm.mdb"
Conn.Open DSN
Conn.Execute(strSQL)
Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
If isnummeric(rs("pris")) Then
  bpris = rs("pris")
Else
bpris = "ingen pris online"
End If
bruttopris=rs("pris")
bruttopris=bruttopris*7.5
bruttopris=bruttopris + 200
bt=bruttopris * 10 / 100
bruttopris=bruttopris+bt
bruttopris=bruttopris / 0.85
usgpris=bruttopris / 0.92
end if
Avatar billede keysersoze Ekspert
17. november 2003 - 16:07 #4
hov - der er selvfølgelig kun ét m i numeric...

If isnumeric(rs("pris")) Then
  bpris = rs("pris")
Else
  bpris = "ingen pris online"
End If
Avatar billede mini41 Nybegynder
17. november 2003 - 16:12 #5
Ja så virker det (efter jeg fik rettet scriptet til)
Jeg har bare et prb.
Jeg bruger formatnumber til prisen :
FormatNumber (bruttopris,2)

Dette giver jo så en fejl, jeg kan godt lave en ny if/then men er der en smartere måde ?
Avatar billede keysersoze Ekspert
17. november 2003 - 16:19 #6
If isnumeric(rs("pris")) Then
  bpris = FormatNumber(rs("pris"))
Else
  bpris = "ingen pris online"
End If
Avatar billede mini41 Nybegynder
17. november 2003 - 16:25 #7
Det virker, bortset fra jeg får mange decimaler da jeg ikke bruger pris,2

hvad kan jeg gøre ?
Avatar billede keysersoze Ekspert
17. november 2003 - 16:30 #8
bpris = FormatNumber(rs("pris"),2)
Avatar billede mini41 Nybegynder
17. november 2003 - 16:36 #9
Nøh det ændrer ikke noget (1472,05882352941)

når jeg udskriver variablen bruger jeg response.write bpris mod før response.write FormatNumber (bpris,2)
Avatar billede keysersoze Ekspert
17. november 2003 - 17:05 #10
nåh - jeg kan se at du først regner bruttopris-variablen senere i scriptet, så det er der de ekstra decimaler kommer på...

If isnumeric(rs("pris")) Then
  bruttopris=rs("pris")
  bruttopris=bruttopris*7.5
  bruttopris=bruttopris + 200
  bt=bruttopris * 10 / 100
  bruttopris=bruttopris+bt
  bruttopris=bruttopris / 0.85
  bruttopris=formatnumber(bruttopris,2)
  usgpris=bruttopris / 0.92
  usgpris=formatnumber(usgpris,2)
Else
  bruttopris = "ingen pris online"
End If

eller deromkring
Avatar billede mini41 Nybegynder
17. november 2003 - 23:06 #11
Tjaaaa, det er jo meget simpelt når man kan :)

Tusind tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester