【问题标题】:After some changes data delete automatically [duplicate]一些更改后数据自动删除[重复]
【发布时间】:2017-05-16 03:28:29
【问题描述】:

我创建了一个项目。我想在我运行form2表单的时候菜单栏记录会自动显示出来。

access database
vb.net 2010
connecting through coding 
use connecting module
------------------------------------
in form load event 
call connection
call showdata '---*I want to when I run the form2 form menu bar record will show automatically.
----------------------------------------------
call showdata coding

    cnn = New OleDb.OleDbConnection
    With cnn
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB.accdb;Persist Security Info=False;"
        .Open()
    End With
    Dim ds As New DataSet
    Dim dt As New DataTable
    ds.Tables.Add(dt)
    Dim da As New OleDb.OleDbDataAdapter
    da = New OleDb.OleDbDataAdapter("select * from cominfo", cnn)
    da.Fill(dt)
    cnn.Close()
    If dt.Rows.Count = 0 Then
        MsgBox("No Company Name Registerd. Please Registered The Company....", vbOKOnly)
        Cominfo.Show()
        Cominfo.ComnameTextBox.Focus()
    Else
        Cominfo.IDTextBox.Text = dt.Rows(0).Item(0)
        Cominfo.ComnameTextBox.Text = dt.Rows(0).Item(1)
    End If

添加数据后完美显示数据的编码

但是当我进行其他任何更改编码时(例如,我添加了一个用于显示日期时间的文本框)并保存然后运行应用程序并转到 form2,所有记录都会自动删除。然后我添加记录并停止应用程序然后运行100次正常工作但是当我在删除/添加编码窗口的一些空白区域后按下保存按钮时,当我运行应用程序并打开form2时没有记录。

我使用此代码在数据上插入数据

基础模块

Imports System.Data.OleDb
Module Modconnection
Public cnn, cn As New OleDb.OleDbConnection
Public cm As New OleDb.OleDbCommand
Public dr As OleDbDataReader

Public Sub connection()
    cn = New OleDb.OleDbConnection
    With cn
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\DB.accdb;Persist Security Info=False;"
        .Open()
    End With
End Sub

添加数据按钮:

    Call connection()
    Try

        cm = New OleDb.OleDbCommand
        With cm
            .Connection = cn
            .CommandType = CommandType.Text
            .CommandText = "INSERT INTO cominfo (Comname,Add1,Add2,Phone,Vat,cst_tin,Email,Website) VALUES (@Comname,@Add1,@Add2,@Phone,@Vat,@cst_tin,@Email,@Website)"

            .Parameters.Add(New System.Data.OleDb.OleDbParameter("@Comname", System.Data.OleDb.OleDbType.VarChar, 255, Me.ComnameTextBox.Text))
            .Parameters.Add(New System.Data.OleDb.OleDbParameter("@Add1", System.Data.OleDb.OleDbType.VarChar, 255, Me.Add1TextBox.Text))
            .Parameters.Add(New System.Data.OleDb.OleDbParameter("@Add2", System.Data.OleDb.OleDbType.VarChar, 255, Me.Add2TextBox.Text))
            .Parameters.Add(New System.Data.OleDb.OleDbParameter("@Phone", System.Data.OleDb.OleDbType.VarChar, 255, Me.PhoneTextBox.Text))

            .Parameters.Add(New System.Data.OleDb.OleDbParameter("@Vat", System.Data.OleDb.OleDbType.VarChar, 255, Me.VatTextBox.Text))
            .Parameters.Add(New System.Data.OleDb.OleDbParameter("@cst_tin", System.Data.OleDb.OleDbType.VarChar, 255, Me.Cst_tinTextBox.Text))
            .Parameters.Add(New System.Data.OleDb.OleDbParameter("@Email", System.Data.OleDb.OleDbType.VarChar, 255, Me.EmailTextBox.Text))
            .Parameters.Add(New System.Data.OleDb.OleDbParameter("@Website", System.Data.OleDb.OleDbType.VarChar, 255, Me.WebsiteTextBox.Text))


            ' RUN THE COMMAND
            cm.Parameters("@Comname").Value = Me.ComnameTextBox.Text
            cm.Parameters("@Add1").Value = Me.Add1TextBox.Text
            cm.Parameters("@Add2").Value = Me.Add2TextBox.Text
            cm.Parameters("@Phone").Value = Me.PhoneTextBox.Text

            cm.Parameters("@Vat").Value = Me.VatTextBox.Text
            cm.Parameters("@cst_tin").Value = Me.Cst_tinTextBox.Text
            cm.Parameters("@Email").Value = Me.EmailTextBox.Text
            cm.Parameters("@Website").Value = Me.WebsiteTextBox.Text

            cm.ExecuteNonQuery()
            MsgBox("Record saved.", MsgBoxStyle.Information)


            Me.ComnameTextBox.Text = ""
            Me.Add1TextBox.Text = ""
            Me.Add2TextBox.Text = ""
            Me.PhoneTextBox.Text = ""

            Me.VatTextBox.Text = ""
            Me.Cst_tinTextBox.Text = ""
            Me.EmailTextBox.Text = ""
            Me.WebsiteTextBox.Text = ""



            Exit Sub
        End With
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical)
    End Try

【问题讨论】:

  • 请花点时间了解一下代码格式化工具是如何工作的。您不需要<pre> - 只需使用编辑器中的图标,它看起来像{}。不清楚这个问题中哪些材料是代码,哪些是评论,所以我不得不猜测。
  • 谢谢先生的回复
  • 我只是将 db.accdb 属性副本更改为输出目录“请勿复制”谢谢大家

标签: vb.net ms-access


【解决方案1】:

我只是将 db.accdb 属性副本更改为输出目录“请勿复制”

【讨论】:

    【解决方案2】:

    您缺少的是您只是在本地 DataTable 中编辑数据,所以如果您退出并返回程序,它就消失了!

    所以你需要做的是创建一个 OleDb 命令并创建一个“插入”语句或一个“更新”语句。我会给你一个包含更多信息的链接。

    https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdataadapter.insertcommand(v=vs.110).aspx

    https://msdn.microsoft.com/en-us/library/5yeecx59(v=vs.110).aspx

    编辑:一个展示工作代码的好视频(不是我的): https://www.youtube.com/watch?v=MWP8geR76kI

    【讨论】:

    • 我用这段代码在数据库中插入数据
    • 我用这个代码在数据库上插入数据代码太多了所以我在顶部添加代码(主要命令区域。请检查请帮助我先生...... .....
    • 您是否遇到任何错误?
    • 没有先生,没有错误显示,只是在我自动运行应用程序数据删除后保存
    • 老实说我不太确定。从我所见,代码看起来不错...
    猜你喜欢
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    • 2015-04-06
    • 1970-01-01
    • 2017-09-18
    • 2022-01-22
    相关资源
    最近更新 更多