2013-02-10 247 views
1

我想更新我的訪問數據庫中的值,但它在某些情況下不起作用。asp.net訪問數據庫沒有更新

代碼:

<form id="form1" runat="server"> 
<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
     DataFile="~/App_Data/Database1.mdb" 
     DeleteCommand="UPDATE DT_Person SET Deleted = NOW() WHERE (Person_Ref = ?)" 
     InsertCommand="INSERT INTO [DT_Person] ([Person_Ref], [Created], [Updated], [Deleted],  [Person_Name], [Person_No]) VALUES (?, ?, ?, ?, ?, ?)" 
     OldValuesParameterFormatString="original_{0}" 
     SelectCommand="SELECT * FROM [DT_Person]" 
     UpdateCommand="UPDATE DT_Person SET Updated = NOW(), Person_Name = ?, Person_No = ? WHERE (Person_Ref = ?)"> 
     <DeleteParameters> 
      <asp:Parameter Name="original_Person_Ref" Type="Int32" /> 
     </DeleteParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="Created" Type="DateTime" /> 
      <asp:Parameter Name="Updated" Type="DateTime" /> 
      <asp:Parameter Name="Deleted" Type="DateTime" /> 
      <asp:Parameter Name="Person_Name" Type="String" /> 
      <asp:Parameter Name="Person_No" Type="String" /> 
      <asp:Parameter Name="original_Person_Ref" Type="Int32" /> 
     </UpdateParameters> 
     <InsertParameters> 
      <asp:Parameter Name="Person_Ref" Type="Int32" /> 
      <asp:Parameter Name="Created" Type="DateTime" /> 
      <asp:Parameter Name="Updated" Type="DateTime" /> 
      <asp:Parameter Name="Deleted" Type="DateTime" /> 
      <asp:Parameter Name="Person_Name" Type="String" /> 
      <asp:Parameter Name="Person_No" Type="String" /> 
     </InsertParameters> 
    </asp:AccessDataSource> 
    <asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
     AllowSorting="True" AutoGenerateColumns="False" BackColor="White" 
     BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" 
     DataKeyNames="Person_Ref" DataSourceID="AccessDataSource1"> 
     <RowStyle ForeColor="#000066" /> 
     <Columns> 
      <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" 
       ShowSelectButton="True" /> 
      <asp:BoundField DataField="Person_Ref" HeaderText="Person_Ref" 
       InsertVisible="False" ReadOnly="True" SortExpression="Person_Ref" /> 
      <asp:BoundField DataField="Created" HeaderText="Created" 
       SortExpression="Created" /> 
      <asp:BoundField DataField="Updated" HeaderText="Updated" 
       SortExpression="Updated" /> 
      <asp:BoundField DataField="Deleted" HeaderText="Deleted" 
       SortExpression="Deleted" /> 
      <asp:BoundField DataField="Person_Name" HeaderText="Person_Name" 
       SortExpression="Person_Name" /> 
      <asp:BoundField DataField="Person_No" HeaderText="Person_No" 
       SortExpression="Person_No" /> 
     </Columns> 

正如你所看到的,delete命令

(DeleteCommand="UPDATE DT_Person SET Deleted = NOW() WHERE (Person_Ref = ?)") 

是一個真正的更新語句,並能正常工作。但是,實際的更新聲明不適用於網頁。奇怪的是,如果你在'查詢生成器'中測試查詢,它工作正常。

真的需要一些幫助。

TIA

P.S.我使用Visual Studio 2008和每次使用數據源構建器

+0

我剛剛測試過,它適用於我。你收到什麼錯誤信息?你有沒有在Access文件和文件夾上的權限? – Fionnuala 2013-02-10 14:49:30

回答

0

Windows 7(如果這就是您使用的)已知在調試文件中將Access數據庫的副本向下並對所有數據使用副本變化。您可能想要檢查您實際訪問的數據庫是否是您認爲的副本。

在整個開發機器上搜索具有相同名稱的文件。你可能會驚訝什麼出現。