Avatar billede newbie.dk Praktikant
13. marts 2005 - 20:48 Der er 30 kommentarer og
3 løsninger

Hjælp til at indsætte apostroffer mm.

Jeg har fået hjælp til at lave denne sætning, men tegnsætningen driller lidt.
Er der nogle der kan se sig ud af det?

test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE (Request.form('angiBy') <> 'koll' AND postnr <> 'koll) OR (Request.form('angiBy') = 'koll' AND postnr = 'koll)"
Avatar billede cpufan Juniormester
13. marts 2005 - 20:58 #1
den er vist helt galt,
prøv at forklare hvad det er den skal,
og hvad dine kolonner hedder i din db, samt hvilken type det (tal eller tekst)
Avatar billede moejensen Nybegynder
13. marts 2005 - 21:02 #2
Sådan her:
<%
  test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy') &" <> 'koll' AND postnr <> 'koll) OR ("& Request.form("angiBy")&" = 'koll' AND postnr = 'koll)"
%>
Avatar billede michael_stim Ekspert
13. marts 2005 - 21:06 #3
angiBy=Request.form('angiBy')
postNr=Request.form('postnr')
test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& angiBy &" <> 'koll' AND  "& postNr &" <> 'koll') OR ("& angiBy &" = 'koll' AND "& postnr &"= 'koll')"

Hvis du altså får postnr fra formen.
Hvis ikke er det bare at bruge moejensens forslag, men med en ' efter koll.
Avatar billede larsbachmanndk Nybegynder
13. marts 2005 - 21:14 #4
<%
Dim angiBy
Dim postnr

angiBy = Request.form("angiBy")
postNr = Request.form("postnr")

test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE '%" & angiBy & "%' <> 'koll' AND  '%" & postNr & "&' <> 'koll') OR ('%" & angiBy & "%' = 'koll' AND "& postnr &"= 'koll')"
%>
Avatar billede newbie.dk Praktikant
13. marts 2005 - 21:21 #5
Cpufan, man kan vælge i mellem 4 byer i en formular. Hvis man vælger den ene skal der tælles hvor mange gange denne by er i databasen. Hvis man vælger en af de andre byer skal der tælles hvor mange gange den og de sidste to byer er i databasen.
Avatar billede newbie.dk Praktikant
13. marts 2005 - 21:30 #6
moejensen, der er fejl ved
test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy') &" <> 'koll' AND

ved denne
("angiBy') &" <> 'koll'
-----------------^
Avatar billede newbie.dk Praktikant
13. marts 2005 - 21:31 #7
Hov denne
'koll'
^

Hvis det er til at forstå
Avatar billede moejensen Nybegynder
13. marts 2005 - 21:34 #8
test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy') &" <> 'koll' AND postnr <> 'koll') OR ("& Request.form("angiBy")&" = 'koll' AND postnr = 'koll')"
Avatar billede michael_stim Ekspert
13. marts 2005 - 21:39 #9
test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form('angiBy') &" <> 'koll' AND postnr <> 'koll') OR ("& Request.form('angiBy')&" = 'koll' AND postnr = 'koll')"

Nu skulle den være der ;o)
Avatar billede newbie.dk Praktikant
13. marts 2005 - 21:41 #10
Det virker desværre ikke.

test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy') &" <> 'koll' AND postnr <> 'koll') OR ("& Request.form("angiBy")&" = 'koll' AND postnr = 'koll')"

set rs5 = server.createobject("adodb.connection")
rs5.open DSN
set rs5 = rs5.execute(test)
Response.Write AntalTilmeldte


michael_stim, postnr er fra databasen
Avatar billede michael_stim Ekspert
13. marts 2005 - 21:43 #11
Du må ikke have ", du skal have ' om ("angiBy"), ellers tror den, den afslutter stringen.
Avatar billede michael_stim Ekspert
13. marts 2005 - 21:44 #12
Kopier min kommentar: 21:39:23, så skulle den være der.
Avatar billede michael_stim Ekspert
13. marts 2005 - 21:45 #13
Og så skal det være:
Response.Write rs5("AntalTilmeldte")
Avatar billede moejensen Nybegynder
13. marts 2005 - 21:45 #14
du skal have ("angiBy"), når det er i asp, det er derfor der &""& om.

Hvad er det for en fejl du får?
Avatar billede michael_stim Ekspert
13. marts 2005 - 21:47 #15
("angiBy')<--Der er fejlen.
Avatar billede moejensen Nybegynder
13. marts 2005 - 21:49 #16
yep, så det må være

test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy") &" <> 'koll' AND postnr <> 'koll') OR ("& Request.form("angiBy")&" = 'koll' AND postnr = 'koll')"

set rs5 = server.createobject("adodb.connection")
rs5.open DSN
set rs5 = rs5.execute(test)
Response.Write rs5("AntalTilmeldte")
Avatar billede newbie.dk Praktikant
13. marts 2005 - 21:50 #17
michael_stim, Der skal tælles hvor mange gange koll findes i databasen i kolonnen postnr.


moejensen, fejlen er

Microsoft VBScript compilation error '800a03ea'

Syntax error

/log/formsend.asp, line 64

Og så peger pilen som jeg forsøgte at vise før... men det gik vist ikke så godt :)
Avatar billede moejensen Nybegynder
13. marts 2005 - 21:57 #18
hvad står der i linie 64
Avatar billede moejensen Nybegynder
13. marts 2005 - 21:58 #19
kan vi ikke lige se hele din kode, for jeg tror også der er noget galt med din db forbindelse
Avatar billede newbie.dk Praktikant
13. marts 2005 - 22:02 #20
Så forsvandt fejlen... men nu vises siden ikke.
Men ellers er linie 64 SQL-sætningen.

Hvis jeg sletter de 5 linier jeg har vist jer - virker det fint med at indsætte i databasen.
Avatar billede newbie.dk Praktikant
13. marts 2005 - 22:08 #21
Jeg har lige ændre lidt, bare det ikke forvirre. F.eks er "angiBy" blevet til "postnr". Men her er koden.

' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("skridtdb.mdb")
Conn.Open DSN

' SQL sætning opbygges
strSQL = "Insert into indtast ("

strSQL = strSQL & "UID, "
strSQL = strSQL & "IP, "
strSQL = strSQL & "dato, "
strSQL = strSQL & "fornavn, "
strSQL = strSQL & "efternavn, "
strSQL = strSQL & "alder, "
strSQL = strSQL & "koen, "
strSQL = strSQL & "vejnavn, "
strSQL = strSQL & "nummer, "
strSQL = strSQL & "postnr, "
strSQL = strSQL & "email) "

strSQL = strSQL & "values('"

strSQL = strSQL & VarUID & "', '"
strSQL = strSQL & VarIP & "', '"
strSQL = strSQL & Now & "', '"
strSQL = strSQL & Request.Form("fornavn") & "', '"
strSQL = strSQL & Request.Form("efternavn") & "', '"
strSQL = strSQL & Request.Form("alder") & "', '"
strSQL = strSQL & Request.Form("koen") & "', '"
strSQL = strSQL & Request.Form("vejnavn") & "', '"
strSQL = strSQL & Request.Form("nummer") & "', '"
strSQL = strSQL & Request.Form("postnr") & "', '"
strSQL = strSQL & Request.Form("email") & "')"

' SQL sætning eksekveres
Conn.Execute(strSQL)


'Udtræk data om afhentningsted mm. fra formular.postnr
strSQL2 = "SELECT * FROM adresseliste WHERE postnr = '" & Request.Form("postnr") & "'"
set rs = conn.execute(strSQL2)

VarAdr = rs("gadenavn")
VarAabningstid = rs("tid")
VarAabningstid2 = rs("tid2")
VarAabningstid3 = rs("tid3")

'-------- T E S T-------------

test = "SELECT COUNT(*) AS AntalTilmeldte FROM indtast WHERE ("& Request.form("postnr") &" <> '5000' AND postnr <> '5000') OR ("& Request.form("postnr")&" = '5000' AND postnr = '5000')"
'test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy") &" <> 'koll' AND postnr <> 'koll') OR ("& Request.form("angiBy")&" = 'koll' AND postnr = 'koll')"
'test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy') &" <> 'koll' AND postnr <> 'koll') OR ("& Request.form("angiBy")&" = 'koll' AND postnr = 'koll')"
'test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy') &" <> 'koll' AND postnr <> 'koll) OR ("& Request.form("angiBy") &" = 'koll' AND postnr = 'koll)"
'test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE (Request.form('angiBy') <> 'koll' AND postnr <> 'koll) OR (Request.form('angiBy') = 'koll' AND postnr = 'koll)"


'test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy') &" <> 'koll' AND postnr <> 'koll') OR ("& Request.form("angiBy")&" = 'koll' AND postnr = 'koll')"

set rs5 = server.createobject("adodb.connection")
rs5.open DSN
set rs5 = rs5.execute(test)

Response.Write rs5("AntalTilmeldte")


'//////-------- T E S T--------


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>


<%
'MAIL - MAIL - MAIL - MAIL - MAIL
Avatar billede newbie.dk Praktikant
13. marts 2005 - 22:11 #22
Ja, det er selvfølgelig kun den øverst af test-sætningerne der skal bruges... det blev lidt rodet.
Avatar billede newbie.dk Praktikant
13. marts 2005 - 22:27 #23
okay, jeg troede ikke det ville volde de store problemer da sætningen så meget rigtig ud. Men jeg synes jeg vil hæve pointne lidt.
Avatar billede cpufan Juniormester
14. marts 2005 - 01:02 #24
'test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE ("& Request.form("angiBy') &" <> 'koll' AND postnr <> 'koll') OR ("& Request.form("angiBy")&" = 'koll' AND postnr = 'koll')"

Giver i hvert tilfælde ikke mening,
da du vil tælle records der er forskellig fra 'koll' og records der er lig 'koll'
dermed tæller du blot alle records.

Men ydermere tror jeg ikke du har nogle records i din tabel hverken i kolonnen [by], eller postnr der hedder koll.

hvad er koll ?
Avatar billede newbie.dk Praktikant
14. marts 2005 - 09:13 #25
koll er et fiktivt bynavn. Værdierne i databasen skulle gerne passe, så man kunne få et resultat.
Det der gerne skulle ske er at hvis man i formularen har valgt koll ved "angiBy", skal der tælles alle records hvor koll står i kolonnen "postnr" i databasen.
Hvis man ikke har valgt koll i "angiBy" i formularen, skal der tælles alle records hvor koll ikke indgår.
Avatar billede newbie.dk Praktikant
14. marts 2005 - 09:16 #26
Request.form("angiBy') har jeg ændret til Request.form("postnr")
koll er ændret til 5000

Men det skulle gerne give samme resultat.
Avatar billede cpufan Juniormester
14. marts 2005 - 11:08 #27
jeg er stadig lidt forvirret men denne

test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE postnr =" & request("postnr")

returner antal poster der er lig med det valgte postnr. hvis dit kolonnenavn i tabellen hedder postnr og er af typen tal.

Hvor opstår koll henne, er det noget du skriver et sted? eller er det en variabel du laver.
Avatar billede newbie.dk Praktikant
14. marts 2005 - 11:37 #28
koll (som er ændret til 5000 nu) er en valgmulighed i formularen som folk skal vælge. Den er lavet i en dropdown som hedder postnr, og denne værdi skal ved hjælp af Request.form("postnr") tjekke hvor mange andre der har valgt denne by.
Hvis man ikke har valgt 5000, skal der tjekkes hvor mange gange de andre byer har været valgt til sammen.
Avatar billede cpufan Juniormester
14. marts 2005 - 11:41 #29
if request("postnr") = 5000 then
test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE postnr =" & request("postnr")
else
test = "SELECT COUNT(*) AS AntalTilmeldte FROM TilmTab WHERE postnr <> 5000"
end if
Avatar billede newbie.dk Praktikant
14. marts 2005 - 15:16 #30
Med denne får jeg "Siden kan ikke vises"

if Request.form("postnr") = 5000 then
test = "SELECT COUNT(*) AS AntalTilmeldte FROM indtast WHERE postnr = 5000"
'test = "SELECT COUNT(*) AS AntalTilmeldte FROM indtast WHERE postnr =" & Request.form("postnr")
else
test = "SELECT COUNT(*) AS AntalTilmeldte FROM indtast WHERE postnr <> 5000"
end if

set rs5 = server.createobject("adodb.connection")
rs5.open DSN
set rs5 = rs5.execute(test)
Response.Write rs5("AntalTilmeldte")
Avatar billede newbie.dk Praktikant
15. marts 2005 - 10:26 #31
Så lykkes det, med denne kode:
test = "SELECT COUNT(*) AS AntalTilmeldte FROM indtast WHERE ('" & Request.form("postnr") & "' <> '5000' AND postnr <> '5000') OR ('" & Request.form("postnr") & "' = '5000' AND postnr = '5000')"

Da I har brugt lang tid på at hjælpe mig, vil jeg gerne have i lige ligger et svar, så i kan få lidt point som tak.
Avatar billede cpufan Juniormester
15. marts 2005 - 10:36 #32
svar fra mig

//cpufan
Avatar billede michael_stim Ekspert
15. marts 2005 - 18:48 #33
OK.
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