Προς το περιεχόμενο

ASP VBscript if statement error (last post)


N1ghtW0lf

Προτεινόμενες αναρτήσεις

Δημοσ.
Αυτός ψάχνει ένα αντικείμενο με όνομα Flights και το property price. Είμαι περίεργος τις άλλες τιμές πως τις ανάθεσες?

Γράψε λίγο το query που σου δίνει το Flights.Price. Και γενικώς γράφε τα queries που σχετίζονται με τα λάθη.

 

 

Σου επισυναπτω ολοκληρο το κωδικα...

 

 

>
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="Connections/Project.asp" -->
<%
Request.Form("search")

Dim conn
Dim Recordset1
Dim Recordset1_cmd
Dim Recordset1_numRows


Set Recordset1_cmd = Server.CreateObject ("ADODB.Command")
Recordset1_cmd.ActiveConnection = MM_Project_STRING
Recordset1_cmd.CommandText =  "SELECT Flights.destination, Flights.departure, Schedule.FlightDate, departtime, price FROM Flights INNER JOIN Schedule ON Flights.flightid=Schedule.flightID WHERE (((Flights.destination)='" & Request.Form("flyto") & "') AND ((Flights.departure)='" & Request.Form("from")& "' ))  AND Schedule.FlightDate BETWEEN #" & Request.Form("datebox") &"# AND #" & Request.Form("datebox2") & "#;"


Recordset1_cmd.Prepared = true

Set Recordset1 = Recordset1_cmd.Execute
Recordset1_numRows = 0
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Flights</title>
</head>

<body>
<p style="color:#636"> </p>
<p style="color:#636"> </p>
<table width="942" height="99" border="2">
 <tr>
   <th scope="col">Check Flight</th>
   <th scope="col">Departure</th>
   <th scope="col">Destination</th>
   <th scope="col">Date</th>
   <th scope="col">Price</th>
 </tr>
 <tr>
   <th scope="col"><form id="form1" name="form1" method="post" action="">
     <label>
       <input type="radio" name="radio" id="flightchoose" value="flightchoose" />
     </label>
   </form></th>
   <th scope="col"><p>
     <% Response.write Request.Form("from") %>
      </p></th>
   <th scope="col"><% Response.write Request.Form("flyto") %>
      </th>
   <th scope="col"><% Response.write Request.Form("datebox") %>
      </th>
   <th scope="col"> 
   <% 
Dim fromField,flytoField    
fromField=Request.form("from")
flytoField=Request.form("flyto")
if (isNull(fromField)=false and isempty(fromField)=false AND isNull(flytoField)=false and isempty(flytoField)=false) then 
response.Write Flights.price 
end if 
%>
     </th>
     </tr>
     </table>
<p style="color:#636"> </p>

</body>
</html>
<%
Recordset1.Close()
Set Recordset1 = Nothing

Set Recordset1_cmd = Nothing
%>

 

 

Οταν λες τις αλλες τιμες πως τις ανεθεσα...τι εννοεις ακριβως?

To price, υπαρχει μεσα στο ηδη υπαρχον query Recordset1.cmd που φτιαξαμε τις τελευταιες δυο μερες

 

---------- Post added at 21:44 ----------

 

Καταφερα να να εμφανιζει επιτυχως αυτο που ζηταω...μονο που δεν εμφανιζει σωστα...εμφανιζει την πρωτη καταχωρηση που υπαρχει στον πινακα και οχι την ζητουμενη...

πχ.

Ο πινακας flights...

flightid destination departure departtime arrivingtime price

1 ATH THE 8:00:00 9:00:00 95.00€

2 ATH THE 15:00:00 16:00:00 80.00€

3 ATH THE 20:00:00 21:00:00 90.00€

4 ATH AXD 11:00:00 12:20:00 95.00€

5 ATH AXD 18:00:00 19:30:00 90.00€

6 ATH CFU 10:20:00 11:20:00 75.00€

7 ATH CFU 14:00:00 15:10:00 85.00€

 

Εχει αυτες τις τιμες...και κανουμε αναζητηση για πτηση ATH - CFU, η τιμη και η ωρα που θα βγει θα ειναι 8:00:00 και 95€ απο το πρωτο πεδιο.

Καπου κανω κατι λαθος με το if...καπου πρεπει να κανω καποιο verification το οποιο δεν κανω σωστα μαλλον.

Δημοσ.

Γράψε τον καινούργιο κώδικα για να βγάλουμε άκρη.

Απλά FYI: όταν κάνεις ένα select query, π.χ.

>Select flightid,destination,departure,departtime from flights 

σε ένα recordset π.χ. rs, για να τυπώσεις π.χ. το departure γράφεις

>response.write rs("departure")
ή
response.write rs(2) (ξεκινάς το μέτρημα από το [b]0[/b]).

Άντε καλό βράδυ.

Δημοσ.
Γράψε τον καινούργιο κώδικα για να βγάλουμε άκρη.

Απλά FYI: όταν κάνεις ένα select query, π.χ.

>Select flightid,destination,departure,departtime from flights 

σε ένα recordset π.χ. rs, για να τυπώσεις π.χ. το departure γράφεις

>response.write rs("departure")
ή
response.write rs(2) (ξεκινάς το μέτρημα από το [b]0[/b]).

Άντε καλό βράδυ.

 

 

Κωστα, καλησπερα...

Εγραψα αυτο εδω συμφωνα με την προηγουμενη σου βοηθεια και απλα προσθεσα στο τελος το "response.Write (Recordset2.Fields.Item("price").Value)" ...και μου εμφανιζει το πρωτο πεδιο απο τον πινακα που αντιστοιχει στο πεδιο price, οπως ειπα στο παραδειγμα πιο πανω (εφτιαξα λιγο τον πινακα γιατι δεν ηταν ευδιαβαστος και δεν το ειχα καταλαβει, και ευχομαι να καταλαβενεις τωρα ποιο ειναι το προβλημα)...

 

Λοιπον...αυτο ειναι που εχω γραψει...

<%

Dim fromField1,flytoField1

fromField1=Request.form("from")

flytoField1=Request.form("flyto")

if (isNull(fromField1)=false and isempty(fromField1)=false AND isNull(flytoField1)=false and isempty(flytoField1)=false) then

response.Write (Recordset2.Fields.Item("price").Value)

response.Write ("€")

end if

%>

Αν ας πουμε διαλεξω...ΑΤΗ-RHO και η τιμη της πτησης κανει 80...και η πρωτη εμφανιση τιμης στον πινακα ειναι 95, θα μου εμφανισει την τιμη 95€ και οχι την ενδειξη τη σωστη...

 

Μηπως καποιο λαθος παιζει με το if? Μηπως καπου δεν κανει σωστο verification και το condition δεν ειναι σωστο?

 

Θα προσπαθησω τη βοηθεια που εδωσες τωρα να δω τι θα βγαλει με αυτο...

 

EDIT:

 

Με το rs μου βγαζει το ακολουθο error...

Microsoft VBScript runtime error '800a000d'

Type mismatch: 'rs'

/Project/flightsearch.asp, line 84

Δημοσ.

Όπως έχεις γράψει το query σου λογικό είναι αν βρεθούν παραπάνω από μια πτήσεις στα αποτελέσματα να σου δείξει την πρώτη. Αν θές να σου τυπώσει την επόμενη κάνεις πρώτα

>recordset1.movenext

Από ότι κατάλαβα εφόσων βγαίνουν παραπάνω του ενός αποτελέσματα ενώ εσυ περιμένεις μόνο ένα ίσως να μην έχεις καταχωρήσει σωστά τις τιμές στους πίνακες σου. Πάντως δε μου φαίνεται παράλογο να επιστρέφονται παραπάνω του ενός αποτελέσματα. Αυτό είναι και το νόημα του search.

Όταν έχεις πολλά αποτελέσματα, κάνε το εξής για να τα τυπώσεις όλα:

>do while recordset1.eof<>true
  fromField1=Request.form("from")
  flytoField1=Request.form("flyto")
  if (isNull(fromField1)=false and isempty(fromField1)=false AND isNull(flytoField1)=false and isempty(flytoField1)=false) then
  response.Write (Recordset2.Fields.Item("price").Value)
  response.Write ("€")
  recordset1.movenext
  end if
loop

 

και τα υπόλοιπα κατά τα γνωστά.

To rs που σου έγραψα είναι ένα παράδειγμα ονόματος μεαβλητής τύπου recordset και είναι μόνο για demonstration...

Δημοσ.
Όπως έχεις γράψει το query σου λογικό είναι αν βρεθούν παραπάνω από μια πτήσεις στα αποτελέσματα να σου δείξει την πρώτη. Αν θές να σου τυπώσει την επόμενη κάνεις πρώτα

>recordset1.movenext

Από ότι κατάλαβα εφόσων βγαίνουν παραπάνω του ενός αποτελέσματα ενώ εσυ περιμένεις μόνο ένα ίσως να μην έχεις καταχωρήσει σωστά τις τιμές στους πίνακες σου. Πάντως δε μου φαίνεται παράλογο να επιστρέφονται παραπάνω του ενός αποτελέσματα. Αυτό είναι και το νόημα του search.

Όταν έχεις πολλά αποτελέσματα, κάνε το εξής για να τα τυπώσεις όλα:

>do while recordset1.eof<>true
  fromField1=Request.form("from")
  flytoField1=Request.form("flyto")
  if (isNull(fromField1)=false and isempty(fromField1)=false AND isNull(flytoField1)=false and isempty(flytoField1)=false) then
  response.Write (Recordset2.Fields.Item("price").Value)
  response.Write ("€")
  recordset1.movenext
  end if
loop

και τα υπόλοιπα κατά τα γνωστά.

To rs που σου έγραψα είναι ένα παράδειγμα ονόματος μεαβλητής τύπου recordset και είναι μόνο για demonstration...

 

 

Καλημερα, ευχαριστω και παλι για τη βοηθεια αλλα τζιφος....ο κωδικας ειναι μεν σωστος, αλλα δεν εμφανιζει κανενα αποτελεσμα...

 

Δεν με καταλαβες μαλλον, θελω να εμφανιζω και περισσοτερα αποτελεσματα...αλλα θα τα εμφανισω με repeat region για ολα τα αποτελεσματα που θελω...

Απο...

Departure - Airport - Date - DepartingTime - ArrivingTime - Price

 

μολις καταφερω και αρχιζει να εμφανιζει σωστα τα departingTime, Arrivingtime και Price, θα του βαλω ενα repeat region και θα εμφανιζει ολα τα αποτελεσματα (ευχομαι).

 

Προς το παρων δεν καταφερνω με τιποτα να το κανω να εμφανιζει αυτα που ανεφερα...Καπως πρεπει νομιζω να αλλαχτει το if statement, ετσι ωστε να κανει σωστη την αντιστοιχιση μεταξυ των "from" και "flyto" με το price...

Δημοσ.

> 
do while recordset1.eof<>true
  fromField1=Request.form("from")
  flytoField1=Request.form("flyto")
  if (isNull(fromField1)=false and isempty(fromField1)=false AND isNull(flytoField1)=false and isempty(flytoField1)=false) then
  response.Write (Recordset2.Fields.Item("price").Value)
  response.Write ("€")
  recordset1.movenext
  end if

 

παίζει να είναι πρωί ακόμα και είμαι μόλις στο 2ο καφέ αλλά το Recordset2 που είναι ? μόνο recordset1 βλέπω να ανοίγεις και να έχει field [price].

Δημοσ.

Η λυση βρεθηκε με εντελως διαφορετικο τροπο και να ειναι καλα ο καθηγητης μου στη σχολη που ειναι τσακαλι...

Παραθετω τη λυση...με ολοκληρο το κωδικα ...

Με Bold ειναι οι αλλαγες στον κωδικα απο τον καθηγητη μου, και με κοκκινο ειναι ενα comment που μου εβαλε το οποιο και μου δημιουργει προβλημα..

γιατι στην επομενη σελιδα οταν κανω response.write request.form("outtim") οπως λεει το αποτελεσμα ειναι αυτο εδω...

χωρις τα υπολοιπα τα οποια νομιζω πως θα επρεπε να κρατιουνται...

Times, Destinations, Departures, Prices κτλ κτλ...

 

 

 

>[b]departtime=#[/b]αποτελεσμα απο την [b]Request.Form("datebox")#[/b]

>



<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="Connections/Project.asp" -->
<%
Dim Recordset2
Dim Recordset2_cmd
Dim Recordset2_numRows

[b]Dim Query1

Query1 = "SELECT Flights.destination, Flights.departure, Schedule.FlightDate, departtime, arrivingtime, priceflight, Flights.flightid FROM Flights INNER JOIN Schedule ON Flights.flightid=Schedule.flightID WHERE (((Flights.destination)='" & Request.Form("flyto") & "') AND ((Flights.departure)='" & Request.Form("from")& "' ))  AND Schedule.FlightDate = #" & Request.Form("datebox") & "#;" [/b] 
 
Set Recordset2_cmd = Server.CreateObject ("ADODB.Command")
Recordset2_cmd.ActiveConnection = MM_Project_STRING
Recordset2_cmd.CommandText = Query1
Recordset2_cmd.Prepared = true

Set Recordset2 = Recordset2_cmd.Execute
[b]Recordset2_numRows = Recordset2.RecordCount[/b]
%>

<%
Dim Recordset3
Dim Recordset3_cmd
Dim Recordset3_numRows

[b]Dim Query2

if Request.Form("checksinglereturn")<>"single" then

Query2 = "SELECT Flights.destination, Flights.departure, Schedule.FlightDate, departtime, arrivingtime, priceflight, Flights.flightid FROM Flights INNER JOIN Schedule ON Flights.flightid=Schedule.flightID WHERE (((Flights.destination)='" & Request.Form("from") & "') AND ((Flights.departure)='" & Request.Form("flyto")& "' ))  AND Schedule.FlightDate = #" & Request.Form("datebox2") & "#;" [/b]  
 
 
Set Recordset3_cmd = Server.CreateObject ("ADODB.Command")
Recordset3_cmd.ActiveConnection = MM_Project_STRING
Recordset3_cmd.CommandText = Query2
Recordset3_cmd.Prepared = true

Set Recordset3 = Recordset3_cmd.Execute
[b]Recordset3_numRows = Recordset3.RecordCount[/b]
[b]end if[/b]
%>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Flights</title>




</head>

<body>
<p style="color:#636"> </p>
<div align="center">
 <p><div align="left"><strong>Choose Your Flight </strong></div></p>
 <form id="form1" name="form1" method="post" action="chosenflights.asp">
 <table width="942" height="99" border="2">
   <tr>
     <th scope="col">Check Flight</th>
     <th scope="col">Departure</th>
     <th scope="col">Destination</th>
     <th scope="col">Date</th>
     <th scope="col">Departing Time</th>
     <th scope="col">Arriving Time</th>
     <th scope="col">Price</th>
   </tr>
[b]    <% do while NOT Recordset2.EOF %>
[/b]    <tr>
     <th scope="col">
       <label>
        [b] <input type="radio" name="outtim" id="outtim" value="<% Response.write "departtime=#" & Recordset2("departtime") & "#" %>" />[/b]
         [color=DarkRed]<!-- sent to next form as  request.form("outtim")  -->[/color]
       </label>
     </th>
     <th scope="col"><p>
       <% Response.write Recordset2("departure") %>
        </p></th>
     <th scope="col"><% response.Write Recordset2("destination") %>  </th>
     <th scope="col"><% Response.write Recordset2("FlightDate") %>
        </th>
     <th scope="col"> <% response.Write Recordset2("departtime") %>
     </th>
     <th scope="col"><% response.Write Recordset2("arrivingtime") %></th>
     <th scope="col"><% response.Write Recordset2("priceflight") %></th>
   </tr>
[b]    <% Recordset2.movenext
   loop
   %>
[/b]  </table>
 <label>
[b]  <%if Request.Form("checksinglereturn")<>"return" then %>
[/b]    <input type="submit" name="SingleSubmit" id="SingleSubmit" value="Submit" /> 
   
[b]<script language="javascript">
 function set_outbutton(n)
{
   if (n==1)
       document.getElementById("SingleSubmit").style.visibility="visible"
   else
       document.getElementById("SingleSubmit").style.visibility="hidden"
   
}
</script>
<% end if %>
 </label>
[/b]  </form>
 
 <p> </p>

[b]<%if Request.Form("checksinglereturn")<>"single" then
%>
[/b]  <p><div align="left"> <strong> Choose Your Return Flight </strong> </div></p>
 <form id="form2" name="form2" method="post" action="chosenflights.asp">
 <table width="942" height="99" border="2">
   <tr>
     <th scope="col">Check Flight</th>
     <th scope="col">Departure</th>
     <th scope="col">Destination</th>
     <th scope="col">Date</th>
     <th scope="col"> Departing Time</th>
     <th scope="col">Arriving Time</th>
     <th scope="col">Price</th>
   </tr>
[b]    <% do while NOT Recordset3.EOF %>
[/b]    <tr>
     <th scope="col">
       <label>
         <input type="radio" name="rettim" id="rettim" value="<% Response.write "departtime=#" & Recordset3("departtime") & "#" %>" />
       </label>
    </th>
     <th scope="col"><p>
       <% Response.write Recordset3("departure") %>
        </p></th>
     <th scope="col"><% response.Write Recordset3("destination") %>         </th>
     <th scope="col"><% Response.write Recordset3("FlightDate") %>
        </th>
     <th scope="col"> <% 
   response.Write Recordset3("departtime")
   %>
     </th>
     <th scope="col"><% response.Write Recordset3("arrivingtime") %></th>
     <th scope="col"><% 
  response.Write Recordset3("priceflight")
%></th>
   </tr>
[b]    <% Recordset3.movenext
   loop
   %>
[/b]  </table>
 <label>
   <input type="submit" name="ReturnSubmit" id="ReturnSubmit" value="Submit" />
 </label>
 </form>
</div>
<%
 Recordset3.Close()
 Set Recordset3 = Nothing
end if
%>
<p style="color:#636"> </p>

<script language="javascript">FlashSolver()</script>
</body>
</html>
<%
Recordset2.Close()
Set Recordset2 = Nothing
%>

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...