ASP + JScript + SQL = ???????????
Есть проблема, связаная с синтаксисом JScript. Проблема в том что страничка писана на JScript под ASP 3.0 и на ней выполняется запрос с SQL (MS SQL SERVER 2000) таблицы
<%
<%@ LANGUAGE="JSCRIPT"%>
[COLOR="SeaGreen"]<!--Описание переменной-->[/COLOR]
var hours = date (RS.Fields("ActionDate"));//достал из таблицы №1
[COLOR="seagreen"]<!--Запрос с SQL -->[/COLOR]
CMD.CommandText = "SELECT * FROM Offers INNER JOIN OfferValue ON Offers.OfferID=OfferValue.OfferID WHERE Offers.ActionDate='"+hours"'";:confused: //Сравниваю значение переменной hours c таблицой №2
%>
Дело в том что в sql тип date надо заключать в [COLOR="red"]'[/COLOR] переменная [COLOR="Red"]'[/COLOR] т.е в аппострафы, с переменной этого я проделать не могу !!!!!!!!!! надо зделать что то вроде "'&+hours&'"; или "'+hours'";";
[COLOR="Red"][SIZE="4"]Подскажите как правильно описать переменную (JScript) в SQL Запросе?????????:confused: :confused: :confused: [/SIZE][/COLOR]
...WHERE Offers.ActionDate='" + hours + "'";
...WHERE Offers.ActionDate='" + hours + "'";
[COLOR="Red"] CMD.CommandText = CMD.CommandText = "SELECT * FROM Offers INNER JOIN OfferValue ON Offers.OfferID=OfferValue.OfferID WHERE Offers.ActionDate='" + hours + "'";[/COLOR]
[COLOR="DarkRed"]Тип ошибки:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string.[/COLOR]:confused: :confused: :confused:
<%
<!--Описание переменной-->
var hours = String (RS.Fields("OfferID"));//достал из таблицы №1
<!--Запрос с SQL -->
CMD.CommandText = "SELECT * FROM OfferPrice WHERE OfferID= "+onum; //Сравниваю значение переменной hours c таблицой №2
%>[/COLOR]
Этот кусок работает нормально только надо чтобы не по OfferID(String) а по ActionDate(Date):confused: :confused: :confused:
[COLOR="Red"]CMD.CommandText = CMD.CommandText = "SELECT * FROM Offers INNER JOIN OfferValue ON Offers.OfferID=OfferValue.OfferID WHERE Offers.ActionDate="+&+quot +hours +quot"";[/COLOR] еще один тоже не работает вариант
Вообщем вся запарка в [SIZE="6"][COLOR="Red"]' '[/COLOR][/SIZE]
Пишите еще варианты Заранее Спосибо
нужно чтоб строка была в понятном серверу формате, что то типа
ММ/дд/гггг чч:мм:сс вроде бы
Всем спосибо Сделал !!!!!!!!!
[COLOR="SeaGreen"]<%
[SIZE="3"] CMD = Server.CreateObject("ADODB.Command");
h2 = h1.getDay()+"."+h1.getMonth()+"."+h1.getFullYear();
CMD.CommandText = "SELECT * FROM Offers INNER JOIN OfferValue ON Offers.OfferID=OfferValue.OfferID WHERE Offers.ActionDate='"+h2+"'";
txt = CMD.CommandText;[/SIZE]
%>[/COLOR]:D :D
[COLOR="Red"]
Формат даты при вытягивание из базы был не правильным !!!!!![/COLOR]
Еще вариант описание пременной !!!!!!!
[SIZE="3"][COLOR="SeaGreen"]<%
dnext.setDate(fday + 1);
dn = dnext.getDate();
if (dn < 10) dn = "0" + dn;
mn = dnext.getMonth() + 1;
if (mn < 10) mn = "0" + mn;
[COLOR="DarkOrange"]sDate[/COLOR] = dn + "." + mn + "." + dnext.getFullYear();
%>[/COLOR][/SIZE]
//первый коннект к таблице №1 и в нем откравется цикл
CMD = Server.CreateObject("ADODB.Command");
CMD.CommandText = "str_procedure'";
CMD.CommandType = adCmdStoredProc;
CMD.ActiveConnection = DB;
if(UserID > 0){
CMD.Parameters.Append(CMD.CreateParameter("OfferID",adNumeric,adParamInput,10,UserID));
}
RS = CMD.Execute();
while (!RS.EOF){
i=20;
%>
<table id="tab1" BORDER=2 CELLPADDING=1 CELLSPACING=0 WIDTH=100%>
<td align="center">номера</td>
<%
while (i<44) {
%>
<td align="right"><%=Number(RS.Fields(++i))%></td>
<%
}
%>
<td align="right"><%=Number(RS.Fields(46))%>Òûñ.êÂò/÷</td>
<%
RS.MoveNext();
RS.Close();
%>
<%
//второй коннект и цикл закрываем !!!!!!!!
CMD = Server.CreateObject("ADODB.Command");
CMD.CommandText = "str_procedure'";
CMD.CommandType = adCmdStoredProc;
CMD.ActiveConnection = DB;
if(UserID > 0){
CMD.Parameters.Append(CMD.CreateParameter("OfferID",adNumeric,adParamInput,10,UserID));
}
RS = CMD.Execute();
while(!RS.EOF){
hours1 = String (RS.Fields(1));
i=20;
%>
<tr STYLE="background: <%=sColor%>;">
<td align="right">Öåíà</td>
<%
while (i<44) {
%>
<td align="right"><%=RS.Fields(++i)%></td>
<%
}
%>
<td ALIGN="center"><input type="button" id="numbut" width=40% value="Óäàëèòü" onClick="brakeview()"></td>
<%
RS.MoveNext();
}
}
RS.Close();
%>
[COLOR="Red"][SIZE="3"]ругается на то что обьект закрыт!!!!! подскажите как корректно цикл замутить[/SIZE][/COLOR] :confused: :confused: :confused:
CMD = Server.CreateObject("ADODB.Command"); 'коннект к SQLtable1
CMD.CommandText = "StoredProc1";
CMD.CommandType = adCmdStoredProc;
CMD.ActiveConnection = DB;
RS = CMD.Execute();
while (!RS.EOF) {
%>
<table>
//строим табл из значении коннекта SQLtable1
</table>
<%
RS.MoveNext();
RS.Close(); 'закрываем первый коннект
CMD = Server.CreateObject("ADODB.Command"); 'коннект к SQLtable2
CMD.CommandText = "StoredProc2";
CMD.CommandType = adCmdStoredProc;
CMD.ActiveConnection = DB;
RS = CMD.Execute();
%>
<table>
//строим табл из значении коннекта SQLtable2
</table>
<%
RS.MoveNext();
} 'закрываем цикл
RS.Close(); ' Закрываем второй коннект
[COLOR="red"][SIZE="4"]не пашет подскажите[/SIZE][/COLOR] !!!!!!!!!!!!!:confused: :confused: :confused:
как Сделать один [SIZE="4"][COLOR="SandyBrown"]While[/COLOR][/SIZE] НА 2 [COLOR="sandybrown"][SIZE="4"]SQL[/SIZE][/COLOR] Таблицы???????????
если выдергивать данные из двух [COLOR="#ff0000"]SQL[/COLOR] таблиц [COLOR="#ff0000"]ДВУМЯ[/COLOR] циклами то скрипт [SIZE="2"][COLOR="#ff0000"]работает[/COLOR][/SIZE], так что дела здесь не в рассположении [COLOR="Red"]HTML[/COLOR] Тэгов
CMD = Server.CreateObject("ADODB.Command"); 'коннект к SQLtable1
CMD.CommandText = "StoredProc1";
CMD.CommandType = adCmdStoredProc;
CMD.ActiveConnection = DB;
RS = CMD.Execute();
while (!RS.EOF) { 'первый цикл
%>
<table>
//строим табл из значении коннекта SQLtable1
</table>
<%
RS.MoveNext();
} ' закрываем первый
RS.Close(); 'закрываем первый коннект
CMD = Server.CreateObject("ADODB.Command"); 'коннект к SQLtable2
CMD.CommandText = "StoredProc2";
CMD.CommandType = adCmdStoredProc;
CMD.ActiveConnection = DB;
RS = CMD.Execute();
while (!RS.EOF) { ' втрой цикл
%>
<table>
//строим табл из значении коннекта SQLtable2
</table>
<%
RS.MoveNext();
} 'закрываем второй цикл
RS.Close(); ' Закрываем второй коннект
[COLOR="#ff0000"][SIZE="4"]Исходник ------------->[/SIZE][/COLOR]
<link type="text/css" rel="stylesheet" href="Styles/Bids.css">
<script type="text/javascript" src="../JSSoft/Offers.js"></script>
</head>
<body bgcolor="rgb(250,250,250)">
<%
var DB, CMD, RS, com;
var nextDay = "";
var adChar = 0x0081;
var adNumeric = 0x0003;
var adCmdStoredProc = 0x0004;
var adParamInput = 0x0001;
var adOpenForwardOnly = 0x0000;
var adLockReadOnly =0x0001;
var sValid = "";
var iNom = 1;
var sColor = "";
var sUser = "";
var UserID = 0;
var OfferID = "";
var OfferID1 = "";
var usID = new Array();
var usName = new Array();
var uslen = 0;
var i = 0;
var isbids = 0;
var onum = "";
var onum1= "";
var onum2= "";
var hours = new Date();
var hours1="";
var sCommand = "sp_getuseroffers1";
var sBrake = "sp_getuserbrakeoff1";
var Status = "";
var sAll = "0";
var FirstDate = "";
var dnext = new Date();
var dn = "";
var mn = "";
nextDay = String(Request.QueryString("sDate"));
sAll = String(Request.QueryString("sAll"));
if(sAll == "1"){
sCommand = "sp_alluseroffers";
sBrake = "sp_alluserbrakeoff";
}
if(nextDay == "1") {
dn = dnext.getDate();
dnext.setDate(dn + 1);
dn = dnext.getDate();
if (dn < "10") dn = "0" + dn;
mn = dnext.getMonth() + 1;
if (mn < "10") mn = "0" + mn;
nextDay = dn + "." + mn + "." + dnext.getFullYear();
}
DB = Server.CreateObject("ADODB.Connection");
DB.ConnectionTimeout = 15;
DB.CommandTimeout = 10;
DB.Open("DSN=" + Session("dbname"),Session("dbuser"),Session("dbpwd"));
RS = Server.CreateObject("ADODB.Recordset");
RS.Open("sp_getshortuser", DB, adOpenForwardOnly, adLockReadOnly, adCmdStoredProc);
if(!RS.EOF) {
while(!RS.EOF){
usID[uslen] = Number(RS.Fields("UserID"));
usName[uslen] = String(RS.Fields("ShortName"));
if(Session("UserID") == String(RS.Fields("UserCode"))) UserID = usID[uslen];
uslen += 1;
RS.MoveNext();
}
RS.Close();
}
i = 1;
if(i > 0){
UserID = 0;
sCommand = "sp_getoffers1";
sBrake = "sp_getbrakeoffers1";
if(sAll == "1"){
sCommand = "sp_alloffers";
sBrake = "sp_allbrakeoffers";
}
Status = "New";
}
CMD = Server.CreateObject("ADODB.Command");
CMD.CommandText = sCommand;
CMD.CommandType = adCmdStoredProc;
CMD.ActiveConnection = DB;
if(UserID > 0){
CMD.Parameters.Append(CMD.CreateParameter("UserID",adNumeric,adParamInput,10,UserID));
}
CMD.Parameters.Append(CMD.CreateParameter("oType",adChar,adParamInput,1,"D"));
CMD.Parameters.Append(CMD.CreateParameter("aDate",adChar,adParamInput,10,nextDay));
if(sAll == "0"){CMD.Parameters.Append(CMD.CreateParameter("Status",adChar,adParamInput,7,Status));
CMD.Parameters.Append(CMD.CreateParameter("Valid",adChar,adParamInput,1,"V"));
}
RS = CMD.Execute();
if(!RS.EOF){
isbids = 1;
%>
<div id="div1" align="center">
Çàÿâêè íà ïðîäàæó
</div>
<table id="tab1" BORDER=2 CELLPADDING=1 CELLSPACING=0 WIDTH=100%>
<%
while (!RS.EOF) {
i = 0;
hours = Date(RS.Fields("ActionDate"));
var h1 = new Date((RS.Fields("ActionDate")));
while(i < uslen){
if(RS.Fields(1) == usID) {sUser = usName; i = uslen;}
i += 1;
}
sValid = "íåò";
if((RS.Fields(8) == "V") && (String(RS.Fields(9)).substr(0,3) == "New")) sValid = "äà";
if(iNom > 0) {iNom = 0; sColor = "rgb(255,255,255)";}
else {iNom = 1; sColor = "rgb(240,240,240)";}
%>
<%
RS.MoveNext();
}
RS.Close();
i=0;
%>
<tr STYLE="background: rgb(208,208,208)" ALIGN="right">
<td align="left">×àñû</td>
<%
while (i<24){
%>
<td align="right"><%=(++i)%></td>
<%
}
%>
<td align="right">Ñóììû</td>
</TABLE>
<%
%>
<!-- ================================================================================ -->
<%
CMD = Server.CreateObject("ADODB.Command");
CMD.CommandText = "SELECT * FROM Offers INNER JOIN OfferValue ON Offers.OfferID=OfferValue.OfferID WHERE Offers.ActionDate='"+nextDay+"'";
CMD.ActiveConnection = DB;
if(UserID > 0){
CMD.Parameters.Append(CMD.CreateParameter("OfferID",adNumeric,adParamInput,10,UserID));
}
RS = CMD.Execute();
while (!RS.EOF){
i=20;
var w="1";
%>
<table id="tab1" BORDER=2 CELLPADDING=1 CELLSPACING=0 WIDTH=100%>
<tr STYLE="background: <%=sColor%>;">
<td align="center">Òûñ.êÂò÷</td>
<%
while (i<44) {
%>
<td align="right"><%=Number(RS.Fields(++i))%></td>
<%
}
RS.MoveNext();
RS.Close();
%>
<!-- ================================================================================ -->
<%
CMD = Server.CreateObject("ADODB.Command");
CMD.CommandText = "SELECT * FROM Offers INNER JOIN OfferPrice ON Offers.OfferID=OfferPrice.OfferID WHERE Offers.ActionDate='"+nextDay+"'";
txt = CMD.CommandText;
CMD.ActiveConnection = DB;
if(UserID > 0){
CMD.Parameters.Append(CMD.CreateParameter("OfferID",adNumeric,adParamInput,10,UserID));
}
RS = CMD.Execute();
if(!RS.EOF){
hours1 = String (RS.Fields(0));
i=20;
%>
<tr STYLE="background: <%=sColor%>;">
<td align="right">Öåíà</td>
<%
while (i<44) {
%>
<td align="right"><%=RS.Fields(++i)%></td>
<%
}
%>
<td ALIGN="center"><input type="button" id="numbut" width=40% value="Óäàëèòü" onClick="brakeview()"></td>
<%
RS.MoveNext();
}
}
RS.Close();
%>
<!-- ================================================================================ -->
<%
%>
</TABLE>
<table id="tab1" BORDER=2 CELLPADDING=1 CELLSPACING=0 WIDTH=100%>
<td align="right"> <%=hours1%> </td>
<td align="right"> <%=hours%> </td>
<td align="right"> <%=nextDay%> </td>
</table>
<%
}
if(isbids < 1){
%>
<div id="div1" align="center">
Íà óêàçàííûé îïåðàöèîííûé äåíü ïðåäëîæåíèÿ îòñóòñòâóþò
</div>
<%
}
%>
<!-- #include file="../Common/myfooter.asp" -->
[COLOR="Red"]
Тип ошибки:
Active Server Pages, ASP 0113 (0x80004005)
Истекло время ожидания сценария
Превышено максимальное время, выделенное для выполнения сценария. Можно изменить это предельное значение, указав новое значение для свойства Server.ScriptTimeOut или воспользовавшись средствами администрирования IIS.
/tradenva/BigTrade/offers.asp[/COLOR]
CMD.CommandText = "StoredProc1";
CMD.CommandType = adCmdStoredProc;
CMD.ActiveConnection = DB;
for(var rs = CMD.Execute(); !rs.EOF; rs.MoveNext())
{
%>Таблица 1: <%=rs("id").Value%><%
}
CMD = Server.CreateObject("ADODB.Command"); 'коннект к SQLtable2
CMD.CommandText = "StoredProc2";
CMD.CommandType = adCmdStoredProc;
CMD.ActiveConnection = DB;
for(var rs = CMD.Execute(); !rs.EOF; rs.MoveNext())
{
%>Таблица 2: <%=rs("id").Value%><%
}
Сударь! Перестали бы вы красным цветом писать... нехорошо это. Красный де-факто цвет модератора ;) .