Avatar billede nanna31 Praktikant
16. januar 2006 - 20:54 Der er 15 kommentarer og
1 løsning

simpelt SQL

Dette virker:


Dim varFornavn, varEfternavn, varTelefon, varFoedselsdato

varFornavn =         Request.Form    ("fornavn"    )
varEfternavn =         Request.Form    ("efternavn"    )
varTelefon =         Request.Form    ("telefon"    )
varFoedselsdato =     Request.Form    ("foedselsdato"    )

SQL = "Delete from personer where Fornavn = 'aa'"

CONN.Execute(SQL)


Ændrer jeg sql-sætningen til:

SQL = "Delete from personer where Fornavn = varFornavn"

-virker det ikke. Det lyder da mystisk?
Avatar billede softspot Forsker
16. januar 2006 - 20:55 #1
Prøv:

SQL = "Delete from personer where Fornavn = " & varFornavn
Avatar billede softspot Forsker
16. januar 2006 - 20:56 #2
Ehm... nej, sådan:

SQL = "Delete from personer where Fornavn = '" & varFornavn & "'"


under antagelse af at fornavn er en streng/tekst i databasen.
Avatar billede nanna31 Praktikant
16. januar 2006 - 21:08 #3
Perfect!
Men denne syntakt er sjovt nok aldrig at finde i de forpulede tutorials! eller mit edb-hæfte for den sags skyld.
http://www.html.dk/tutorials/asp/lektion21.asp

Tak for hjælpen - husk at lægge et svar.
Avatar billede nielle Nybegynder
16. januar 2006 - 21:23 #4
Hvis feltet havde været et tal-felt - som i den viste tutorial - så skulle der heller ikke have været '-tegn rundt om det.

Reglen er simpel:

(o) tekst-felter skal have '-tegn rundt om sig, fordi ellers ville det give problemer når de indeholder blanktegn.

(o) tal-felter kan ikke indeholde blanktegn - derfor skal de ikke have '-tegn rundt oms sig.
Avatar billede softspot Forsker
16. januar 2006 - 21:26 #5
Nej, den tutorial du henviser til der er nu heller ikke særlig grundig. De antager at du ved hvrodan man håndterer basal håndtering af strenge og variable, herunder strengsammensætning... Det kan være du springer lidt for let hen over nogle af de lidt "kedligere" tutorials over...(?) :)
Avatar billede nanna31 Praktikant
16. januar 2006 - 21:27 #6
klart nok, men det bliver åbenbart væsentligt mere kompliceret med variable?
Avatar billede softspot Forsker
16. januar 2006 - 21:34 #7
Nej, det er ikke galt - hvis altså du forstår hvordan du skal sammensætte streng i VBSCript :)

Tak for point i øvrigt :)
Avatar billede nanna31 Praktikant
16. januar 2006 - 21:39 #8
Det er mig, der takker.

Hvor kan jeg lære at sammensætte en streng i VBScript?
Avatar billede softspot Forsker
16. januar 2006 - 21:45 #9
Her er lige en lille crashcourse:

s1 = "streng1"
s2 = "streng2"
s3 = s1 & s2

s3 indeholder "streng1streng2"

Hvis du skal sammensætte flere strenge kan du bare benytte &-operatoren flere gange, f.eks.

s3 = s1 & " " & s2

s3 indeholder "streng1 streng2"

du har altså tilføjet et mellemrum mellem de to strenge...

Der er ikke ret meget mere i simpel strengsammensætning.
Avatar billede nanna31 Praktikant
16. januar 2006 - 21:51 #10
Det forstår jeg fint - men hvad så med den her: '" & varFornavn & "'"
Avatar billede nanna31 Praktikant
16. januar 2006 - 21:56 #11
eller ta' den her:

SQL = "Insert into personer ("

SQL = SQL & "Fornavn,"
SQL = SQL & "Efternavn,"
SQL = SQL & "Telefon,"
SQL = SQL & "Foedselsdato)"

SQL = SQL & "values("

SQL = SQL & "'" & varFornavn & "',"
SQL = SQL & "'" & varEfternavn & "',"
SQL = SQL & "'" & varTelefon & "',"
SQL = SQL & "'" & varFoedselsdato & "')"
Avatar billede softspot Forsker
16. januar 2006 - 21:58 #12
Det er nøjagtigt det samme. Jeg tror du lader dig forvirre/overvælde af, at der er flere linier kode. Hvis du ser isoleret på hver enkelt linie, så er de jo ikke forskellige i struktur fra dem jeg viste... :)
Avatar billede nanna31 Praktikant
16. januar 2006 - 22:42 #13
Jeg kan godt sætte strenge sammen. Ovensåtende eksempel kan reduceres til :

SQL = "Insert into personer (Fornavn,Efternavn,Telefon,Foedselsdato)values('varFornavn','varEfternavn','varTelefon','varFoedselsdato')"

Men hvorfor virker det så ikke?
Avatar billede softspot Forsker
16. januar 2006 - 22:57 #14
Det er fordi ovenstående eksempel ikke kan reduceres som du skriver :)

Du skal huske at skelne mellem " og '. Den første (anførselstegnet) er en strengdelimiter i VBScript, den anden er starten af en kommentarlinie i VBScript.

Apostroffen fungere så (på forvirrende vis) som strengdelimiter i mange andre sprog (herunder JavaScript og SQL), men det skal du ikke tænke på når du koder VBScript - her har det som sagt ikke noget med strenge at gøre :)

Derfor skal din SQL ovenfor altså også laves således for at opnå det du ønsker:

SQL = "INSERT INTO personer (Fornavn,Efternavn,Telefon,Foedselsdato) VALUES('" & varFornavn & "','" & varEfternavn & "','" & varTelefon &"','" & varFoedselsdato & "')"
Avatar billede nanna31 Praktikant
16. januar 2006 - 23:09 #15
ok så ' er en del af strengen på linie med almindelige chars, det afklarer jo forvirringen betydeligt.

Thanks alot :-)
Avatar billede softspot Forsker
16. januar 2006 - 23:15 #16
U R welcome :)
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