您好我正在尝试使用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工作。我认为我的连接字符串没问题。这应该可以更好地了解我想要实现的目标。
答案 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模型有很大不同