经典ASP将变量值到Access数据库

问题描述:

我试图插入一个变量值到我的Access数据库,我可以插入一个值,是预先设定的像经典ASP将变量值到Access数据库

<td width="125" nowrap="nowrap" ><div align="right">Lead From </div></td> 
    <td><input name="lead" type="text" id="lead" value="" size="50" /></td> 

,你可以看到我们有一个的ID“领导”,我可以插入到数据库罚款是这样的:

MM_fieldsStr = "lead|value"; 
MM_columnsStr = "Lead|',none,''"; 

' create the MM_fields and MM_columns arrays 
MM_fields = Split(MM_fieldsStr, "|") 
MM_columns = Split(MM_columnsStr, "|") 


' set the form values 
For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i))) 
Next 

现在我希望能够做这样的事情:

Session("MM_JobNumber") = job_number 
MM_fieldsStr = job_number & "|value" 
MM_columnsStr = "Job_Num|',none,''" 

当我尝试通过它传递一个变量返回null,OFC你不能看到在我提供的代码中设置的工作号码,但它确实100%得到设置。

COUNTER RECORDER ::

Dim countrec 
Dim countrec_numRows 

Set countrec = Server.CreateObject("ADODB.Recordset") 
countrec.ActiveConnection = MM_JobConn_STRING 
countrec.Source = "SELECT * FROM CounterTAB WHERE Counter_ID = 1" 
countrec.CursorType = 0 
countrec.CursorLocation = 2 
countrec.LockType = 1 
countrec.Open() 

countrec_numRows = 0 

FULL下面的代码::

If (CStr(Request("MM_insert")) = "form2") Then 

    Dim job_number 


IF (Session("MM_JobNumber") <> "") OR (Session("MM_JobNumber") <> NULL)Then 
    job_number = Session("MM_JobNumber") 
Else 



    Dim new_count_num 
    new_count_num = countrec.Fields.Item("Counter_NUM").Value+1 
    job_number = PadDigits(new_count_num, 4) + "-" + mid(DatePart("yyyy",now()),3,2) 
    Session("MM_JobNumber") = job_number 



END IF 

    'UPDATE COUNTER 
    set counterupdate = Server.CreateObject("ADODB.Command") 
    counterupdate.ActiveConnection = MM_JobConn_STRING 
    counterupdate.CommandText = "UPDATE CounterTAB SET Counter_NUM = Counter_NUM + 1 WHERE Counter_ID = 1" 
    counterupdate.CommandType = 1 
    counterupdate.CommandTimeout = 0 
    counterupdate.Prepared = true 
    counterupdate.Execute() 

    MM_editConnection = MM_JobConn_STRING 
    MM_editTable = "Job_Details" 
    MM_editRedirectUrl = "view_jobs_new.asp?offset=-1" 
    MM_fieldsStr = job_number & "|value|hiddenDateRaised|value|hiddenYearRaised|value|hiddenNewRaisedBYID|value|hiddenRaisedBYID|value|hiddenFieldCompanyID|value|hiddenFieldContact1|value|Job_Ref_Name|value|checkbox3_1|value|checkbox3_15|value|checkbox3_4|value|checkbox3_2|value|checkbox3_16|value|checkbox3_5|value|checkbox3_3|value|checkbox3_6|value|checkbox3_7|value|checkbox3_22|value|checkbox3_8|value|checkbox3_9|value|checkbox3_23|value|checkbox3_10|value|checkbox3_20|value|checkbox3_11|value|checkbox3_17|value|checkbox3_12|value|checkbox3_21|value|checkbox3_13|value|checkbox3_18|value|checkbox3_24|value|checkbox3_14|value|checkbox3_19|value|checkbox3_25|value|checkbox3_26|value|DescriptText|value|sitename|value|siteAdd1|value|siteAdd2|value|siteAdd3|value|siteAdd4|value|siteAdd5|value|sitePostCode|value|lead|value" 
    MM_columnsStr = "Job_Num|',none,''|Job_Date|',none,''|Job_Year|none,none,NULL|New_Raised_By|none,none,NULL|Raised_By|none,none,NULL|Company|none,none,NULL|Contact|none,none,NULL|Job_Ref|',none,''|Scope_3_01_SiteDecom|none,-1,0|Scope_3_15_Spill|none,-1,0|Scope_3_04_TankClean|none,-1,0|Scope_3_02_SiteClosure|none,-1,0|Scope_3_16_EnviroAss|none,-1,0|Scope_3_05_OtherTankClean|none,-1,0|Scope_3_03_GroundRem|none,-1,0|Scope_3_06_TankLining|none,-1,0|Scope_3_07_TankPainting|none,-1,0|Scope_3_22_SaleFuel|none,-1,0|Scope_3_08_ShipTank|none,-1,0|Scope_3_09_VapourRec|none,-1,0|Scope_3_23_SaleRec|none,-1,0|Scope_3_10_Petroscope|none,-1,0|[Scope_3_20_IBC Testing]|none,-1,0|Scope_3_11_Vacutect|none,-1,0|Scope_3_17_FuelSys|none,-1,0|Scope_3_12_TankCalib|none,-1,0|Scope_3_21_FuelSampling|none,1,0|Scope_3_13_5stage|none,-1,0|Scope_3_18_Oftec|none,-1,0|Scope_3_24_SpillKit|none,-1,0|Scope_3_14_Rail|none,-1,0|Scope_3_19_TankerServices|none,-1,0|Scope_3_25_Training|none,-1,0|Scope_3_26_Other|none,-1,0|Job_Description|',none,'' | Site_Name|',none,''|Site_Add1|',none,''|Site_Add2|',none,''|Site_Add3|',none,''|Site_Add4|',none,''|Site_Add5|',none,''|Site_Postcode|',none,''|Lead_From|',none,''" 

    ' create the MM_fields and MM_columns arrays 
    MM_fields = Split(MM_fieldsStr, "|") 
    MM_columns = Split(MM_columnsStr, "|") 


    ' set the form values 
    For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i))) 
    Next 

    ' append the query string to the redirect URL 
    If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then 
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then 
     MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString 
    Else 
     MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString 
    End If 
    End If 


End If 

插入代码::

' *** Insert Record: construct a sql insert statement and execute it 

Dim MM_tableValues 
Dim MM_dbValues 

If (CStr(Request("MM_insert")) <> "") Then 

'here goes counter update 

    ' create the sql insert statement 
    MM_tableValues = "" 
    MM_dbValues = "" 
    For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2 
    MM_formVal = MM_fields(MM_i+1) 
    MM_typeArray = Split(MM_columns(MM_i+1),",") 
    MM_delim = MM_typeArray(0) 
    If (MM_delim = "none") Then MM_delim = "" 
    MM_altVal = MM_typeArray(1) 
    If (MM_altVal = "none") Then MM_altVal = "" 
    MM_emptyVal = MM_typeArray(2) 
    If (MM_emptyVal = "none") Then MM_emptyVal = "" 
    If (MM_formVal = "") Then 
     MM_formVal = MM_emptyVal 
    Else 
     If (MM_altVal <> "") Then 
     MM_formVal = MM_altVal 
     ElseIf (MM_delim = "'") Then ' escape quotes 
     MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'" 
     Else 
     MM_formVal = MM_delim + MM_formVal + MM_delim 
     End If 
    End If 
    If (MM_i <> LBound(MM_fields)) Then 
     MM_tableValues = MM_tableValues & "," 
     MM_dbValues = MM_dbValues & "," 
    End If 
    MM_tableValues = MM_tableValues & MM_columns(MM_i) 
    MM_dbValues = MM_dbValues & MM_formVal 
    Next 
    MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")" 

    If (Not MM_abortEdit) Then 
    ' execute the insert 
    Set MM_editCmd = Server.CreateObject("ADODB.Command") 
    MM_editCmd.ActiveConnection = MM_editConnection 
    MM_editCmd.CommandText = MM_editQuery 
    MM_editCmd.Execute 
    MM_editCmd.ActiveConnection.Close 
    Session("MM_JobNumber") = NULL 

    If (MM_editRedirectUrl <> "") Then 
     Response.Redirect(MM_editRedirectUrl) 
    End If 
    End If 

End If 

斯普利特()有隔板,分隔符不涉及。所以尾随的“|” in

MM_columnsStr = "Job_Num|',none,''|" 

在数组中导致伪/空元素。证据:

>> s = "Lead|',none,''" 
>> a = Split(s, "|") 
>> WScript.Echo UBound(a), a(UBound(a)) 
>> 
1 ',none,'' 
>> s = "Job_Num|',none,''|" 
>> a = Split(s, "|") 
>> WScript.Echo UBound(a), a(UBound(a)) 
>> 
2 

关于第二个想法:

>> job_number = "JN" 
>> MM_fieldsStr = job_number & "|value" 
>> WScript.Echo MM_fieldsStr 
>> 
JN|value 

应该证明,该字符串连接工作在VBScript中。如果你

|value 

然后job_number&前行空。也许你的意思

job_number = Session("MM_JobNumber") 

,而不是

Session("MM_JobNumber") = job_number 

最后一个念头:

此:

IF (Session("MM_JobNumber") <> "") OR (Session("MM_JobNumber") <> NULL)Then 
    job_number = Session("MM_JobNumber") 

将设置job_number仅是空或空。

+0

感谢您指出了这一点东西,我意外地增加了一个额外|进入后,但不是在代码中,试图做这个这么久的习惯的力量,我只是不知道如何传递一个变量。 – 2015-03-03 12:30:36

+0

工作号码变量设置之前,实际上生病发布整个代码部分,让你看到什么即时通讯 – 2015-03-03 12:46:15

+0

工作号码仍然会被设置在它下面的else语句中,我已经删除了if语句只是让它设置在石头上,我仍然得到:Microsoft Access数据库引擎错误'80004005' 字段'Job_Details.Job_Num'不能是一个零长度的字符串。 – 2015-03-03 13:05:35

一切都需要的是垫job_number串出与“”在开始和结束标记,希望这可以帮助其他人试图做类似