2011-03-15 123 views
0

我需要一张发票表格,经典Asp + Ajax进销存

请帮我解释一下如何将所有的数据一次性插入发票表。

我正在使用文本框来获取项目的所有详细信息。

这里是从表中获取项目的细节的代码。

enter code here<% While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF))%> 
      <tr> 
      <td><input name="dipatchid" type="text" id="dipatchid" value="<%=(Recordset1.Fields.Item("dispatchid").Value)%>" size="5" /></td> 
      <td><input name="dispatchdate" type="text" id="dispatchdate" value="<%=(Recordset1.Fields.Item("dis_date").Value)%>" /></td> 
      <td><input type="hidden" name="custid_" id="custid_" /> 
       <input name="From_" type="text" id="From_" value="<%=(Recordset1.Fields.Item("from_").Value)%>" /></td> 
      <td><input name="to_" type="text" id="to_" value="<%=(Recordset1.Fields.Item("To_").Value)%>" /></td> 
      <td><input name="hrs" type="text" id="hrs" value="<%=(Recordset1.Fields.Item("total_hrs").Value)%>" size="5" /></td> 
      <td><input name="rate_" type="text" id="rate_" size="8" /></td> 
      <td><input name="totalamt" type="text" id="totalamt" size="10" /></td> 
      <td><img src="imgs/error_icon.png" width="16" height="16" alt="Remove" /></td>    </tr> 
      <% Repeat1__index=Repeat1__index+1 Repeat1__numRows=Repeat1__numRows-1 Recordset1.MoveNext() Wend %> 

enter image description here

+0

是否要将* Form *数据插入数据库表中?完全不清楚你想要做什么。 – 2011-03-15 08:46:04

+0

是的,我想要将表单数据插入到db表中,但问题是首先我要从一个表中读取数据以进行审计...然后将其发布到其他表中。数据没有修复。行的,其变化 – Dev 2011-03-15 12:55:14

回答

1

要做到这一点,你需要保持的两件事情轨迹:

  • 是将要插入每一行的
  • 的数据行数

这样做的窍门很简单。在显示数据时,用循环数增加一个变量。

<% 
iNumberOfRecords = 0 
Do Until Recordset1.EOF 
    %> 
    <tr> 
    <td> 
     <input name="dipatchid" type="text" id="..." value="<%=Recordset1("dispatchid")%>" /> 
    </td> 
    ... 
    </tr> 
    <% 
    iNumberOfRecords = iNumberOfRecords + 1 
Recordset1.MoveNext 
loop 
Recordset1.Close 
%>

在关闭<form>标记之前,将其放在隐藏字段中。

<input type="hidden" name="iNumberOfRecords" value="<%=iNumberOfRecords%>" />

接下来,您提交给,你循环iNumberOfRecords次插入的所有行的页面上。

<% 
for i = 1 to CInt(Request.Form("iNumberOfRecords")) 
    idOfRecord = GetFormValue("dipatchid", i) 
    otherField = GetFormValue("otherField", i) 

    SQL = "INSERT INTO tblInvoices(dispatchid, otherfield) VALUES (" & idOfRecord & ", " & otherfield & ")" 
    Connectionobject.Execute(SQL) 
next 

Function GetFormValue(sFormname, iIndex) 
    If Request.Form(sFormname).Count >= iIndex And iIndex > 0 Then 
    GetFormValue = Request.Form(sFormname)(iIndex) 
    Else 
    GetFormValue = "" 
    End If 
End Function 
%>

(i)获取正确的Request.Form("...")项目适合你。

+0

HI, 感谢答复,我得到这个错误 “请求对象错误ASP 0105:80004005' 索引超出范围 /united/insertinvoice.asp 18行 数组索引超出范围 “ 代码是 ”<% 对于i = 0至CINT(的Request.Form(“ iNumberOfRecords”)) idOfRecord =的Request.Form( “dipatchid”)(ⅰ) otherField = Request.Form(“dispatchdate”)(i) custid = Request.Form(“custid”)(i) SQL =“INSERT INTO inv DAT(DISPID,disdate,客户ID)VALUES( “&idOfRecord&”, “&otherfield&”, “&客户ID& ”)“ Connectionobject.Execute(SQL) 下 %> ” – Dev 2011-03-17 04:39:28

+0

对不起,无法正常工作,同错误,可能是我们传递给数组的值很大,如1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ,1,2,2,12,1,2,1,1,1,1,1,2,21,21,21,1,1,1,121,521,1,1,1,1,522,52,5,11 ,1,52 – Dev 2011-03-17 14:46:27

+0

你是什么意思? – 2011-03-17 14:58:41