0

ユーザーを登録しようとするとエラーが発生します。ローカルではすべて正常に動作していますが、ファイルをリモートでアップロードするとエラーが発生します。私のコードはこちら

    Dim conn As OleDbConnection
    Dim strinsert As String
    Dim cmdinsert As OleDbCommand

    conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|sabersolutions.mdb")
    strinsert = "INSERT INTO register(Name,Email,Passwords,Newsletter,ReportTemplates,ReturningMember,Sponsor)SELECT TOP 1 @Name,@Email,@Passwords,@Newsletter,@ReportTemplates,@ReturningMember,@Sponsor FROM register WHERE NOT EXISTS(SELECT 1 FROM register WHERE Name=@Name AND Email=@Email AND Passwords=@Passwords AND Newsletter=@Newsletter AND ReportTemplates=@ReportTemplates AND ReturningMember=@ReturningMember AND Sponsor=@Sponsor)"

    cmdinsert = New OleDbCommand(strinsert, conn)
    cmdinsert.Parameters.Add("@Name", OleDbType.VarWChar, 255).Value = txtName.Text
    cmdinsert.Parameters.Add("@Email", OleDbType.VarWChar, 255).Value = txtEmail.Text
    cmdinsert.Parameters.Add("@Passwords", OleDbType.VarWChar, 255).Value = txtPass.Text
    cmdinsert.Parameters.Add("@Sponsor", OleDbType.Boolean, 1).Value = ckSponsor.Checked
    cmdinsert.Parameters.Add("@Newsletter", OleDbType.Boolean, 1).Value = ckNews.Checked
    cmdinsert.Parameters.Add("@ReportTemplates", OleDbType.Boolean, 1).Value = ckReportTemp.Checked
    cmdinsert.Parameters.Add("@ReturningMember", OleDbType.Boolean, 1).Value = ckRSponsor.Checked
    cmdinsert.Parameters.Add("@Sponsor", OleDbType.Boolean, 1).Value = ckSponsor.Checked

    cmdinsert.Connection.Open()

    cmdinsert.ExecuteNonQuery()

    cmdinsert.Connection.Close()

    LblSuccess.Text = "You have successfully Register, Please Login to view our Online Booking Sytem."

私が得ているエラー

Server Error in '/' Application.

Operation must use an updateable query.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.OleDb.OleDbException: Operation must use an updateable query.

Source Error: 


Line 27:         cmdinsert.Connection.Open()
Line 28: 
Line 29:         cmdinsert.ExecuteNonQuery()
Line 30: 
Line 31:         cmdinsert.Connection.Close()

Source File: C:\inetpub\vhosts\sabersolutions.co.za\httpdocs\RegisterandLoginForm.aspx.vb    Line: 29 

スタックトレース:

   [OleDbException (0x80004005): Operation must use an updateable query.]
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) +1081356
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +247
   System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +194
   System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +58
   System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +167
   System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +113
   RegisterandLoginForm.Button2_Click(Object sender, EventArgs e) in C:\inetpub\vhosts\sabersolutions.co.za\httpdocs\RegisterandLoginForm.aspx.vb:29
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563

バージョン情報: Microsoft .NET Framework バージョン:4.0.30319; ASP.NET バージョン:4.0.30319.272

4

1 に答える 1

0

私は Access の初心者ではありませんが、クエリにエラーがあります。

....
SELECT TOP 1 @Name,@Email,@Passwords,@Newsletter,
             @ReportTemplates,@ReturningMember,@Sponsor 
FROM register 
...

おそらくそうあるべきです。

....
SELECT TOP 1 Name,Email,Passwords,Newsletter,
             ReportTemplates,ReturningMember,Sponsor 
FROM register 
...

ただし、「更新可能なクエリ」の問題は、Access で SQL サーバー クエリを使用しようとしている可能性が最も高いですUPDATEが、Access のUPDATE構文は標準からかけ離れており、サブクエリを結合として書き直す必要がある可能性があります。もっと Access-Foo を持っている人は、おそらくそれを手伝ってくれるでしょう。

または、正しい Access 構文でクエリを書き直すのに役立つ Access Query Wizard を試すこともできます。

于 2013-03-03T18:33:46.453 に答える