【问题标题】:Checked box windows application复选框窗口应用程序
【发布时间】:2019-09-01 16:24:03
【问题描述】:

我正在使用 Visual Studio 中的 VB.Net 处理 Windows 窗体。我在我的用户表单上添加了一个复选框控件。我正在使用 Ms Access 数据库并用向导连接它。

我使用以下命令将数据保存到数据库中:

 Me.tblRegistrationBindingSource.EndEdit()

如何将选中列表框中的选中项目的数据保存到Ms access数据库中,如果需要进行任何修改,如何检索?

任何帮助将不胜感激。

【问题讨论】:

    标签: vb.net winforms ms-access


    【解决方案1】:

    看起来你快到了。当您在绑定源上调用 EndEdit 时,这将更改您已修改的 DataRow 的 RowState(它将变为已添加或已修改)。我通常将数据适配器与数据表一起使用。

    使用数据适配器,您将需要连接四个命令。选择、插入、更新和删除。连接好命令后,您将需要调用数据适配器的 Update 方法,并传入数据表。

    您需要考虑的一件事是主键的处理。如果您正在使用数据集等,则您正在使用数据库的内存表示,而不是针对实时数据库。我使用 SQL 服务器,不知道 Access 是否允许您获取由自动编号字段创建的主键。您可以在 INSERT 命令中尝试以下操作,看看它是否有效:INSERT INTO TABLE (Field) VALUES(@Field)**;SELECT ID, FieldOne,... FROM Table WHERE ID=SCOPE_IDENTITY()**。如果这不起作用,您将需要研究它。否则,如果您尝试更新之前添加但未返回主键的记录,则会收到错误消息。

    您还需要将以下内容添加到您的项目中:

     Public Sub RowUpdated(ByVal sender As Object, ByVal e As Data.SqlClient.SqlRowUpdatedEventArgs)
        Select Case e.StatementType
            Case StatementType.Insert
                e.Status = UpdateStatus.SkipCurrentRow
        End Select
    End Sub
    Dim da As New System.Data.SqlClient.SqlDataAdapter
    AddHandler da.RowUpdated, AddressOf RowUpdated
    

    【讨论】:

    • 我知道如何更新记录。但问题是我想将多个值更新为一列。就像有些人有两个爱好,跳舞和游泳。那么如何通过使用选中的列表框控件将这两个爱好添加到数据库中,我可以在其中检查这两个 bobbies?
    • 我不建议在一列中存储多个值。相反,我将创建一个通过外键与父表相关的数据库表。听起来你不需要 BindingSource 来完成你想要完成的事情。听起来您可以使用 ValueChanged 事件并添加 DataRow 或删除 DataRow。
    • 听起来不错。现在假设我用外键创建了一个新表。现在我如何能够在选中的列表框中显示爱好(这个选中的列表框有多个爱好,但如上所述只检查 2 个爱好)。当我导航下一个选中的列表框时,选择应该根据数据库中的用户爱好进行更改?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多