Avatar billede dingkee Nybegynder
07. maj 2001 - 15:35 Der er 28 kommentarer og
1 løsning

If sætning i sql sætning

Kan man ikke lave noget som dette her:

SQL = \"DELETE FROM mailingliste where id =\"& request(\"id\") & \"
<% If Alder = \"\" THEN %>
and Alder = \'\" & request.querystring(\"Alder\") & \"\'
<% else %>
<% end if %>
<% If Koen = \"\" THEN %>
and Koen = \'\" & request.querystring(\"Koen\") & \"\'
<% else %>
<% end if %>
<% If Postnummer = \"\" THEN %>
and Postnummer = \'\" & request.querystring(\"Postnummer\") & \"\'
<% else %>
<% end if %>\"
Avatar billede nute Nybegynder
07. maj 2001 - 15:41 #1
prøv dette:
<%

SQL = \"DELETE FROM mailingliste where id =\"& request(\"id\")
If Alder = \"\" THEN
  SQL = SQL & \" and Alder = \'\" & request.querystring(\"Alder\") & \"\'\"
end if
If Koen = \"\" THEN
  SQL = SQL & \" and Koen = \'\" & request.querystring(\"Koen\") & \"\'\"
end if
If Postnummer = \"\" THEN
  SQL = SQL & \" and Postnummer = \'\" & request.querystring(\"Postnummer\") & \"\'\"
end if
%>

/nute
Avatar billede perla Nybegynder
07. maj 2001 - 15:58 #2
Det du skal være opmærksom på er at alle de felter der er udfyldt skal være opfyldt. Dvs. både id og de udfylde felter. ID feltet angiver sandsynligvis et individ og er som så meget afgrænset uden de udeerligere kriterier.

I nedenstående vil id\'et også være valgbart

<%

SQL = \"DELETE FROM mailingliste where true\"
If Alder = \"\" THEN
  SQL = SQL & \" id =\" & request(\"id\")
end if
If Alder = \"\" THEN
  SQL = SQL & \" and Alder = \'\" & request.querystring(\"Alder\") & \"\'\"
end if
If Koen = \"\" THEN
  SQL = SQL & \" and Koen = \'\" & request.querystring(\"Koen\") & \"\'\"
end if
If Postnummer = \"\" THEN
  SQL = SQL & \" and Postnummer = \'\" & request.querystring(\"Postnummer\") & \"\'\"
end if
%>

-Per
Avatar billede perla Nybegynder
07. maj 2001 - 16:01 #3
Sorry sættefejl, linie 2 og = rettet til <>

<%

SQL = \"DELETE FROM mailingliste where true\"
If id <> \"\" THEN
  SQL = SQL & \" id =\" & request(\"id\")
end if
If Alder <> \"\" THEN
  SQL = SQL & \" and Alder = \'\" & request.querystring(\"Alder\") & \"\'\"
end if
If Koen <> \"\" THEN
  SQL = SQL & \" and Koen = \'\" & request.querystring(\"Koen\") & \"\'\"
end if
If Postnummer <> \"\" THEN
  SQL = SQL & \" and Postnummer = \'\" & request.querystring(\"Postnummer\") & \"\'\"
end if
%>
Avatar billede dingkee Nybegynder
07. maj 2001 - 16:02 #4
Jeg får denne fejl:
Microsoft VBScript compilation (0x800A0409)
Unterminated string constant
/nyhed/admin.asp, line 10, column 81
SQL = \"DELETE FROM mailingliste where id =\"& request(\"id\") & \" If Alder = \"\" THEN
--------------------------------------------------------------------------------^
Avatar billede nute Nybegynder
07. maj 2001 - 16:04 #5
du har ikke kopiert det jeg (eller perla) har skrevet til deg... Men for å gjøre oppmerksom på det, så vil ikke perla sitt forslag fungere desverre...
Avatar billede perla Nybegynder
07. maj 2001 - 16:06 #6
Linie 3 rettes til
SQL = SQL & \" and id=\" & request(\"id\")
Avatar billede perla Nybegynder
07. maj 2001 - 16:06 #7
nute > havad mener du ?
Avatar billede perla Nybegynder
07. maj 2001 - 16:08 #8
nute > Har testet SQL sætningen på en database, virker fint, så ??
Avatar billede nute Nybegynder
07. maj 2001 - 16:10 #9
ditt script vil generere en SQL som ser ca sånn ut:

DELETE FROM mailingliste where true id = ...

etter din oppdatering @ 16:06:10 han få en SQL som ser ca sånn ut:

DELETE FROM mailingliste where true and id = ...

men det var jo egentlig ikke det spørsmålet gikk ut på. Spørsmålet var jo om man kunne benytte if...then i en SQL. Og det kan man på den måten som både jeg og perla har vist. Hvordan selve SQL\'en ser ut, var jo strengt tatt ikke en del av spørsmålet...

:-)

Avatar billede perla Nybegynder
07. maj 2001 - 16:11 #10
Eksemplet kræver selfølgelig at du lægger laver følgende inden.

id    = request.querystring(\"id\")
Alder  = request.querystring(\"Alder\")
Koen  = request.querystring(\"koen\")
Postnummer = request.querystring(\"postnummer\")

-Per
Avatar billede nute Nybegynder
07. maj 2001 - 16:14 #11
det var ikke det som var mitt point :) (jeg har på lik linje med deg antatt at dette allerede er gjort...)


DELETE FROM mailingliste where true and id = ...
--------------------------------^^

where true and ... vil ikke fungere...

:-)
Avatar billede perla Nybegynder
07. maj 2001 - 16:15 #12
nute > Det har du ret i, men sådan er 99% af alle spørgsmålene. Måske fordi at man ikke skriver alle de ting man vil vide, for så får man flere svar, men også meget lidt indhold. :-)
Avatar billede perla Nybegynder
07. maj 2001 - 16:16 #13
Som sagt tidligere , er teste virker fint...
Avatar billede dingkee Nybegynder
07. maj 2001 - 16:18 #14
Tror ikke at den sortere som den skal, hvordan er det man udskriver sin sql streng så man kan se hvad den laver??
Avatar billede perla Nybegynder
07. maj 2001 - 16:19 #15
Response.write SQL
Avatar billede dingkee Nybegynder
07. maj 2001 - 16:29 #16
Se dette er det der står på siden:
    SQL = \"SELECT FROM mailingliste where Confirm=true \"
    If id <> \"\" THEN
  SQL = SQL & \" id =\" & request(\"id\")
end if
If Alder <> \"\" THEN
  SQL = SQL & \" and Alder = \'\" & request.querystring(\"Alder\") & \"\'\"
end if
If Koen <> \"\" THEN
  SQL = SQL & \" and Koen = \'\" & request.querystring(\"Koen\") & \"\'\"
end if
If Postnummer <> \"\" THEN
  SQL = SQL & \" and Postnummer = \'\" & request.querystring(\"Postnummer\") & \"\'\"
end if

Dette er hvad der er i urlen:
admin.asp?mode=send&alder=1&Koen=1&subject=dfg&tekst=dfg&tilbage=137

Den lister alt hvad der er i databasen, hvorfor??
Avatar billede nute Nybegynder
07. maj 2001 - 16:32 #17
ehhh....det der er jo ikke den SQL som blir eksekvert !!
Avatar billede dingkee Nybegynder
07. maj 2001 - 16:34 #18
jo der er det, skrev forkert før
Avatar billede nute Nybegynder
07. maj 2001 - 16:36 #19
unskyld meg, men det kan det ikke være. Du kan ikke få eksekvert denne sql. En SQL ser ut som dette:

SELECT FROM mailingliste where Confirm=true AND id = 2 and Alder = \'2\'

eller noe lignende...

Avatar billede perla Nybegynder
07. maj 2001 - 16:37 #20
Nu er det rettet til. Prøv dette

<%
id    = request.querystring(\"id\")
Alder  = request.querystring(\"alder\")
Koen  = request.querystring(\"koen\")
Postnummer = request.querystring(\"postnummer\")

SQL = \"SELECT FROM mailingliste where true \"
If id <> \"\" THEN
  SQL = SQL & \"and id =\" & request(\"id\")
end if
If Alder <> \"\" THEN
  SQL = SQL & \" and Alder = \'\" & request.querystring(\"alder\") & \"\'\"
end if
If Koen <> \"\" THEN
  SQL = SQL & \" and Koen = \'\" & request.querystring(\"koen\") & \"\'\"
end if
If Postnummer <> \"\" THEN
  SQL = SQL & \" and Postnummer = \'\" & request.querystring(\"postnummer\") & \"\'\"
end if
%>

Men du overfører ikke postnummer...

-Per
Avatar billede perla Nybegynder
07. maj 2001 - 16:39 #21
og heller ikke id..
Avatar billede dingkee Nybegynder
07. maj 2001 - 16:41 #22
Der er ingen id, der er ikke noget postnummer i det forsøg jeg laver nu, der for skal den jo heller ikke skrive and postnummer osv
Avatar billede dingkee Nybegynder
07. maj 2001 - 16:50 #23
Det virker altså desværre ikke
Avatar billede perla Nybegynder
07. maj 2001 - 16:52 #24
Send mig koden og databasen så skal jeg se PerLA@mail.tele.dk
Avatar billede dingkee Nybegynder
07. maj 2001 - 16:56 #25
er sendt
Avatar billede dingkee Nybegynder
07. maj 2001 - 22:02 #26
Jeg får denne fejl med det script du har sendt mig:
Error Type:
Microsoft VBScript runtime (0x800A005E)
Invalid use of Null: \'Split\'
/nyhed/view1.asp, line 52

<%
  \'Alder  = request.querystring(\"alder\")
  \'Koen  = request.querystring(\"koen\")
  \'Postnummer = request.querystring(\"postnummer\")

  SQL = \"SELECT * FROM mailingliste where Confirm=true \"
  If Alder <> \"\" THEN
    SQL = SQL & \" and Alder = \" & Alder
  end if
  If Koen <> \"\" THEN
    SQL = SQL & \" and Koen = \" & Koen
  end if
  If Postnummer <> \"\" THEN
    SQL = SQL & \" and Postnummer = \'\" & request.querystring(\"postnummer\") & \"\'\"
  end if

\'on error resume next
Dim Felt, NewString

\'response.write SQL
\'response.end

set slet = conn.execute( SQL )
do while not slet.eof

Felt=slet(\"Timenow\")
(dette er linie 52) NewString = Split(Felt, \"-\", 6, 0)   
EString= NewString(2) & \"/\" & NewString(1) & \" \" & NewString(0) & \" \" & NewString(3) & \":\" & NewString(4)& \":\" & NewString(5)

%>
Avatar billede perla Nybegynder
07. maj 2001 - 23:35 #27
Det er fordi at feltet ttimenow er tomt i et af recordsne.

-Per
Avatar billede perla Nybegynder
07. maj 2001 - 23:40 #28
Lagde du min version af databasen ind, for den virkede
Avatar billede dingkee Nybegynder
08. maj 2001 - 14:42 #29
Fint nok nu virker det, skulle lige rettes en lille smule
tak
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