在VB表单和Access DB之间创建连接

时间:2014-02-19 19:33:37

标签: vb.net visual-studio-2010 ms-access vb6

您好我正在尝试使用VB Express 2010创建前端用户表单我已经创建了一个表单,但是想要从文本框中上传数据并将其添加到Access数据库中的记录集。 / p>

我使用excel userform和VBA完成了这项工作,但大家一致认为这不是一个好主意。我只需要用visual basic轻松一下语法。这是我的连接子代码是来自VBA的代码。我也不确定我是否使用VB6或VB.Net

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Part As Integer, Job As Integer, Emp As Integer, Weight As Integer, Oven As Integer

        Part = TextBox1.Text
        Job = TextBox2.Text
        Emp = TextBox3.Text
        Weight = TextBox4.Text
        Oven = TextBox5.Text

        Update()
    End Sub

    Sub Update()
        Using cnn = New OleDBConnection (Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;
Persist Security, Info=False;)
            cnn.Open()
            Dim StrSql = "SELECT * FROM Foam WHERE FoamID = ?"
            Using cmd = New OleDbCommand(StrSql, cnn)
                cmd.Parameters.AddWithValue("@p1", )
                Using reader = cmd.ExecuteReader()
                    If Not reader.HasRows Then
                        reader.Close() ' close because the connection cannot serve a command while reader is open

                        ' no match found; add new record .....USING PARAMETERS.....
                        StrSql = "INSERT INTO Foam VALUES(?,?,?,?,?,?,?,?)"
                        Using insCmd = New OleDbCommand(SqSql, cnn)
                            cmd.Parameters.AddWithValue("@p1", ID)
                            cmd.Parameters.AddWithValue("@p2", Part)
                            cmd.Parameters.AddWithValue("@p3", Job)
                            cmd.Parameters.AddWithValue("@p4", Emp)
                            cmd.Parameters.AddWithValue("@p5", Weight)
                            cmd.Parameters.AddWithValue("@p6", Oven)
                            cmd.ExecuteNonQuery()
                        End Using
                    Else
                        reader.Close()

                    End If
                End Using
            End Using
        End Using
    End Sub
End Class

这是我更新的代码;我无法使新的OleDB Connection工作。我认为我的连接字符串没问题。这应该可以更好地了解我想要实现的目标。

1 个答案:

答案 0 :(得分:1)

可能的答案,但太多细节不够明确。

首先需要连接字符串,然后需要创建检查记录是否存在的命令,如果没有找到用于插入值的新命令。 当你找到记录时你想要做的事情还不够清楚。

Sub Update()
    Using cnn = New OleDbConnection(....a connection string is needed here ....)
        cnn.Open()
        Dim StrSql = "SELECT * FROM Foam WHERE FoamID = ?"
        Using cmd = new OleDbCommand(StrSql, cnn) 
          cmd.Parameters.AddWithValue("@p1", F1)
          Using reader = cmd.ExecuteReader()
            if Not reader.HasRows
                reader.Close() ' close because the connection cannot serve a command while reader is open

                ' no match found; add new record .....USING PARAMETERS.....
                StrSql = "INSERT INTO Foam VALUES(?,?,?,?,?,?,?,?)"
                Using insCmd = new OleDbCommand(SqSql, cnn)
                     cmd.Parameters.AddWithValue("@p1", F1)
                     cmd.Parameters.AddWithValue("@p2", F2)
                     cmd.Parameters.AddWithValue("@p3", F3)
                     cmd.Parameters.AddWithValue("@p4", F4)
                     cmd.Parameters.AddWithValue("@p5", F5)
                     cmd.Parameters.AddWithValue("@p6", F6)
                     cmd.Parameters.AddWithValue("@p7", DateTime.Today)
                     cmd.Parameters.AddWithValue("@p8", BnWeight)
                     cmd.ExecuteNonQuery()
                End Using
            Else
                reader.Close()
                ' matching record found; update it
                ?????? 
            End If
         End Using
      End Using
    End Using
End Sub

我建议在ADO.NET walkthrough上搜索MSDN,因为数据访问代码与VB6和VBA中使用的ADO模型有很大不同