2015-12-07 1 views
0

Код:аргументы имеют неправильный тип, находятся вне допустимого диапазона, или находятся в конфликте друг с другом VBScript ERROR

<%@LANGUAGE="VBSCRIPT"%> 

<% 
set updatetime = Server.CreateObject("ADODB.Connection") 
updatetime.open "DRIVER=SQL Server;***************************************" 
If request.form("in_out")="checkin" then 
updatetime.execute ("insert into hourlist (username, checkintime, paid,breakCount) values ('"&session("MM_username")&"', '"&Now()&"', 0, 2) ") 

End if 

If request.form("in_out")="checkout" then 
updatetime.execute ("update hourlist set checkouttime='"&Now()&"' where username='"&session("MM_username")&"' and checkouttime is NULL") 
End if 
If request.form("in_out")="breakcheckin" then 
updatetime.execute ("update hourlist set breakCheckIn='"&Now()&"' where ID='"&session("MM_ID")&"' ") 
updatetime.execute ("update hourlist set breakCheckOut=Null where ID='"&session("MM_ID")&"' and breakCheckOut is not NULL ") 
End if 
If request.form("in_out")="breakcheckout" then 
updatetime.execute ("select breakCheckIn from hourlist where ID='"&session("MM_ID")&"' ") 
Dim BTD 
BTD=Round(Csng(DateDiff("n", (updatetime.Fields.Item("breakCheckIn").Value), (Now()))), 2) 
updatetime.execute ("update hourlist set breakCheckOut='"&Now()&"', breakCount=breakCount-1 where ID='"&session("MM_ID")&"' ") 
updatetime.execute ("update hourlist set breakTime='"&BTD&"' where ID='"&session("MM_ID")&"' ") 
updatetime.execute ("update hourlist set breakCheckIn=NULL where ID='"&session("MM_ID")&"' and breakCheckIn is not NULL ") 
End if 
updatetime.close 
set updatetime=nothing 
response.redirect "employee.asp?in_out="&request.form("in_out") 

%> 

В зависимости от радио выбора я сделать diffrent вещи, я получаю " Ошибка ADODB.Connection '800a0bb9' "ошибка в 21 строке (BTD = Round ... line) может кто-то сказать мне, что я сделал не так на этой линии? Я написал «updatetime.Fileds» неправильно или что?

Sry для моего плохого английского языка.

+0

Попробуйте использовать объект ADODB.Command для выполнения ваших SQL-запросов. http://www.w3schools.com/asp/ado_ref_command.asp http://www.w3schools.com/asp/met_comm_execute.asp – mjw

+0

Есть ли способ использовать Connection и получить необходимое поле? – StanchAftw

ответ

0
Dim myConnection, myRecordset  
set myRecordset = Server.CreateObject("ADODB.Recordset") 
set myConnection = Server.CreateObject("ADODB.Connection") 
myConnection.Open "DRIVER=SQL Server;***************************************" 

myRecordset.Open "select breakCheckIn from hourlist where ID='"&session("MM_ID")&"' ", myConnection 

Dim bciValue = myRecordset("breakCheckIn") 
Response.Write "BreakCheckIn value is: " & bciValue 

myRecordset.Close 
myConnection.Close 
+1

Сначала вы пропустили 'Set', теперь вы используете() при вызове Sub. –

+0

происходит переключение между классическими и .net, thx – mjw

0

Ваш updatetime - это соединение, а не набор записей (с. Полями). Вам может понадобиться для хранения результата/записей из

updatetime.execute ("select breakCheckIn from hourlist where ID='"&session("MM_ID")&"' ")

в переменной и использовать его поле (я) в последнем заявлении (ы) (или - гораздо лучше - параметризованные запросы).

Update WRT комментарий:

Использование Set для назначения объекта (набора записей) переменной.

+0

'дим BCI дим BTD BCI = updatetime.execute ("выберите breakCheckIn из hourlist, где ID = ' "& сессия (" MM_ID ") &"' ") BTD = Круглый (CSng (DateDiff (" п", (BCI.Fields.Item ("breakCheckIn"). Value), (Now()))), 2) ' Все еще не работает ... Мне нужно сделать Recordset, или я могу использовать Connection для получения необходимого Поле из БД? – StanchAftw

+0

Ty 'Dim BTD Set BCI = updatetime.execute (" select breakCheckIn из списка часов, где ID = '"и сеанс (" MM_ID ") &"' ") BTD = Round (Csng (DateDiff (" n ", (BCI) .Fields.Item ("breakCheckIn"). Value), (Now()))), 2) ' - это ответ. :) – StanchAftw

 Смежные вопросы

  • Нет связанных вопросов^_^