none
程式有誤_煩請高手幫忙解答 RRS feed

  • 問題

  • 顯示錯誤訊息..以下
     

    Microsoft VBScript 編譯階段錯誤 錯誤 '800a03ea'

    語法錯誤

    /advkm/EmpManage/AddSave.asp, 列20

    If While NOT RsEmp.EOF
    ---^


    原程式碼
    <%@ Language=VBScript %>
    <!--#include file="..\..\include\OLEDB.asp"-->
    <html>
    <head>
    <meta http-equiv="Content-Language" content="zh-tw">
    <meta http-equiv="Content-Type" content="text/html; charset=big5">
    <title>Email 管理-新增(儲存)</title>
    </head>

    <body background="../imanges/背景/房子(背景)1.jpg">
    <%
     Dim strInsert,intCounter,txtEmailKeyIn,txtEmailList
     Response.Buffer=True
    'Session("test")=txtEMail
    'Response.Redirect "..\LoginError.asp"               


     SqlStr="Select * From Emp Where User_id ='" & Trim(Request("txtUser_Id")) & "'"
     Set RsEmp=Conn.Execute(SqlStr) 
     If While NOT RsEmp.EOF
      Response.Redirect "AddMenu.ASP?ShowMessage=請注意!!【員工代號】不能重複!!]" 
        End If
        RsEmp.Close
     Set RsEmp=Nothing

     

        strInsert = "Insert Into EmailManage(EMailDate,EMailTime,Emp,EmpEMail,Dep,EMail,Message,EMailPs,PS,Fg,Code,EmailManageFg,EMailKeyIn) Values('"   
        strInsert = strInsert & Date & "','" & Time & "','" & Request.Cookies("SYSUser_Cname")
        strInsert = strInsert & "','" & Request.Cookies("SYSEMail")
        strInsert = strInsert & "','" & Request.Cookies("SYSdep_name") & "','" & txtEmailList
        strInsert = strInsert & "','" & Trim(Request("txtMessage")) & "','" & Trim(Request("txtEMailPS"))
        strInsert = strInsert & "','" & Trim(Request("txtPS")) & "',0," & intCounter & ","
        If Request.Cookies("SYSdep_name")="業務行銷處" Then
         strInsert = strInsert & "2"
        Else
         strInsert = strInsert & Cint(Request.Cookies("SYSEMailSign")) + 1
        End If
        strInsert = strInsert & ",'" & txtEMailKeyIn & "')"

    'Session("test")=strInsert
    'Response.Redirect "..\LoginError.asp"               

     Conn.Execute(strInsert)
     
     Response.Cookies("EMailManage")("SignFg")="YES"
     Response.Cookies("EMailManage")("Date")=Date
     Response.Cookies("EMailManage")("Code")=intCounter
     Response.Cookies("EMailManage")("EmailManageFg")=Cint(Request.Cookies("SYSEMailSign")) + 1
     Response.Redirect "UpLoad.asp"
      
    %>

    </body>

    2009年9月15日 上午 09:32

解答

  • Conn.Open "DRIVER={SQL Server};server=ServerIP;initial catalog=資料庫名稱;uid=帳號;pwd=密碼"

    粗體字的部份需要您自行替換
    ServerIP:資料庫伺服器的ip位址或hostName
    資料庫名稱、帳號、密碼這些就不需解釋了吧
    • 已標示為解答 jacky22 2009年9月16日 上午 05:55
    2009年9月16日 上午 03:26

所有回覆

  • Hi!

    If While NOT RsEmp.EOF 確認你這邊的語法


    我猜應該是

     If NOT RsEmp.EOF Then
      Response.Redirect "AddMenu.ASP?ShowMessage=請注意!!【員工代號】不能重複!!]" 
     End If


    .NET菜鳥自救會 http://www.dotblogs.com.tw/chou/
    2009年9月15日 上午 09:44
    版主
  • 你用的不是 VBScript 語法,請把邏輯寫出來。
    VBScript 5.6 說明書可在微軟下載中心找到。

    例如:
    If rsEmp.RecordCount > 0 Then

    If Not reEmp.EOF Then

    ADO 線上手冊可參考 Access 2003 附的英文版,或是 VB6 附的中文版。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年9月15日 上午 09:57
  • 嗯........把while拿掉就應該沒事了

    2009年9月15日 下午 03:25
  • 謝謝您的說明及幫忙..經修改後執行

    If NOT RsEmp.EOF Then
     

    Microsoft VBScript 執行階段錯誤 錯誤 '800a01a8'

    此處需要物件: ''

    /advkm/EmpManage/AddSave.asp, 列19

    2009年9月16日 上午 01:00
  • 你的Conn沒有初始化

    2009年9月16日 上午 01:07
  • 您好:

    因個人是網管人員..要兼所有的..此為之前MIS 人員所寫的..
    所以是否可請您幫忙告知解決方式呢...

    TKS
    2009年9月16日 上午 01:25
  • set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "dsn=ServerIP;initial catalog=資料庫名稱;uid=帳號;pwd=密碼"

    要寫在Set RsEmp=Conn.Execute(SqlStr) 之前





    要不您也順便學寫程式好了,來個軟硬通吃
    2009年9月16日 上午 02:11
  • 非常謝謝您的回覆..

     

    Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'

    [Microsoft][ODBC 驅動程式管理員] 找不到資料來源名稱且未指定預設的驅動程式

    /advkm/EmpManage/AddSave.asp, 列20

    已按您所述修改...如還需資料..是否方便直接跟您聯繫呢.
    以前MIS 曾告知好像程式有問題..他曾建議我直接從資料庫新增
    但因我對程式資料不熟..所以還請您幫忙一下..
    感恩..

    2009年9月16日 上午 02:24
  • 試試
    Conn.Open "DRIVER={SQL Server};server=ServerIP;initial catalog=資料庫名稱;uid=帳號;pwd=密碼"


    參考:http://support.microsoft.com/kb/300382/zh-tw
    2009年9月16日 上午 02:54
  • 再次謝謝您喔..
    執行後

     

    Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80004005'

    [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或拒絕存取。

    /advkm/EmpManage/AddSave.asp, 列20

    再請幫忙囉~~

    2009年9月16日 上午 03:00
  • Conn.Open "DRIVER={SQL Server};server=ServerIP;initial catalog=資料庫名稱;uid=帳號;pwd=密碼"

    粗體字的部份需要您自行替換
    ServerIP:資料庫伺服器的ip位址或hostName
    資料庫名稱、帳號、密碼這些就不需解釋了吧
    • 已標示為解答 jacky22 2009年9月16日 上午 05:55
    2009年9月16日 上午 03:26
  • 再次感謝您的協助....

    另外可否請您幫忙看一下...因增加後是ok..但卻在另一個list 顯示不出來..
    有user 35人.但都只顯示25人,,且沒有下一頁

    <%@ Language=VBScript CodePage=950%>
    <% Response.CacheControl = "no-cache" %>
    <% Response.AddHeader "Pragma", "no-cache" %>
    <% Response.Expires = -1 %>
    <% Response.Buffer = true%>

    <!--#include file="..\..\Include\OLEDB.asp"-->
    <%
     Dim varWorkFile,varImages1,varImages2,varImages3,varImages4
     Dim intpageNo,intPageSize,IntI,intMaxPageCount,IntRecCount,intFieldCount 
     Dim str,DBConn,strSQL,ObjRS,txtWWW
     Response.Buffer=True

     '取得一頁有幾筆資料
     PageSize=Request.QueryString("PageSize").Item
     '設定預設值
     If PageSize = "" Then
      PageSize=10
     End If
     '取得到第幾頁
     Page=Request.QueryString("Page").Item
     '設定第幾頁預設值
     If Page = "" Then
      Page = 1
     End If
     
     'Call GetConn("File-server","sa","adv04615057","km") 
     call GetEmp()
     set Conn=session("Conn")
     
     Set Rs = Server.CreateObject("ADODB.RecordSet")
     With Rs
      .CursorType=2
      .LockType=3
      .CursorLocation=3
      .ActiveConnection=conn
     End With
     
     If Request.Cookies("EmpManage")("SQLFg") ="N" Then
      sqlstr="SELECT * FROM Emp Order By Dep_Id"
     Else
      sqlstr=Request.Cookies("EmpManage")("txtSQL")
    'Session("test")=sqlstr
    'Response.Redirect "..\..\LoginError.asp"  
     End If  
     Rs.Open sqlstr 
     If Not (rs.BOF And rs.EOF) Then
      '代表有資料
      
      Dim ShowData '定義顯示資料陣列

      rs.PageSize=PageSize '設定一頁有幾筆資料
      TotalPage=rs.PageCount '取得總共有幾頁
      
      ReDim ShowData(rs.Fields.Count+1,PageSize+1) '動態設定顯示資料的陣列大小
     
      Dim PgFstIdx '分頁第1筆Index
      PgFstIdx = (Page - 1) * PageSize + 1
      rs.MoveFirst '移到資料第一筆
      rs.Move PgFstIdx - 1 '移到分頁第1筆
      
      '放入欄位名稱
      For x = 1 to trim(rs.Fields.Count)
       Select Case x-1
       Case 0
        ShowData(x,1) = "部門"
       Case 1
        ShowData(x,1) = "帳號"
       Case 2
        ShowData(x,1) = "姓名"
       End Select   
      Next
      'ShowData(x,1) = "功能"
      
      '放入顯示資料
      For y = 1 to PageSize
       For x2=1 to rs.Fields.Count
        Select Case x2
        Case 1,2,3,4,5,6,7,8,9,10,11,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
         ShowData(x2,y+1) = trim(rs.Fields(x2-1).Value)
        End Select 
       Next
       rs.MoveNext
       If rs.EOF Then
        Exit For
       End If
      Next
     End If 
     NowTime=Year(Now) & Right(CStr(Month(Now)+100),2) & Right(CStr(Day(Now)+100),2) & Right(CStr(Hour(Now)+100),2) & Right(CStr(Minute(Now)+100),2) & Right(CStr(Second(Now)+100),2)
    %>
    <HTML>
    <HEAD>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
    <meta http-equiv="Content-Type" content="text/html; charset=big5">


    <LINK rel="stylesheet" type="text/css" href="../EMailManage/css/tt.css">

    <!-- calendar stylesheet -->
    <link rel="stylesheet" type="text/css" media="all" href="../DateTime/calendar-win2k-cold-1.css" title="win2k-cold-1" />

    <!-- main calendar program -->
    <script type="text/javascript" src="../DateTime/calendar.js"></script>

    <!-- language for the calendar -->
    <script type="text/javascript" src="../DateTime/lang/calendar-en.js"></script>

    <!-- the following script defines the Calendar.setup helper function, which makes
    adding a calendar a matter of 1 or 2 lines of code. -->
    <script type="text/javascript" src="../DateTime/calendar-setup.js"></script>


    <SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
    <!--

    function window_onload() {

    }

    function chgSet(PageSize,Page){
     var now = new Date();
     var time;
     time = now.getYear().toString() + (now.getMonth()+1).toString() + now.getDate().toString() + now.getHours().toString() + now.getMinutes().toString() + now.getSeconds().toString();
     var strURL = 'SQLMenu.asp?PageSize=' + PageSize + '&Page=1&time=' + time;
     location.href=strURL;
     
    }

    function btnChgPageSize_onclick() {
     var PageSize=window.document.form1.sltPageSize.value;
     window.alert('變更為每頁' + PageSize + '筆資料,跳到第1筆!!');
     chgSet(PageSize,'1');
    }

    //-->
    </SCRIPT>
    <title>員工管理-主畫面</title></HEAD>
    <BODY bgcolor=LightSkyBlue topMargin=0 leftMargin=0 rightMargin=0 bottomMargin=0 bgproperties=fixed LANGUAGE=javascript onload="return window_onload()">
    <center>
    <FORM action="../EMailManage/SQLMenuSet.asp" method=POST id=form1 name=form1>
    <font face="標楷體" size="5" color="#FF0000">員工管理 </font>
     <table border="1" width="85%">
     <tr><%=Request.QueryString("ShowMessage")%></tr>
      <tr>
       <td align="center"><font face="標楷體" size="4" color="#0000FF">部門</font></td>
       <td align="center"><font size="4" color="#0000FF" face="標楷體">
       <select size="1" name="txtIndex1" style="font-family: 金梅中仿宋字原體; ">       
       <option><%=""%></option>
       <%
       sqlstr="SELECT * FROM Dep Where Code<>'GUEST' Order By Code" 
       Set DepRs=Conn.Execute (SQLStr)  
       If NOT DepRs.EOF Then    
        Do While NOT DepRs.EOF
       %>
       <option><%=DepRs("Name")%></option>
       <%
         DepRs.MoveNext
        Loop
       End If 
       %>
       </select></font></td>
       <td align="center"><font face="標楷體" color="#0000FF" size="4">寄件者</font></td>
       <td align="center"><input type="text" name="txtIndex2" size="10"></td>
       <td align="center"><font face="標楷體" size="4" color="#0000FF">收件者</font></td>
       <td align="center"><input type="text" name="txtIndex3" size="20"></td>
       <td align="center"><font color="#FF0000" face="標楷體">
       <input type="text" id="txtdate" name="txtIndex4" size="10" />
       <button id="cmdDate">寄件日期</button>

            </font></td>
      </tr>
      <tr>
       <td align="center" colspan="7"><font color="#0000FF">
     <input type="submit" value="執行查詢" name="B1" style="font-family: serif; font-size: 12pt; color: #0000FF; background-image: url('../SaleRep/imanges/背景/房子(背景')">
       <font face="標楷體" size="5">&nbsp; </font>
       <span style="text-decoration: none">
       <font face="新細明體" size="5">
    <%If NOT Request.Cookies("SYSdep_id")="GUEST" Then%>   
       </font>
       </span><font face="標楷體" size="4">&nbsp;
    <%End If%>&nbsp;&nbsp;<a href="AddMenu.asp">新增資料</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font></td>
      </tr>
     </table>

     

     

    <%
     If Not (rs.BOF And rs.EOF) Then
    %>
    每頁
    <SELECT id=sltPageSize name=sltPageSize>
    <%For tt=1 to PageSize%>
     <OPTION value="<%=tt*2%>"<%If CLng(PageSize) = tt*2 Then%>selected<%End If%>><%=tt*2%></OPTION>
    <%Next%>
    </SELECT>
    筆資料
    <INPUT type="button" value="變更每頁筆數" id=btnChgPageSize name=btnChgpageSize LANGUAGE=javascript onclick="return btnChgPageSize_onclick()">
    共【<font color=red><%=TotalPage%></font>】頁【<font color=red><%=rs.RecordCount%></font>】筆&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目前在第【<font color=red><%=Page%></font>】頁
    <br>
    <!--顯示分業超鏈結開始-->
    <a href="SQLMenu.asp?PageSize=<%=PageSize%>&Page=1&time=<%=NowTime%>" alt="到第1筆">到第一頁</a>
    &nbsp;&nbsp;
    <%
     If TotalPage > PageSize Then
      tpp=PageSize
     Else
      tpp=TotalPage
     End If
     For pp = 1 to tpp
      If pp <> CLng(Page) Then
    %>
    <a href="SQLMenu.asp?PageSize=<%=PageSize%>&Page=<%=pp%>&Time=<%=NowTime%>" alt="到第<%=pp%>頁"><%=pp%></a>&nbsp;
    <% 
      Else
       Response.Write(pp & "&nbsp;")
      End If
     Next
     If TotalPage > 10 Then
      Response.Write("&nbsp;....&nbsp;")
    %>
    <a href="SQLMenu.asp?PageSize=<%=PageSize%>&Page=<%=TotalPage%>&Time=<%=NowTime%>" alt="到第<%=TotalPage%>頁"><%=TotalPage%></a>&nbsp;
    <%  
     End If
     
    %>
    <a href="SQLMenu.asp?PageSize=<%=PageSize%>&Page=<%=TotalPage%>&time=<%=NowTime%>" alt="到最後1筆">到最後一頁</a>
    <!--顯示分業超鏈結結束-->
    <hr>
    <table border=1 bgcolor=Lavender>
     <thead>
      <th class=dh><font face="標楷體">項目</font></th>
    <%
      For x=1 to UBound(ShowData,1)
       
    %> 
      <th class=dh><font face="標楷體"><%=ShowData(x,1)%></font></th>
    <%
      Next

    %>  
     </thead>
     <tbody>
    <%
      For y = 2 to UBound(ShowData,2)
       If ShowData(1,y) <> "" Then
    %>  
      <tr OnMouseOver="this.style.backgroundColor='yellow';this.style.cursor='hand';" OnMouseOut="this.style.backgroundColor='';this.style.cursor='';">
       <td class=dl><font face="標楷體"><%=(Page-1)*PageSize+(y-1)%></font></td>
    <%    For x2=1 to UBound(ShowData,1)
        Select Case x2

        
        case 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28
         
        Case 29       
    %>    
          <td><a href="ListMenu.asp?File_id=<%=trim(ShowData(1,y))%>,<%=trim(ShowData(2,y))%>">
          <font face="標楷體"><%="內容"%></font></a></td>
    <%      
          If Request.Cookies("SYSdep_id")="MIS" Then      
    %>
           <td><a href="Del.asp?File_id=<%=trim(ShowData(1,y))%>,<%=trim(ShowData(2,y))%>">
           <font face="標楷體"><%="刪除"%></font></a></td>
    <%
          End If
        Case Else
    %>
         <td><font face="標楷體"><%=ShowData(x2,y)%></font></td> 
    <%    End Select %>

        
       
    <%    Next%>   
      </tr>
    <%
       End If
      Next
    %>  
     </tbody>
    </table>
    <%
     End If
    %>
    <script type="text/javascript">
    Calendar.setup(
    {
    inputField : "txtdate", // 與輸入區的ID一樣
    ifFormat : "%Y/%m/%d", // the date format
    button : "cmdDate" // 與按鈕的ID一樣
    }
    );
    </script>


    </FORM>
    </center>
    </BODY>
    </HTML>

    2009年9月16日 上午 05:09
  • 建議你們公司外包或找個程式設計師來處理。

    set Conn=session("Conn")

    從這看出,他有 Session 共用變數,就會牽一髮動全身,還不知道還有沒有其他變數,要嘛你就學會在動,不然就讓公司找專人處理,不懂的人改下去,改的零零落落,要是反而影響主功能反而不佳。

    有共用變數的,就要從:
    Set Session("Conn") = Conn

    那個檔查起,搞不好還有用 include ,那就更亂。

    如果要寫程獨立網頁,那乾脆用 ASP.NET 寫,效能也會比較高。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    2009年9月16日 上午 05:51
  • 謝謝您的回覆~~
    2009年9月16日 上午 05:55
  • 嗯..........建議您還是請公司找個正職的Programmer吧
    網站是需要人維護的..........沒有懂程式的人,就沒辦法把網站搞好。


    到最後只會把閣下累壞

    2009年9月16日 上午 05:58