标题:关于SQLSetConnectAttr 的故障
只看楼主
supergzh
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-3-17
 问题点数:0 回复次数:12 
关于SQLSetConnectAttr 的故障

错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC 驱动程序管理器] 驱动程序的 SQLSetConnectAttr 失败
/bom.asp, 第 130 行



什么原因失败的
高手简单判断下

搜索更多相关主题的帖子: Microsoft 故障 OLE ODBC Drivers 
2006-03-18 17:56
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
bom.asp, 第 130 行
把这个文件的第130行源代码贴出来看看。
2006-03-18 21:30
supergzh
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-3-17
得分:0 

<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_CONN_STRING ''130行
Recordset1.Source = "SELECT * FROM ncreData"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>

2006-03-18 22:01
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
得分:0 
MM_CONN_STRING这个应该是出问题的关键,楼主有没有这样的代码?
MM_CONN_STRING.ConnectionString="[这里有一串字符串]"
或者
MM_CONN_STRING.Open "[这里有一串字符串]"这样的代码把字符串贴出来。
2006-03-18 22:20
supergzh
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-3-17
得分:0 






<!--#include file="Connections/CONN.asp" -->
<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
MM_editAction = MM_editAction & "?" & Server.HTMLEncode(Request.QueryString)
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Insert Record: set variables

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

MM_editConnection = MM_CONN_STRING
MM_editTable = "ncreData"
MM_editRedirectUrl = "ncre_ok.html"
MM_fieldsStr = "bmh|value|xm|value|xb|value|mz|value|sfzh|value|csrq|value|lxdh|value|zy|value|whcd|value|blcjzl|value|cjpx|value|lxdz|value"
MM_columnsStr = "bmh|',none,''|xm|',none,''|xb|',none,''|mz|',none,''|sfzh|',none,''|csrq|',none,NULL|lxdh|',none,''|zy|',none,''|whcd|',none,''|blcjzl|',none,''|kspxzl|',none,''|lxdz|',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

' 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 ///////////////////115行
MM_editCmd.ActiveConnection.Close

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

End If
%>

<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_CONN_STRING ''130行


-====================

一共有两处

我是用DW弄的,刚接触ASP,有些东西看不明白




[此贴子已经被作者于2006-3-19 12:23:22编辑过]

2006-03-19 12:09
supergzh
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2006-3-17
得分:0 
现在可以了

我把CONN文件写成:

<%
' FileName="Connection_odbc_conn_dsn.htm"
' Type="ADO"
' DesigntimeType="ADO"
' HTTP="false"
' Catalog=""
' Schema=""
Dim MM_CONN_STRING
db_path = "/data/data.mdb" '检查你的数据库连接地址是否有误
Set conn= Server.CreateObject("ADODB.Connection")
MM_CONN_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db_path)
conn.Open MM_CONN_STRING
%>





但是在提交表单是又出现





  • 错误类型:
    Microsoft JET Database Engine (0x80004005)
    操作必须使用一个可更新的查询。
    /bom.asp, 第 115 行


  • 2006-03-19 12:21
    yms123
    Rank: 16Rank: 16Rank: 16Rank: 16
    等 级:版主
    威 望:209
    帖 子:12488
    专家分:19042
    注 册:2004-7-17
    得分:0 
    MM_editCmd.CommandType=1+128
    在115行之前加入上面的代码试一试,看看行不行。
    2006-03-19 12:57
    yms123
    Rank: 16Rank: 16Rank: 16Rank: 16
    等 级:版主
    威 望:209
    帖 子:12488
    专家分:19042
    注 册:2004-7-17
    得分:0 
    还有就是初学者最好不要用DWMX2004的自动生成代码功能,因为DWMX2004自动生成的代码对于初学者或者编程来说并不符合要求。
    2006-03-19 12:58
    supergzh
    Rank: 1
    等 级:新手上路
    帖 子:20
    专家分:0
    注 册:2006-3-17
    得分:0 

    专家,不行啊

    ADODB.Command (0x800A0BB9)
    参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。


    2006-03-19 13:18
    yms123
    Rank: 16Rank: 16Rank: 16Rank: 16
    等 级:版主
    威 望:209
    帖 子:12488
    专家分:19042
    注 册:2004-7-17
    得分:0 
    以下是引用supergzh在2006-3-19 13:18:00的发言:

    专家,不行啊

    ADODB.Command (0x800A0BB9)
    参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。


    那就不太清楚了。
    MM_editCmd.CommandType=1你可以试一下或MM_editCmd.CommandType=128直接用,看哪个管用。

    2006-03-19 21:30



    参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-51225-1-1.html




    关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

    编程中国 版权所有,并保留所有权利。
    Powered by Discuz, Processed in 0.357312 second(s), 7 queries.
    Copyright©2004-2024, BCCN.NET, All Rights Reserved