---
title: "Spara tomt till databas"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/102948-spara-tomt-till-databas"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Meng"
published: "2004-05-05T09:10:07.000Z"
updated: "2004-05-06T07:36:56.000Z"
replies: 13
views: 336
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/102948-spara-tomt-till-databas"
---

# Spara tomt till databas

## #1 — Meng, 2004-05-05T09:10Z

Hej jag har denna koden för att spara mitt formulär:

```
If Request.Querystring("action")= "spara" Then

y = Request.Form("ar") 
m = Request.Form("man") 
d = Request.Form("dag") 
 
If y = "" Or m = "" Or d = "" Then 
 dato = null 
Else 
 dato = DateSerial(y, m, d) 
End If

a = Request.Form("udar") 
n = Request.Form("udman") 
m = Request.Form("uddag") 
 
If a = "" Or n = "" Or m = "" Then 
 udgaet = null 
Else 
 udgaet = DateSerial(a, n, m) 
End If

   Navn          = Fixa(Request.Form("navn"))
   Dato          = dato
   Udgaet        = udgaet
   Betegnelse    = Fixa(Request.Form("betegnelse"))
   Afd           = Fixa(Request.Form("afd"))
   Kh            = Fixa(Request.Form("kh"))
   Af            = Request.Form("af")
   Rev           = Request.Form("rev")

   Conn.Execute("INSERT INTO dok(Navn,Dato,Udgaet,Betegnelse,Afd,Kh,Af,Rev) VALUES('" & Navn & "','" & Dato & "','" & Udgaet & "','" & Betegnelse & "','" & Afd & "','" & Len(Kh) & "','" & Af & "','" & Rev & "')")
   Response.Redirect "admin.asp?do=inne"
End If
```

 

när **dato** och **udgaet** är toma, alltså utan input så kan jag inte spara formuläret utan får fel:
**Microsoft JET Database Engine error '80040e07' 

Data type mismatch in criteria expression. 

/teknisk/admin.asp, line 418** 

Linje 418:  

```
   Conn.Execute("INSERT INTO dok(Navn,Dato,Udgaet,Betegnelse,Afd,Kh,Af,Rev) VALUES('" & Navn & "','" & Dato & "','" & Udgaet & "','" & Betegnelse & "','" & Afd & "','" & Len(Kh) & "','" & Af & "','" & Rev & "')")
```

 

Hur ska jag göra så jag fortfarande kan spara formuläret fast det endast är **Navn** som har någon input?

Permalänk: https://www.webforum.nu/p/102948

## #2 — Jesper T, 2004-05-05T09:21Z

Du måste tillåta nullvärden i dina databaskolumner "dato" och "udgaet".
Ta bort fnuttar runt dessa värden i sql:en och testa min nygjorda funktion.

```
Function MakeNull(ByVal str)
	if not isdate(str) then str="null" else str="'"& str &"'"
	MakeNull=str
End function
```

Permalänk: https://www.webforum.nu/p/1338472

## #3 — Meng, 2004-05-05T10:04Z

Förlåt men hur skal jag använda denna funktionen och var? eller räker det med att den ligger på sidan?! man måste väl kalla den? Databasen är inställd från början på att tillåta null värden i dessa fälten.

Vad menar du med fnuttar?  :)

Permalänk: https://www.webforum.nu/p/1338491

## #4 — Meng, 2004-05-05T10:38Z

De två fälten stå på designvisnings läget i databasen till att vara "Dato og klokkes" på danska, vet inte vad det heter på svenska men det är väl något i stil med datum och klockslag.. ska jag kanske ta bort detta och göra dem till vanliga text fält också? för jag använder ju bara 2004-12-01 och det skriver användaren själv in via select boxar..

Permalänk: https://www.webforum.nu/p/1338515

## #5 — Jesper T, 2004-05-05T11:26Z

Jag menar typ så här:

```
If Request.Querystring("action")= "spara" Then

y = Request.Form("ar") 
m = Request.Form("man") 
d = Request.Form("dag") 
 
dato = y &"-"& m &"-"& d 

a = Request.Form("udar") 
n = Request.Form("udman") 
m = Request.Form("uddag") 
 
udgaet = a &"-"& n &"-"& m 

Function MakeNull(ByVal str)
	if not isdate(str) then str="null" else str="'"& str &"'"
	MakeNull=str
End function

Navn          = Fixa(Request.Form("navn"))
Betegnelse    = Fixa(Request.Form("betegnelse"))
Afd           = Fixa(Request.Form("afd"))
Kh            = Fixa(Request.Form("kh"))
Af            = Request.Form("af")
Rev           = Request.Form("rev")

Conn.Execute("INSERT INTO dok(Navn,Dato,Udgaet,Betegnelse,Afd,Kh,Af,Rev) VALUES('" & Navn & "'," & MakeNull(Dato) & "," & MakeNull(Udgaet) & ",'" & Betegnelse & "','" & Afd & "','" & Len(Kh) & "','" & Af & "','" & Rev & "')")
   Response.Redirect "admin.asp?do=inne"
End If
```

 Vanligtvis så har du ju enkelfnuttar runt datum (om du inte har access 97) och nu får du in dem med funktionen i stället.

Permalänk: https://www.webforum.nu/p/1338553

## #6 — Meng, 2004-05-05T13:20Z

Den funkade utmärkt! verkligen =) 

men när jag sparar med datum på båda alltså dato och udgaet så kommer inte dato med utan bara udgaet.. kanske ska göra en funktion till varje?

Sen provade jag hade göra om den man ändrar med också och det gick inte lika bra

```
If Request.Querystring("action") = "andrat" Then

y = Request.Form("ar") 
m = Request.Form("man") 
d = Request.Form("dag") 
 
dato = y &"-"& m &"-"& d 

a = Request.Form("udar") 
n = Request.Form("udman") 
m = Request.Form("uddag") 
 
udgaet = a &"-"& n &"-"& m 
 
Function MakeNull(ByVal str)
	if not isdate(str) then str="null" else str="'"& str &"'"
	MakeNull=str
End function

   Navn          = Fixa(Request.Form("navn"))
   Betegnelse    = Fixa(Request.Form("betegnelse"))
   Afd           = Fixa(Request.Form("afd"))
   Kh            = Fixa(Request.Form("kh"))
   Af            = Fixa(Request.Form("af"))
   Rev           = Fixa(Request.Form("rev"))

<!-- [blue]linje 444[/blue] -->  Conn.execute("Update dok Set Navn='" & Navn & "', Dato='" & MakeNull(Dato) & "', Udgaet='" & MakeNull(Udgaet) & "', Betegnelse='" & Betegnelse & "', Afd='" & Afd & "', Kh='" & Len(Kh) & "',Af='" & Af & "', Rev='" & Rev & "'  Where id = "& Request.Querystring("id"))
   Response.Redirect "admin.asp?do=inne"
End If
```

 

Den kommer med fel:
Microsoft JET Database Engine error '80040e14' 

Syntax error (missing operator) in query expression '''2000-1-13'''. 

/teknisk/admin.asp, line 444

Permalänk: https://www.webforum.nu/p/1338630

## #7 — Jesper T, 2004-05-05T13:36Z

Misstänker att det är ettan(som borde vara "01") plus att du deklarerar variabeln "m" två gånger med olika saker.

```
z = Request.Form("uddag")
dato = y &"-"& right("0"& m, 2) &"-"& right("0"& d, 2) 

udgaet = a &"-"& right("0"& n, 2) &"-"& right("0"& z, 2)
```

Permalänk: https://www.webforum.nu/p/1338636

## #8 — Meng, 2004-05-05T13:49Z

Det funkade utmärkt på "spara". Alltså göra en ny post. Men så fort jag ska ändra i en post t ex nu porvade jag att göra en post med endast udgaet datum, utan dato datum. och gick sen in för att ändra och skriva in ett datum så kom den med fel:

```
Microsoft JET Database Engine error '80040e14' 

Syntax error (missing operator) in query expression '''2002-03-24'''. 

/teknisk/admin.asp, line 450
```

 

Just nu har jag kod på både ändra och spara:

```
If Request.Querystring("action")= "spara" Then

y = Request.Form("ar") 
m = Request.Form("man") 
d = Request.Form("dag") 
a = Request.Form("udar") 
n = Request.Form("udman") 
Z = Request.Form("uddag") 
 
dato = y &"-"& right("0"& m, 2) &"-"& right("0"& d, 2) 

udgaet = a &"-"& right("0"& n, 2) &"-"& right("0"& z, 2)

Function MakeNull(ByVal str)
	if not isdate(str) then str="null" else str="'"& str &"'"
	MakeNull=str
End function

Function MakeBull(ByVal str)
	if not isdate(str) then str="null" else str="'"& str &"'"
	MakeBull=str
End function

Navn          = Fixa(Request.Form("navn"))
Betegnelse    = Fixa(Request.Form("betegnelse"))
Afd           = Fixa(Request.Form("afd"))
Kh            = Fixa(Request.Form("kh"))
Af            = Request.Form("af")
Rev           = Request.Form("rev")

Conn.Execute("INSERT INTO dok(Navn,Dato,Udgaet,Betegnelse,Afd,Kh,Af,Rev) VALUES('" & Navn & "'," & MakeNull(Dato) & "," & MakeBull(Udgaet) & ",'" & Betegnelse & "','" & Afd & "','" & Len(Kh) & "','" & Af & "','" & Rev & "')")
   Response.Redirect "admin.asp?do=inne"
End If
If Request.Querystring("action") = "andrat" Then

y = Request.Form("ar") 
m = Request.Form("man") 
d = Request.Form("dag") 
a = Request.Form("udar") 
n = Request.Form("udman") 
z = Request.Form("uddag")

dato = y &"-"& right("0"& m, 2) &"-"& right("0"& d, 2) 

udgaet = a &"-"& right("0"& n, 2) &"-"& right("0"& z, 2)
 
Function MakeNull(ByVal str)
	if not isdate(str) then str="null" else str="'"& str &"'"
	MakeNull=str
End function

Function MakeBull(ByVal str)
	if not isdate(str) then str="null" else str="'"& str &"'"
	MakeBull=str
End function

   Navn          = Fixa(Request.Form("navn"))
   Betegnelse    = Fixa(Request.Form("betegnelse"))
   Afd           = Fixa(Request.Form("afd"))
   Kh            = Fixa(Request.Form("kh"))
   Af            = Fixa(Request.Form("af"))
   Rev           = Fixa(Request.Form("rev"))

   Conn.execute("Update dok Set Navn='" & Navn & "', Dato='" & MakeNull(Dato) & "', Udgaet='" & MakeBull(Udgaet) & "', Betegnelse='" & Betegnelse & "', Afd='" & Afd & "', Kh='" & Len(Kh) & "',Af='" & Af & "', Rev='" & Rev & "'  Where id = "& Request.Querystring("id"))
   Response.Redirect "admin.asp?do=inne"
```

Permalänk: https://www.webforum.nu/p/1338644

## #9 — Jesper T, 2004-05-05T13:54Z

1\. du behöver inte ha två olika funktioner för samma sak. (det är det som är tanken med en funktion... ;))
2\. du måste ta bort enkelfnuttarna där du har fun funktionen.
Dato="& MakeNull(Dato) &" och Udgaet=" & MakeNull(Dato)  &"
3\. lägg funktionen före dina ifsatser så behöver du inte ta in dem flera gånger.

Permalänk: https://www.webforum.nu/p/1338649

## #10 — Jesper T, 2004-05-05T13:59Z

Testa detta:

```
y = Request.Form("ar") 
m = Request.Form("man") 
d = Request.Form("dag") 
a = Request.Form("udar") 
n = Request.Form("udman") 
Z = Request.Form("uddag") 
 
dato = y &"-"& right("0"& m, 2) &"-"& right("0"& d, 2) 

udgaet = a &"-"& right("0"& n, 2) &"-"& right("0"& z, 2)

Function MakeNull(ByVal str)
	if not isdate(str) then str="null" else str="'"& str &"'"
	MakeNull=str
End function

Navn          = Fixa(Request.Form("navn"))
Betegnelse    = Fixa(Request.Form("betegnelse"))
Afd           = Fixa(Request.Form("afd"))
Kh            = Fixa(Request.Form("kh"))
Af            = Request.Form("af")
Rev           = Request.Form("rev")

If Request.Querystring("action")= "spara" Then

	Conn.Execute("INSERT INTO dok(Navn,Dato,Udgaet,Betegnelse,Afd,Kh,Af,Rev) VALUES('" & Navn & "',"& MakeNull(Dato) &","& MakeNull(Udgaet) &",'"& Betegnelse &"','" & Afd & "','" & Len(Kh) & "','" & Af & "','" & Rev & "')"),,128
   	
elseIf Request.Querystring("action") = "andrat" Then

   	Conn.execute("Update dok Set Navn='" & Navn & "', Dato=" & MakeNull(Dato) & ", Udgaet=" & MakeNull(Udgaet) & ", Betegnelse='" & Betegnelse & "', Afd='" & Afd & "', Kh='" & Len(Kh) & "',Af='" & Af & "', Rev='" & Rev & "'  Where id = "& Request.Querystring("id")),,128
 
end if

Response.Redirect "admin.asp?do=inne"
```

Permalänk: https://www.webforum.nu/p/1338655

## #11 — Meng, 2004-05-05T14:25Z

HAHA Vackert! nu funkar det utmärkt på både spara och ändra  :birp 

Kunde dock inte använda koden när den var sammanfogad både spara o ändra till en eftersom sidan är byggd så den bara öppnar en if sats i taget. men det gör inget för resten av siten är byggd på samma vis så då blir jag ju inte förvirrad nästa gång jag kommer över denna koden =)

En annan fråga.. jag har en sortering på sidan som jag gärna vill att man ska kunna komma tillbaka til om man t ex tar bort en post eller ändrar en. Den ser ut så här t ex:

```
http://intranet/teknisk/admin.asp?do=inne&sortby=betegnelse&form=DESC
```

hur hämtar jag detta när jag kör Response.Redirect? får inte rätt på det nämligen. så jag försökt men som inte funkar eftersom det är fel sätt att skriva det på är så här:

```
   Response.Redirect "admin.asp?do=inne&sortby=(Request.Querystring("sortby"))&form=(Request.Querystring("form"))"
```

 

Föresten vad betyder ",,128" och vad ska det vara bra för?

Annars tack så jätte mycket för hjälpen Jesper

Permalänk: https://www.webforum.nu/p/1338672

## #12 — Jesper T, 2004-05-06T06:52Z

1\. 

```
Response.Redirect "admin.asp?do=inne&sortby="& Request.Querystring("sortby") &"&form="& Request.Querystring("form")
```

2\. ,,128 betyder att inget skall returneras. Alltså används i Insert, update och delete. Dock ej i select.

Permalänk: https://www.webforum.nu/p/1341985

## #13 — Meng, 2004-05-06T07:21Z

Så du menar att jag alltid borde använda ,,128? det laddar långsammare annars?

Permalänk: https://www.webforum.nu/p/1342002

## #14 — Erik Juhlin, 2004-05-06T07:36Z

Marginellt. Inget som du kommer märka av.
Dock lite snyggare eftersom att det är korkat att något returneras om man inte hämtar något.

Permalänk: https://www.webforum.nu/p/1342009

---

Tråden på webben: https://www.webforum.nu/amne/asp/102948-spara-tomt-till-databas
