/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Sende null til acces via sql - hvordan?
Fra : John Hertz


Dato : 09-03-05 23:48

Hej
Hvordan kan jeg via min formular med radioknapper sende null til
min access database, hvis folk ikke svarer på spørgsmålene?
Min kode ser ud som følger:

strSQL = "Insert into svar ("
For i = 1 to 2
strSQL = strSQL & "Svar" & i &", "
Next
strSQL = strSQL & "svar3)"


strSQL = strSQL & "values( "
For i = 1 to 2
tempValue = request.form(Cstr(i))
if tempValue="" then
tempValue = null
end if
strSQL = strSQL & "'" & tempValue & "', "
Next
strSQL = strSQL & "'" & Request.Form("3") & "') "



Der var en der forslog at jeg satte denne funktion ind, men jeg
kan ikke finde ud af hvordan jeg skal flette den sammen med min
kode.

Function prepSQLVal(strData)
If strData & "" = "" Then
prepSQLVal = "NULL"
Else
prepSQLVal = "'" & Replace(strData, "'", "''") & "'"
End If
End Function


Skal jeg bruge funktionene og hvordan, eller er det en anden
løsning der skal til??
Ps: I øvrigt Tak for Jeres hjælp - det er et fedt foum det her

Hilsen John





--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Niels Henriksen - ww~ (10-03-2005)
Kommentar
Fra : Niels Henriksen - ww~


Dato : 10-03-05 00:06

"John Hertz" <john-hertz@ofir.dk> wrote in message
news:422f7d04$0$29271$14726298@news.sunsite.dk...
> Hej
> Hvordan kan jeg via min formular med radioknapper sende null til
> min access database, hvis folk ikke svarer på spørgsmålene?

Hvorfor ikke sætte 1 hvis svar og 0 hvis ikke svar? Det syntes jeg er lidt
nemmere at arbejde med. Det andet er sjusk (efter min mening).

[snip kode]

Du bruger din funktion på denne måde

tempValue = prepSQLVal(request.form(Cstr(i)))
strSQL = strSQL & "'" & tempValue & "', "


--
Niels Henriksen
www.netopcom.dk
Hosting: 8 kr for 100 MB (incl. moms)
Professionel programmering tilbydes



Jens Gyldenkærne Cla~ (10-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-03-05 00:37

Niels Henriksen - www.netopcom.dk skrev:

> Hvorfor ikke sætte 1 hvis svar og 0 hvis ikke svar?

Skal man så have to felter pr. svar - et til at angive _om_ der er
svaret og et til at angive _hvad_ der er svaret?

> Det syntes jeg er lidt nemmere at arbejde med. Det andet er sjusk
> (efter min mening).

Jeg er ikke enig. Null betyder normalt "ingen værdi angivet" - det
passer ganske godt til situationen at der ikke er svaret på et
spørgsmål. Man kan selvfølgelig godt lade en anden værdi svare til
"intet indtastet", men jeg kan ikke se noget forkert i at bruge
null her.


> Du bruger din funktion på denne måde
>
> tempValue = prepSQLVal(request.form(Cstr(i)))
> strSQL = strSQL & "'" & tempValue & "', "

Niks! Du misser pointen med funktionen (nemlig at kunne levere en
streng eller null til sql-strengen. Der skal *ikke* anførselstegn
(') om funktionskaldet - funktionen sætter dem selv hvis de skal
være der.

Man kan bruge funktionen således:

tmp = request.form(Cstr(i))
strSQL = strSQL & prepSQLVal(tmp)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

John Hertz (12-03-2005)
Kommentar
Fra : John Hertz


Dato : 12-03-05 21:47

Jeps det er helt rigtigt, at jeg øksner at sende null. Jeg skal
nemlig lave statisik på hvilke svar der er i forhold til antal svar.

Nu har jeg leget lidt med funktioner og øvet mig i hvordan de funker.
Blandt andet har jeg fundet ud af at den fint kan stå sidst i min
kode.
Det er første gang at jeg skal bruge sådan en.
Nå, ,men jeg kan alligevel ikke helt få den til at fungerer, jeg får
en fejlmeddelse:

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl,
fordi der mangler en operator. i forespørgselsudtrykket
"'Dreng'NULL'Ja'".
/modtagNull.asp, linje 35

Min kode ser nu ud som følger:

strSQL = "Insert into svar ("
For i = 1 to 2
strSQL = strSQL & "Svar" & i &", "
Next
strSQL = strSQL & "svar3)"


strSQL = strSQL & "values( "
For i = 1 to 2
tmp = request.form(Cstr(i))
strSQL = strSQL & fk(tmp)
Next
strSQL = strSQL & "'" & Request.Form("3") & "') "


Function fk(strData)
If strData & "" = "" Then
fk = "NULL"
Else
fk = "'" & Replace(strData, "'", "''") & "'"

End If
End Function


Conn.Execute(strSQL) 'Her er linje 35

Hvad går galt??
Hilsen John

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørgen Müller (13-03-2005)
Kommentar
Fra : Jørgen Müller


Dato : 13-03-05 11:56

John skrev:
>Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
>[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl,
>fordi der mangler en operator. i forespørgselsudtrykket
>"'Dreng'NULL'Ja'".
>/modtagNull.asp, linje 35
Du kan ikke tildele feltet værdien NULL, det er den værdi feltet får, hvis
du ikke tilføjer nogen data.
Du kan skrive en værdi til feltet i form af NUL = ""
Søg i hjælp til access - TilladNullængde (AllowZeroLength)
--
Med Venlig Hilsen
Jørgen Müller



Jørgen Müller (13-03-2005)
Kommentar
Fra : Jørgen Müller


Dato : 13-03-05 12:01

John skrev
>"'Dreng'NULL'Ja'"

og så mangler der en adskillelse af værdierne.
"'Dreng','NULL','Ja'"

--
Med Venlig Hilsen
Jørgen Müller



Jens Gyldenkærne Cla~ (13-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-03-05 21:57

Jørgen Müller skrev:

> Du kan ikke tildele feltet værdien NULL,

Vrøvl! Selvfølgelig kan man tildele værdien null til et felt:

   UPDATE tabel SET felt = NULL WHERE idfelt = 42

> det er den værdi feltet får, hvis du ikke tilføjer nogen data.

Forudsat at der ikke er defineret en standardværdi for feltet.


> Du kan skrive en værdi til feltet i form af NUL = ""

Men den tomme streng er *ikke* det samme som null.


> Søg i hjælp til access - TilladNullængde (AllowZeroLength)

De engelske termer er rare at have i baghovedet hvis man skal undgå
at forveksle nullængde med null. TilladNulLængde
(AllowZeroLength) afgør om den tomme streng må gemmes i feltet
eller ej. Den egenskab er *kun* relevant for tekstfelter.
Standardværdien i Access2000 er falsk - altså den tomme streng er
ikke tilladt normalt i tekstfelter. Egenskaben "obligatorisk"
(Required) afgør om feltet kan indeholde værdien Null. Den egenskab
findes for alle felttyper, og her er standardværdien falsk -
svarende til at null-værdier normalt *er* tilladt i et felt.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (13-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-03-05 21:59

John Hertz skrev:

> forespørgselsudtrykket "'Dreng'NULL'Ja'".

Du har glemt at adskille værdierne i VALUES-udtrykket med kommaer.
Der burde stå 'Dreng', NULL, 'Ja'

> strSQL = strSQL & fk(tmp)

Her skal du have kommaet ind:

strSQL = strSQL & fk(tmp) & ", "
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

John Hertz (14-03-2005)
Kommentar
Fra : John Hertz


Dato : 14-03-05 22:34

Yes det virker
Jens GyldenkærneClausen har fuldstændig ret i, at det kan lade sig
gøre at sende null via sql til access, hvilket jeg netop har brug
for, hvis folk i en udersøgelse med radioknapper vælger ikke at svare
på spørgsmål.

Tak for hjælpen

Nu mangler jeg bare at finde ud af hvordan jeg også får null
muligheden indbefattet i det sidste spørgsmål. Syntaksen bliver jo
nødt til at være anderledes, fordi den afslutter values. Nå men jeg
må prøve at se på det i weekenden, men I er selvfølgelig velkomme til
at sende et forslag.
Ps i virkeligheden har jeg ca 60 spørgsmål. Koden her er forkortet
ned til tre spørgsmål. Jeg kunne muligvis til sidst lave et skjult
spørsmål, som ikke skal bruges til noget

strSQL = "Insert into svar ("
For i = 1 to 2
strSQL = strSQL & "Svar" & i &", "
Next
strSQL = strSQL & "svar3)"


strSQL = strSQL & "values( "
For i = 1 to 2
tmp = request.form(Cstr(i))
strSQL = strSQL & fk(tmp) & ", "
Next
strSQL = strSQL & "'" & Request.Form("3") & "') "

Hilsen John



--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (14-03-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-03-05 22:48

John Hertz skrev:

> Nu mangler jeg bare at finde ud af hvordan jeg også får null
> muligheden indbefattet i det sidste spørgsmål.

Du bruger bare den samme funktion som til de andre spørgsmål. Den
eneste forskel er at der ikke skal hæftes et komma efter værdien.


> strSQL = strSQL & "'" & Request.Form("3") & "') "

strSQL = strSQL & fk(Request.Form("3")) & ")"
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste