21. marts 2004 - 20:30Der er
74 kommentarer og 1 løsning
asp og mysql qury
hej til alle.
hjælpppppppppppppppppppppppppp!
jeg har tidligere lavet en applikation i asp med access database. i dennne application har der været en masse (statistik) sider som læste fra nogle forspørelser som fandtes i min access database. Men da jeg nu har fået besked på at databasen skal ændres til MySql har jeg fået store problemmer.
En af de store problemmer er at jeg ikke ved hvordan jeg skal lave disse statistiksider i asp, da de tidligere læste som en tabel fra access (forspørgelserne i den).
koden for en af acces forspørelser ser sådan ud :
SELECT DISTINCTROW rejse.rejse_airlines, rejse.rejse_til, Sum(booking.booking_total_pris) AS [Sum Of booking_total_pris], Sum(booking.booking_koebs_pris) AS [Sum Of booking_koebs_pris], Sum(udskrift.udskrifts_nr) AS SumOfudskrifts_nr FROM (booking INNER JOIN rejse ON booking.booking_id = rejse.booking_id) INNER JOIN udskrift ON booking.booking_id = udskrift.booking_id WHERE (((rejse.rejse_type)="afrejse")) GROUP BY rejse.rejse_airlines, rejse.rejse_til;
Er der nogen der har en ide til hvordan det ovenævnte kan løses ?
skal jeg smide det overnænte sql kode på asp siden direkte ? eller skal kan man smide den i en tekstfil og læse fra den ved angive den i asp siden ?
eller kan man lave denne som forsørelse i Mysql og have resultatet gemt ?
Det korrekt at mySQL ikke har forspørgelser som access har, men du kan tage SQL sætningerne fra forspørgelerne og ligge ind i ASP siden eks:
SQL = "SELECT DISTINCTROW rejse.rejse_airlines, rejse.rejse_til, Sum(booking.booking_total_pris) AS [Sum Of booking_total_pris], Sum(booking.booking_koebs_pris) AS [Sum Of booking_koebs_pris], Sum(udskrift.udskrifts_nr) AS SumOfudskrifts_nr FROM (booking INNER JOIN rejse ON booking.booking_id = rejse.booking_id) INNER JOIN udskrift ON booking.booking_id = udskrift.booking_id WHERE (((rejse.rejse_type)="afrejse")) GROUP BY rejse.rejse_airlines, rejse.rejse_til;"
og så bruge en connetion til at execute den som med access:
jeg ved ikke rigtigt hvor jeg skal placere dette henne i min asp kode.
min koder ser sådan ud:
<% displayRecs = 20 recRange = 10 %>
<% ' Get table name tablename = "[bookingoversigt]" dbwhere = "" a_search = "" b_search = "" %>
<% ' Get search criteria for basic search pSearch = Request.QueryString("psearch") If pSearch <> "" Then pSearch = replace(pSearch,"'","''") pSearch = replace(pSearch,"[","[[]") b_search = b_search & "[id] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[navn] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Deltager] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[afrejse] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[ankomst] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[flightnr] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Billetnummer] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Afrejsedato] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Telefon] LIKE '%" & pSearch & "%' OR "
End If If len(b_search) > 4 Then b_search = mid(b_search,1,len(b_search)-4) b_search = "(" & b_search & ")" End If %>
<% 'Build search criteria If a_search <> "" Then dbwhere = dbwhere & a_search 'advance search ElseIf b_search <> "" Then dbwhere = dbwhere & b_search 'basic search End If
'Save search criteria If dbwhere <> "" Then Session("tablename") = tablename Session("dbwhere") = dbwhere 'reset start record counter startRec = 1 Session("OpretBooking_REC") = startRec Else If tablename = Session("tablename") Then dbwhere = Session("dbwhere") Else 'reset search criteria dbwhere = "" Session("dbwhere") = dbwhere End If End If
'Get clear search cmd If Request.QueryString("cmd").Count > 0 then cmd=Request.QueryString("cmd") If ucase(cmd) = "RESET" Then 'reset search criteria dbwhere = "" Session("dbwhere") = dbwhere End If End If
' Check for an Order parameter OrderBy = "" If Request.QueryString("order").Count > 0 Then OrderBy = Request.QueryString("order") ' Check if an ASC/DESC toggle is required If Session("OpretBooking_OB") = OrderBy Then If Session("OpretBooking_OT") = "ASC" Then Session("OpretBooking_OT") = "DESC" Else Session("OpretBooking_OT") = "ASC" End if Else Session("OpretBooking_OT") = "ASC" End If Session("OpretBooking_OB") = OrderBy Session("OpretBooking_REC") = 1 Else OrderBy = Session("OpretBooking_OB") if OrderBy = "" then OrderBy = DefaultOrder Session("OpretBooking_OB") = OrderBy Session("OpretBooking_OT") = DefaultOrderType End If End If
' Open Connection to the database set conn = Server.CreateObject("ADODB.Connection") conn.Open xDb_Conn_Str
' Build Query strsql = "select * from [bookingoversigt]"
If dbwhere <> "" Then strsql = strsql & " WHERE " & dbwhere End If
if OrderBy <> "" then strsql = strsql & " ORDER BY [" & OrderBy & "] " & Session("OpretBooking_OT") end if
' Check for a START or PAGENO parameter If Request.QueryString("start").Count > 0 Then startRec = Request.QueryString("start") Session("OpretBooking_REC") = startRec ElseIf Request.QueryString("pageno").Count > 0 Then pageno = Request.QueryString("pageno") if isnumeric(pageno) then startRec = (pageno-1)*displayRecs+1 if startRec <= 0 then startRec = 1 elseif startRec >= ((totalRecs-1)\displayRecs)*displayRecs+1 then startRec = ((totalRecs-1)\displayRecs)*displayRecs+1 end if Session("OpretBooking_REC") = startRec Else startRec = Session("OpretBooking_REC") if not isnumeric(startRec) or startRec = "" then 'reset start record counter startRec = 1 Session("OpretBooking_REC") = startRec End If End If Else startRec = Session("OpretBooking_REC") if not isnumeric(startRec) or startRec = "" then 'reset start record counter startRec = 1 Session("OpretBooking_REC") = startRec End If End If %>
' Build Query strsql = "select * from [bookingoversigt]"
If dbwhere <> "" Then strsql = strsql & " WHERE " & dbwhere End If
if OrderBy <> "" then strsql = strsql & " ORDER BY [" & OrderBy & "] " & Session("OpretBooking_OT") end if
Hvor det fra forspørgelsen/qyeryen skal ind i stedet for denne : strsql = "select * from [bookingoversigt]" og så skal det med order by også bygges ind eksvis sådan her:
' Build Query SQL = "SELECT DISTINCTROW rejse.rejse_airlines, rejse.rejse_til, Sum(booking.booking_total_pris) AS [Sum Of booking_total_pris], Sum(booking.booking_koebs_pris) AS [Sum Of booking_koebs_pris], Sum(udskrift.udskrifts_nr) AS SumOfudskrifts_nr FROM (booking INNER JOIN rejse ON booking.booking_id = rejse.booking_id) INNER JOIN udskrift ON booking.booking_id = udskrift.booking_id WHERE (((rejse.rejse_type)='afrejse')) GROUP BY rejse.rejse_airlines, rejse.rejse_til;"
strsql = "select * from (" & SQL & ")"
If dbwhere <> "" Then strsql = strsql & " WHERE " & dbwhere End If
if OrderBy <> "" then strsql = strsql & " ORDER BY " & OrderBy & " " & Session("OpretBooking_OT") end if
det ikke sikkert mySQL vil "æde" [] den bruger vist `
Det kan måske være en fordel at starte med kun at få denne til at virke:
SQL = "SELECT DISTINCTROW rejse.rejse_airlines, rejse.rejse_til, Sum(booking.booking_total_pris) AS `Sum Of booking_total_pris`, Sum(booking.booking_koebs_pris) AS `Sum Of booking_koebs_pris`, Sum(udskrift.udskrifts_nr) AS SumOfudskrifts_nr FROM (booking INNER JOIN rejse ON booking.booking_id = rejse.booking_id) INNER JOIN udskrift ON booking.booking_id = udskrift.booking_id WHERE (((rejse.rejse_type)='afrejse')) GROUP BY rejse.rejse_airlines, rejse.rejse_til;"
Den du variable du kalder: xDb_Conn_Str Er ikke en streng, men en Connection til databasen som det fremgår af det du har skrevet 21/03-2004 21:11:10 Så prøv at bruge xDb_Conn_Str som din connection og ikke Conn, eller lav xDb_Conn_Str om til en streng
sql = "SELECT DISTINCT rejse.rejse_airlines, rejse.rejse_til, Sum(booking.booking_total_pris) AS `Sum Of booking_total_pris`, Sum(booking.booking_koebs_pris) AS `Sum Of booking_koebs_pris`, Sum(udskrift.udskrifts_nr) AS SumOfudskrifts_nr
' Build Query sql = "SELECT DISTINCT rejse.rejse_airlines, rejse.rejse_til, Sum(booking.booking_total_pris) AS `Sum Of booking_total_pris`, Sum(booking.booking_koebs_pris) AS `Sum Of booking_koebs_pris`, Sum(udskrift.udskrifts_nr) AS SumOfudskrifts_nr FROM (booking INNER JOIN rejse ON booking.booking_id = rejse.booking_id) INNER JOIN udskrift ON booking.booking_id = udskrift.booking_id WHERE (((rejse.rejse_type)='afrejse')) GROUP BY rejse.rejse_airlines, rejse.rejse_til;"
jeg har taget det overnævnte og prøvet den direkte på phpadmin som er database administrations del hos min webhoster og der melder den sql ok (altså direkte på databsen og ikke igennem asp )
det ser ud til at det har løst noget, men det er bare det at i acces da havde jeg derfineret det som forkskellige felter : men nu er det anderledes og derfor melder den fejl her i denne stum kode ?
Hvis det er SQL som gør der ikke kommer data ud så prøv at lave den simple som dette, bare for at se der kan komme noget ud, så kan det andet bygges på igen.
sql = "SELECT DISTINCT rejse.rejse_airlines, rejse.rejse_til FROM rejse"
Samme linje, altså = <a href="<% If not isnull(rs("rejse_airlines")) Then response.write "opretbookinglook.asp?key=" & Server.URLEncode(rs("booking_id")) Else response.write "java script:alert('Invalid Record! Key is null.');" %>">
hmmm?? hvordan kan der være type mismatch?? det vel bare et tal booking_id??
Prøv evt sådan her:
Samme linje, altså = <a href="<% If not isnull(rs("rejse_airlines")) Then response.write "opretbookinglook.asp?key=" & Server.URLEncode(""&rs("booking_id")) Else response.write "java script:alert('Invalid Record! Key is null.');" %>">
<a href="<% If not isnull(rs("rejse_airlines")) Then response.write "opretbookinglook.asp?key=" & rs("booking_id") Else response.write "java script:alert('Invalid Record! Key is null.');" %>">
Har linjen altid virket? umiddelbart kan man nemligge havde else i samme linje som then?
<a href=" <% If not isnull(rs("rejse_airlines")) Then response.write "opretbookinglook.asp?key=" & rs("booking_id") Else response.write "java script:alert('Invalid Record! Key is null.');" End If %>">
<% ' Get table name tablename = "[bookingoversigt]" dbwhere = "" a_search = "" b_search = "" %>
<% ' Get search criteria for basic search pSearch = Request.QueryString("psearch") If pSearch <> "" Then pSearch = replace(pSearch,"'","''") pSearch = replace(pSearch,"[","[[]") b_search = b_search & "[id] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[navn] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Deltager] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[afrejse] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[ankomst] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[flightnr] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Billetnummer] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Afrejsedato] LIKE '%" & pSearch & "%' OR " b_search = b_search & "[Telefon] LIKE '%" & pSearch & "%' OR "
End If If len(b_search) > 4 Then b_search = mid(b_search,1,len(b_search)-4) b_search = "(" & b_search & ")" End If %>
<% 'Build search criteria If a_search <> "" Then dbwhere = dbwhere & a_search 'advance search ElseIf b_search <> "" Then dbwhere = dbwhere & b_search 'basic search End If
'Save search criteria If dbwhere <> "" Then Session("tablename") = tablename Session("dbwhere") = dbwhere 'reset start record counter startRec = 1 Session("OpretBooking_REC") = startRec Else If tablename = Session("tablename") Then dbwhere = Session("dbwhere") Else 'reset search criteria dbwhere = "" Session("dbwhere") = dbwhere End If End If
'Get clear search cmd If Request.QueryString("cmd").Count > 0 then cmd=Request.QueryString("cmd") If ucase(cmd) = "RESET" Then 'reset search criteria dbwhere = "" Session("dbwhere") = dbwhere End If End If
' Check for an Order parameter OrderBy = "" If Request.QueryString("order").Count > 0 Then OrderBy = Request.QueryString("order") ' Check if an ASC/DESC toggle is required If Session("OpretBooking_OB") = OrderBy Then If Session("OpretBooking_OT") = "ASC" Then Session("OpretBooking_OT") = "DESC" Else Session("OpretBooking_OT") = "ASC" End if Else Session("OpretBooking_OT") = "ASC" End If Session("OpretBooking_OB") = OrderBy Session("OpretBooking_REC") = 1 Else OrderBy = Session("OpretBooking_OB") if OrderBy = "" then OrderBy = DefaultOrder Session("OpretBooking_OB") = OrderBy Session("OpretBooking_OT") = DefaultOrderType End If End If
' Open Connection to the database set conn = Server.CreateObject("ADODB.Connection") conn.Open xDb_Conn_Str
sql = "SELECT rejse.booking_id, rejse.rejse_airlines, rejse.rejse_til, Sum(booking.booking_total_pris) AS `Sum Of booking_total_pris`, Sum(booking.booking_koebs_pris) AS `Sum Of booking_koebs_pris`, Sum(udskrift.udskrifts_nr) AS SumOfudskrifts_nr " sql = sql & " FROM (booking INNER JOIN rejse ON booking.booking_id = rejse.booking_id) INNER JOIN udskrift ON booking.booking_id = udskrift.booking_id " sql = sql & " WHERE (((rejse.rejse_type)='afrejse')) " sql = sql & " GROUP BY rejse.booking_id, rejse.rejse_airlines, rejse.rejse_til;"
strsql = "select * from (" & SQL & ")"
If dbwhere <> "" Then strsql = strsql & " WHERE " & dbwhere End If
if OrderBy <> "" then strsql = strsql & " ORDER BY " & OrderBy & " " & Session("OpretBooking_OT") end if
' Check for a START or PAGENO parameter If Request.QueryString("start").Count > 0 Then startRec = Request.QueryString("start") Session("OpretBooking_REC") = startRec ElseIf Request.QueryString("pageno").Count > 0 Then pageno = Request.QueryString("pageno") if isnumeric(pageno) then startRec = (pageno-1)*displayRecs+1 if startRec <= 0 then startRec = 1 elseif startRec >= ((totalRecs-1)\displayRecs)*displayRecs+1 then startRec = ((totalRecs-1)\displayRecs)*displayRecs+1 end if Session("OpretBooking_REC") = startRec Else startRec = Session("OpretBooking_REC") if not isnumeric(startRec) or startRec = "" then 'reset start record counter startRec = 1 Session("OpretBooking_REC") = startRec End If End If Else startRec = Session("OpretBooking_REC") if not isnumeric(startRec) or startRec = "" then 'reset start record counter startRec = 1 Session("OpretBooking_REC") = startRec End If End If %> <body bgcolor="#F6F6F7">
<% 'Avoid starting record > total records if clng(startRec) > clng(totalRecs) then startRec = totalRecs end if 'Set the last record to display stopRec = startRec + displayRecs - 1
'Move to first record directly for performance reason recCount = startRec - 1 if not rs.eof then rs.movefirst rs.move startRec - 1 end if
recActual = 0 Do While (NOT rs.EOF) AND (recCount < stopRec) recCount = recCount + 1 If Clng(recCount) >= Clng(startRec) Then recActual = recActual + 1 %>
<% 'set row color bgcolor="#FFFFFF" %>
<% ' Display alternate color for rows If recCount mod 2 <> 0 Then bgcolor="#F5F5F5" End If %> <% Response.Write ("rejse_airlines") Response.Write ("Sum Of booking_koebs_pris")
%> <tr bgcolor="<%= bgcolor %>"> <td width="18"><font face="Verdana" size="1"> <% response.write x_booking_id %> </font></td> <td width="66"><font face="Verdana" size="1"> <% response.write x_afrejse_dato %> <td width="117"><font face="Verdana" size="1"> <% response.write x_Kunde_navn %> </font></td> <td width="71"><font face="Verdana" size="1"> <% response.write x_afrejse_fra %> </font></td> <td width="54"><font face="Verdana" size="1"> <% response.write x_booking_total_pris %> </font></td> <td width="27"><font face="Verdana" size="1"> <% response.write x_Booking_betallings_type %> </font></td> <td width="57"><font face="Verdana" size="1"> <% response.write x_booking_rest_beoloeb%> </font></td> <td width="16"> <a href="<% If not isnull(rs("rejse_airlines")) Then response.write "opretbookinglook.asp?key=" & rs("booking_id") Else response.write "java script:alert('Invalid Record! Key is null.');" End If %>"> <font face="Verdana" size="1"> <img src="anatolien/images/view.gif" alt="View" width="16" height="16" border="0"></font></font></td></a> <td> <a href="<% If not isnull(rs("rejse_airlines")) Then response.write "OpretBookingedit.asp?key=" & rs("booking_id") Else response.write "java script:alert('Invalid Record! Key is null.');" End If %>"> <font face="Verdana" size="1"> <img src="anatolien/images/edit.gif" alt="Edit" width="16" height="16" border="0"></font></a></td> <td width="17"> <a href="<% If not isnull(rs("rejse_airlines")) Then response.write "OpretBookingdelete.asp?key=" & rs("booking_id") Else response.write "java script:alert('Invalid Record! Key is null.');" End If %>"> <font face="Verdana" size="1"> <img src="anatolien/images/delete.gif" alt="Delete" width="16" height="16" border="0"></font></a></td> </tr>
<% end if
rs.MoveNext Loop %>
</table>
</div>
<p> </p> <p> </p> <p> </p>
<p> </p>
<table border="0" cellspacing="0" cellpadding="10" width="718" id="table1"><tr><td> <% if totalRecs > 0 then
PrevStart = startRec - displayRecs If PrevStart < 1 Then PrevStart = 1 NextStart = startRec + displayRecs If NextStart > totalRecs Then NextStart = startRec LastStart = ((totalRecs-1)\displayRecs)*displayRecs+1 %>
<table border="0" cellspacing="0" cellpadding="0" id="table2"><tr><td><font face="Verdana" size="1"> Side</font> </td> <!--first page button--> <% If clng(startRec)=1 Then %> <td> <img src="anatolien/images/firstdisab.gif" alt="First" width="20" height="15" border="0"></td> <% Else %> <td><a href="bookingoversigt.asp?start=1"> <img src="anatolien/images/first.gif" alt="First" width="20" height="15" border="0"></a></td> <% End If %> <!--previous page button--> <% If clng(PrevStart) = clng(startRec) Then %> <td> <img src="anatolien/images/prevdisab.gif" alt="Previous" width="20" height="15" border="0"></td> <% Else %> <td><a href="bookingoversigt.asp?start=<%=PrevStart%>"> <img src="images/prev.gif" alt="Previous" width="20" height="15" border="0"></a></td> <% End If %> <!--current page number--> <td><input type="text" name="pageno" value="<%=(startRec-1)\displayRecs+1%>" size="4" style="font-size: 9pt;"></td> <!--next page button--> <% If clng(NextStart) = clng(startRec) Then %> <td> <img src="anatolien/images/nextdisab.gif" alt="Next" width="20" height="15" border="0"></td> <% Else %> <td><a href="bookingoversigt.asp?start=<%=NextStart%>"> <img src="anatolien/images/next.gif" alt="Next" width="20" height="15" border="0"></a></td> <% End If %> <!--last page button--> <% If clng(LastStart) = clng(startRec) Then %> <td> <img src="anatolien/images/lastdisab.gif" alt="Last" width="20" height="15" border="0"></td> <% Else %> <td><a href="bookingoversigt.asp?start=<%=LastStart%>"> <img src="anatolien/images/last.gif" alt="Last" width="20" height="15" border="0"></a></td> <% End If %> <td><a href="OpretBooking.asp"> <img src="anatolien/images/addnew.gif" alt="Add new" width="20" height="15" border="0"></a></td> <td> <font face="Verdana" size="1">af </font><font size="-1"> <%=(totalRecs-1)\displayRecs+1%></font></td> </tr></table> <% If stopRec > recCount Then stopRec = recCount %> <font face="Verdana" size="1">Oplysning <%= startRec %> til <%= stopRec %> af <%= totalRecs %> </font>
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.