1

従来のASPを使用してAccessにレコードを追加しようとすると、エラー80040e07が発生します。コードは昨日完全に機能していました。

MicrosoftJETデータベースエンジンエラー「80040e07」

基準式のデータ型の不一致。

/alumni/admin/addvalue.asp、3行目

btitlebnamebaddressbphonebpincodeの各フィールドは空白にすることができますが、その他のフィールドは必須です。

私のコード:

dim conn, rs, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, concat, sqlstr
Set conn=Server.createObject("ADODB.Connection")
Set rs=Server.createObject("ADODB.Recordset")
conn.open="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("\alumni/alumni.mdb") & ""
t1=Request.form("txtfname")
t2=Request.form("txtlname")
t3=Request.form("txtprn")
t4=Request.form("txtbdate")
t5=Request.form("gender")
t6=Request.form("txtmail")
t7=Request.form("txtaddrs")
t8=Request.form("txtcity")
t9=Request.form("txtstate")
t10=Request.form("txtpincode")
t11=Request.form("txtpphone")
t12=Request.form("txtsecphone")
t13=Request.form("drpdegree")
t14=Request.form("drppassyear")
t15=Request.form("txtdesg")
t16=Request.form("txtcname")
t17=Request.form("txtcaddr")
t18=Request.form("txtccity")
t19=Request.form("txtcstate")
t20=Request.form("txtcpincode")
t21=Request.form("txtcphone")
t22=Request.form("txtcmail")
concat=t14&t3
if(t20="")then
    t20=0
end if
sqlstr="insert into users(userid,passwd,utype,ufname,ulname,uprnumber,ubdate,ugender,uemail,uaddress,ucity,ustate,upincode,upphone,usphone,udegree,upassyear,btitle,bname,baddress,bcity,bstate,bpincode,bphone,bemail)values('"&t6&"','"&concat&"','student','"&t1&"','"&t2&"','"&t3&"','"&t4&"','"&t5&"','"&t6&"','"&t7&"','"&t8&"','"&t9&"','"&t10&"','"&t11&"','"&t12&"','"&t13&"','"&t14&"','"&t15&"','"&t16&"','"&t17&"','"&t18&"','"&t19&"','"&t20&"','"&t21&"','"&t22&"')"
response.write("this is the string"&sqlstr)
'response.write("THIS IS PASSWORD "+concat)
rs.open "insert into users(userid,passwd,utype,ufname,ulname,uprnumber,ubdate,ugender,uemail,uaddress,ucity,ustate,upincode,upphone,usphone,udegree,upassyear,btitle,bname,baddress,bcity,bstate,bpincode,bphone,bemail)values('"&t6&"','"&concat&"','student','"&t1&"','"&t2&"','"&t3&"','"&t4&"','"&t5&"','"&t6&"','"&t7&"','"&t8&"','"&t9&"','"&t10&"','"&t11&"','"&t12&"','"&t13&"','"&t14&"','"&t15&"','"&t16&"','"&t17&"','"&t18&"','"&t19&"',"&t20&",'"&t21&"','"&t22&"')",conn

JavaScriptコード:

var fname = '<%=t1&t2%>';
var email='<%=t6%>';
var passwd='<%=concat%>';
alert('hi,'+fname+'your regestration is successful.'+'\nyour Id='+email+'\nPassword='+passwd);
window.location="http://localhost/alumni/default.asp";
4

2 に答える 2

2

このように回線を無効にしてrs.open……

'rs.open "insert into users ...

次に、ブラウザーで開きaddvalue.asp、この行からの出力をコピーします。

response.write("this is the string" & sqlstr)

Access を起動し、新しいクエリを作成し、SQL ビューに切り替えて、からの出力としてコピーしたものを貼り付けますsqlstr。SQL ステートメントを表示してもデータ型の不一致エラーがすぐに明確にならない場合は、フィールド リスト内の各フィールドのデータ型を調べて、挿入しようとしている値と比較する必要があります。

INSERTただし、ASP コードでは、ステートメントをパラメーター クエリとして修正した ADO Command オブジェクトを使用する必要があると思います。次に、 Parameters Collectionを使用して値を追加します。

于 2012-10-12T17:46:55.383 に答える
1

従来の ASP を使用して Access ファイルに書き込んでいる場合、上記のコードは php で書かれているように見えます。ASP に挿入するのではなく、更新または新規追加します。接続を確立するには複数の方法があるため、接続文字列には入りませんが、クエリ構文は必要です

例:

 rs.open "users", conn, 3, 3
 rs.AddNew

 rs("passwd")=request.form("password")
 rs("username")=request.form("username")
 etc...

 rs.update
 rs.close
 conn.close
于 2012-10-12T16:57:52.127 に答える