簡體   English   中英

如何從 Visual Studio 中的 GridView 更新 Access 數據庫?

[英]How do I update an an Access database from a GridView in Visual Studio?

我正在嘗試在 Visual Studio 2010 中使用網格視圖時更新訪問數據庫,但沒有任何成功。 讓我試着解釋一下我所擁有的。

我有一個包含“tblConfirmedworkhours”表的訪問數據庫,其中包含“dateworked”和“confirmed”字段。 我可以使用編輯/更新鏈接在我的網頁上顯示過濾后的表格,但表格不會更新。

選項 1:我希望(如果可能的話)不必單擊編輯和更新按鈕,只需編輯屏幕上的數據(我正在考慮某種與連續表單類似的東西是 MS Access,然后點擊某種保存按鈕((如果可能的話)將運行一個已經創建並存儲在我的訪問數據庫“qryToHistory”中的附加查詢。

選項 2:能夠使用編輯/更新按鈕來更改表中的數據。

這是我當前的代碼:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
DataSourceID="AccessDataSource1"  Width="983px" 
    AutoGenerateDeleteButton="True" AutoGenerateEditButton="True">
<Columns>
   <asp:BoundField DataField="WorkHourID" Visible="false" 
        HeaderText="Timesheet ID" />
    <asp:BoundField DataField="EmpName" HeaderText="Employee" 
        SortExpression="EmpName" />
    <asp:BoundField DataField="dateworked" 
        HeaderText="Date" SortExpression="dateworked" ApplyFormatInEditMode="True">
    <ItemStyle HorizontalAlign="Center" />
    </asp:BoundField>
    <asp:CheckBoxField DataField="confirmed" HeaderText="Confirmed" 
        SortExpression="confirmed" Text="This is OK">
    <ItemStyle HorizontalAlign="Center" />
    </asp:CheckBoxField>
</Columns>
<EditRowStyle Width="500px" Wrap="True" />
<EmptyDataRowStyle Width="5000px" />
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server" 
DataFile="~/PayrollDirect.accdb" 
SelectCommand="SELECT [WorkHourID], [EmpName], [dateworked], [confirmed] FROM [tblConfirmedworkhours] WHERE (([CompanyID] = ?) AND ([confirmed] = ?)) ORDER BY [dateworked]"
UpdateCommand="UPDATE tblConfirmedworkhours SET dateworked=dateworked, confirmed=confirmed where WorkHourID=WorkHourID">
<SelectParameters>
    <asp:SessionParameter DefaultValue="0" Name="CompanyID" SessionField="UserID" Type="Int32" />
    <asp:Parameter DefaultValue="false" Name="confirmed" Type="Boolean" />
</SelectParameters>
<UpdateParameters>
    <asp:Parameter Name="dateworked"/>
    <asp:Parameter Name="confirmed"/>
</UpdateParameters>
</asp:AccessDataSource>

選項 1 是否有可能,如果有的話。

如果選項 1 不可行,我該如何像選項 2 一樣對更新我的表的問題進行排序。

我仍在學習 Visual Studio,因此非常感謝任何幫助。

我在您的數據源中沒有看到更新命令。 您是想通過 aspx 頁面更新它,還是有代碼隱藏頁面?

嘗試在 asp:accessDataSource 中添加一個 UpdateCommand。 我懷疑目前,您正在要求表格更新,而您還沒有告訴它 a) 允許更新 b) 應該如何更新

編輯后。

這是來自我的頭頂。 但是嘗試添加如下內容。(類似於選擇)

  UpdateCommand="UPDATE tblConfirmedworkhours  SET dateWorked=@dateWorked, confirmed =@confirmed where EmpName=@empName">
  <UpdateParameters>
    <asp:Parameter Name="dateWorked" />
    <asp:Parameter Name="confirmed" />
  </UpdateParameters>

我在這台電腦上沒有 VS,所以我現在無法給出確切的答案,抱歉。 但是,我認為您可能還需要在查詢中包含員工編號,因為您可能有 2 名同名員工,並且您需要一個唯一的參考來區分他們。

我也遇到了很多麻煩,並發現了這些帖子中沒有出現的內容:對我來說,主要原因是我有一個 lastupdated 日期時間列,這是必需的,並且在數據庫中設置了默認值. 我假設數據庫會為我處理它的更新,所以我把它作為 GridView 中的一個隱藏列。

經過數小時的挫折,我重新開始並測試我的每一步行動。 然后我發現隱藏必填字段是導致此問題的全部原因! 您可能還會注意到日期格式可能已關閉,具體取決於您的設置,因此如果需要,您還需要以正確的格式提供它。

順便說一下,它不是一個獨特的 Access 東西; 它甚至會發生在 Ms SQL 服務器上,我想其他數據庫也會發生。

我想這也是關於這份報告的幾個問題“有時有效,有時無效”或“它適用於一張桌子而不適用於另一張桌子”的原因。

如果您不希望用戶更改某些列的值,請將它們設置為模板並將其編輯/添加屬性更改為只讀。

還有其他方法可以解決這個問題,例如,在隱藏時在代碼后面提供它的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM