webForumDet fria alternativet

Problem med en If Sats

ASP

19 svar · 349 visningar · startad av Dashi

Medlem sedan jan. 2005296 inlägg
Frågan#1

Vill att den ska kolla kolumnen order_id i databasen, om där inte finns något värde ska den skriva ut Det finns inga aktuella orders, har testat göra en såhär, men får inte rätt på den, någon som har lust att skriva om den till mig?

<%If <%=RecSet("order_id")%> = Value=""
Response.Write "Det finns inga aktuella orders"
%>

Mvh //Darek

Medlem sedan juni 20019 519 inlägg
#2

Du kan inte använda <% %> i en <% tagg:

<%
if recSet("order_ID") = "" then
response.write "Det finns inga aktuella orders"
else
'do stuff
end if
%>

eller

<% if recset("order_ID") = "" then response.write "Det finns inga aktuella orders" %>
Medlem sedan jan. 2005296 inlägg
#3

tyvär men det funkar inte.. :P

<%
user=Request.Querystring("user")

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(masterdata_databas)

Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "SELECT * FROM orders WHERE user = '" & user & "' ORDER BY order_lev" 

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 

Do Until RecSet.EOF

If recset("order_lev") = "" then response.write "Det finns inga aktuella orders"
%>
              <a href="order_hist_visa.asp?order_lev=<%=RecSet("order_lev")%>"> 
              <% =RecSet("order_lev") %>
              </a> 
              <%
RecSet.MoveNext
Loop
RecSet.Close 

Connect.Close
%>
Medlem sedan juni 20019 519 inlägg
#4

nej... klart det inte gör..
du får skriva vid din if sats och neråt:

if recset("order_lev") = "" then
response.write "Det finns inga aktuella orders"
[b]else[/b]
response.write "<a href=""order_hist_visa.asp?order_lev=" & recset("order_lev") %""">" & recset("order_lev") & "</a>"
end if
recset.movenext
loop
recset.close
connect.close

din kod ovan gör ingen gemförelse.. utan du säger koden:
Om order_lev är igen då skriver du Det finns inga aktuella orders"
%>
<a href="order_hist_visa.asp?order_lev=<%=RecSet("order_lev")%>">
<% =RecSet("order_lev") %>
</a>

vilket är inte det du vill :e ah... är kass på att förklara...tror detta ska fungera

Medlem sedan jan. 2005296 inlägg
#5

Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A0408)
Ogiltigt tecken
/masterdata/order_hist.asp, line 297, column 80
response.write "<a href=""order_hist_visa.asp?order_lev=" & recset("order_lev") %""">" & recset("order_lev") & "</a>"

Medlem sedan juni 20019 519 inlägg
#6

ersätt % vid recset("order_lev")

ska vara ett & istället för %

Medlem sedan jan. 2005296 inlägg
#7

hehe detta e ju sjukt.. order_lev är tom i databasen..
nu har jag såhär, fick ta bort loop pga annars ville den inte funka, eftersom vi tidigare tog bort do until.... så får man inte ha kvar loop.. men jag har såhär nu iallafall men fortfarande så vill den inte visa Det finns inga blabla....

<%
user=Request.Querystring("user")

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(masterdata_databas)

Set RecSet = Server.CreateObject("ADODB.Recordset")

Addera = "SELECT * FROM orders WHERE user = '" & user & "' ORDER BY order_lev" 

RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic 

If RecSet("order_lev") = "" Then
Response.Write "Det finns inga levererade orders"

Else

response.write "<a href=""order_hist_visa.asp?order_lev=" & recset("order_lev") &""">" & recset("order_lev") & "</a>"

End If

RecSet.Close 

Connect.Close
%>
Medlem sedan juni 20019 519 inlägg
#8

är order_lev ett tal? eller är det än sträng?
om det är tal kan du ju prova skriva if recset... < 0 then

Medlem sedan jan. 2005296 inlägg
#9

sträng...

Medlem sedan jan. 2005296 inlägg
#10

eller tal mena jag.. ska testa

Medlem sedan jan. 2005296 inlägg
#11

ehhmmm, asså databasen va ju innan som text, asså sträng, så satte jag den till tal, e kolumnen tom sätter den ju 0 jag testade då sätta den på If RecSet("order_lev") = "0" Then inte ens då skrev den ut något...

Medlem sedan juni 20019 519 inlägg
#12

recset("order_lev") = 0 inte "0" ... fast det kan nog inte vara där problemet är.. är det fler order_lev det kan vara eller? eller är det antingen ja eller nej?

Medlem sedan jan. 2005296 inlägg
#13

hehe kolla nu.. om jag har såhär
If RecSet("order_lev") = "ingen" Then
och sätter värdet ingen på order_lev då visas texten..
har jag istället
If RecSet("order_lev") = "" Then
och har tomt på order_lev så funkar det inte, så då måste jag ha ett värde asså för att den ska funka? får testa sätta databasen på standardvärde ingen... och se om de funkar så att den sätter det om den blir tom..

Medlem sedan juni 200032 967 inlägg
#14

Borde det inte vara så att SQL-frågan inte ger något resultat alls om användaren inte har någon aktuell order? Eller finns det en post i orders för alla användare??

Medlem sedan jan. 2005296 inlägg
#15

jovisst den gav inget resultat, det va det som var felet, eftersom jag har en Order Historik för varje användare och när man går in där stårt det Aktuella Orders och Levererade Orders, och istället för att det ska vara tomt under dom så ville jag lägga ett värde att det står Det finns inga blablabla.. för sen när man beställt efter 2 gånger typ, så står där 2 ordrar på levererat, ser lite dumt ut då om där är ett tom rum på aktuella ordrar, därför ville jag ha ett värde där.. jag använder asp fullt ut på sidan, både för utsendes skull och för att lära mig mer :P

Medlem sedan juni 200032 967 inlägg
#16

Jag hade gjort så här då:

  1. Kod för att hämta och skriva ut aktuella ordrar
  2. Kod för att hämta och skriva ut levererade ordrar

Kontrollera sedan om recordseten är tomma för att veta om du ska skriva ut informationen om att det inte finns några dylika orders.

Får man fråga varför du kallar din SQL-fråga för Addera?

strSQL = "SELECT ....."
set objRS = Connect.Execute (strSQL)
If objRS.EOF then
          ' recordsetet är tomt, dvs det finns inga aktuella/levererade orders 
End if
Medlem sedan jan. 2005296 inlägg
#17

jag hade så från början osså, men felet va att order_id (aktuella orders) och order_lev (levererade orders) låg på samma tabell, sen så fick jag göra så att jag gjorde 2 tabeller istället, gjorde precis som du förklara med punkt 1 och 2 och satte det istället på If RecSet.EOF Then
Response.write Det finns inga...
Else

Do until Recset.EOF

response.write recset("order_id")

på ett ungefär, skrev bara ut det snabb så förstår du typ hur jag gjorde :P

Medlem sedan jan. 2005296 inlägg
#18

@nders: förresten har du läst det jag posta med frames? du vet inte hur man kan fixa de? isåfall kan du ju svara där om du vet :P

Mvh //Darek

Medlem sedan juni 200032 967 inlägg
#19

Jag förstår inte vad du menar att problemet var.
Och vad var problemet sedan när du gjorde om det till två tabeller?

Medlem sedan juni 200032 967 inlägg
#20

Du har fått ett bra och riktigt svar i frames-tråden, vad jag kan se.

edit: slängde dock in ett inlägg där också.

261 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)