Toon posts:

[ASP] leeg veld meegeven

Pagina: 1
Acties:

Verwijderd

Topicstarter
IK heb een probleem met een IF-statement in mijn ASP-pagina.

code:
1
2
3
IF visco = "" OR visco = " " THEN
        visco = "NULL"
    END IF


Het is de bedoeling dat wanneer een veld niet is ingevuld (in dit geval het veld 'visco') dat de waarde NULL wordt meegegeven. Dit gaat in eerste instantie goed. Wanneer ik echter opnieuw hetzelfde record wil wijzigen en de waarde van 'visco' dus NULL is (dit komt in werkelijkheid neer op een spatie) dan werkt het dus niet.

Oftewel het eerste gedeelte van mijn IF-statement (IF visco = "") pakt ie wel. Maar het tweede gedeelte (IF visco = " ") pakt ie niet.

Hoe kan ik nu testen op een spatie?

de mogelijkheden met %20, &#160, &nbsp, " ", "' '" heb ik allemaal al geprobeerd?! 8)7

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:55

gorgi_19

Kruimeltjes zijn weer op :9

:?

Je zet neer: Visco = "NULL"
"NULL" is in dit geval een variabele van het type string van 4 letters; het heeft hetzelfde effect als Visco = "IKKE"
Kortom:

Null != "NULL"

En volgens mij bedoel je ook Nothing (wat in VBScript geldt)

Je moet zelf maar uittesten of je een variabele, welke Nothing is, kan uitlezen als zijnde ""
(Nothing != ""), puur strict gesproken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:33
IsNull()?

"NULL" <> NULL want "NULL" is geen null-value.

"NULL" is gewoon een string.

https://fgheysels.github.io/


Verwijderd

ligt eraan hoe je je parameters doorgeeft. als je het met een sSQL = "Update table set bla=" & Visco & ", bla2=alpha" dan gaat het zowiezo fout, want Er wordt nu Update table set bla=, bla2=alpha" gegenereerd en dat snapt hij niet.

moet iig dus ff het command object checken

Verwijderd

Topicstarter
De volledige code van mijn asp-pagina is:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<%
    ' Hier word een link gelegd met de database
    Set con =  Server.CreateObject("ADODB.Connection")
    
    ' Hier wordt de verbinding met de database geopend
    con.Open Application("samples_ConnectionString")
    
    ' Hier worden alle variabelen uit de pagina invoer_monster_waarden_wijzigen.asp opgehaald
    id = Request("id")
    apparaat=Request.Form("apparaat")
    produkttype=Request.Form("produkttype")
    datum=Request.Form("datum")
    monster_datum=Request.Form("monster_datum")
    tijd=Request.Form("tijd")
    visco=Request.Form("visco")
    kleur_l=Request.Form("kleur_l")
    vocht=Request.Form("vocht")
    kleur_b=Request.Form("kleur_b")
    mew=Request.Form("mew")
    copper=Request.Form("copper")
    c1=Request.Form("c1")
    bromide=Request.Form("bromide")
    c2=Request.Form("c2")
    nh2eindgroepen=Request.Form("nh2eindgroepen")
    bvanr=Request.Form("bvanr")
    opmerking = Request.Form("opmerking")
    
    IF visco = "" OR visco = " " THEN
        visco = "NULL"
    END IF
    
    ' Dit is het sql-statement dat de record update
    sql="UPDATE Laatste_Ingevoerde_waardes SET apparaat='"&apparaat&"', produkttype='"&produkttype&"', monster_datum='"&monster_datum&"', tijd='"&tijd&"', visco="&visco&", kleur_l="&kleur_l&", vocht="&vocht&", kleur_b="&kleur_b&", mew="&mew&", copper="&copper&", c1="&c1&", bromide="&bromide&", c2="&c2&", nh2eindgroepen="&nh2eindgroepen&", bvanr="&bvanr&", Opmerking='"&opmerking&"' WHERE ID="&id   
    
    Response.Write sql
    
    ' Hier wordt het sql-statement uitgevoerd
    con.Execute(sql)
    
    ' Hier wordt de browser doorgestuurt naar de pagina dank_u_voor_deze_gegevens_Sample_invoer.asp
    ' Response.Redirect "dank_u_voor_deze_gegevens_Sample_invoer.asp"
%>


Volgens mij is visco geen string. De velden zijn overigens ook allemaal numerieke waarden. Daarnaast heb ik voor de zekerheid iets anders dan NULL ingevuld, maar dan krijg ik een foutmelding. Dus in dit geval is NULL geen string.

Verwijderd

Waarom wil je dit?

Als een veld niet is ingevuld tijdens een submit (of zelfs helemaal niet bestaat, krijg je uit de Request.Form("veldnaam") altijd de lege string ("") terug. Waarom zou je daarvoor in de plaats met iedere submit "NULL" in willen zetten?

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:33
als je schrijft
code:
1
"NULL"

Dan heb je een string die de waarde NULL bevat, net alsof je zou schrijven:
code:
1
"whoami"

dan heb ik een string die whoami bevat.

https://fgheysels.github.io/


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 31-08 15:46

mulder

ik spuug op het trottoir

Er is toch een vbNull variable?

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
Dit is omdat de gegevens naar de database gaan waar de velden een numerieke waarde hebben. Als ik geen NULL meegeef in het update-statement dan krijg ik een syntax-error omdat de update-string dan inderdaad bla=, gaat bevatten

Verwijderd

Oh okay, je wil een dynamische update statement opbouwen.

Gebruik de volgende functie om al je waarden:
ASP:
1
2
3
4
5
6
7
function makeNull(strInput)
   if Trim(strInput) = "" Then
      return "Null"
   else
      return strInput
   end if
end function

Enjoy :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:55

gorgi_19

Kruimeltjes zijn weer op :9

Volgens mij moet je ook niet kijken of een waarde "" of "", maar of deze IsNumeric is... een a als waarde geeft ook een foutmelding, lijkt me?

Andere vraag: Waarom laat je hem een tijd opslaan? Is dat niet de huidige tijd?

En welke foutmelding geeft hij precies weer?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Eureka, dat is het!

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 13:54

Crazy D

I think we should take a look.

Let erop dat een + ook numeriek is alleen dat is niet altijd wat je als invoer wilt hebben ;)

Exact expert nodig?

Pagina: 1