如何以ms访问形式将mysql中数据库中的数据或表显示为可编辑? (像列表框一样可编辑)

Posted

技术标签:

【中文标题】如何以ms访问形式将mysql中数据库中的数据或表显示为可编辑? (像列表框一样可编辑)【英文标题】:How to display the data or table in database in mysql as editable in ms access form? (Like List box as editable ) 【发布时间】:2019-09-30 07:48:05 【问题描述】:

我使用 Ms-Access 作为前端,使用 mysql 作为后端。 我从 mysql i 列表框中显示数据,我需要编辑列表框本身的数据。

有没有其他方法可以编辑数据。

我尝试了几种我找不到的方法。

提前致谢。

需要你的帮助。

列表中的表单附加了我在列表视图中显示的图像

    Option Compare Database
    Option Explicit
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim cmdtext As New ADODB.Command

Private Sub cmd_extract_Click()
Dim strfield As String
Dim strextract As String
Dim intItemsInList As Integer
Dim intCounter As Integer
Dim intRow As Integer
Dim intCol As Integer
intItemsInList = Me![lstbox].ListCount
For intCounter = 0 To intItemsInList - 1
  Me![lstbox].RemoveItem 0
Next

strfield = Me.cmb1
If strfield = "ALL" Then
strextract = "SELECT *FROM emp_details JOIN dept_details ON emp_details.E_Dept = dept_details.D_Name ORDER BY Emp_Id  ASC;"
Set cmdtext.ActiveConnection = cn
cmdtext.CommandType = adCmdText
cmdtext.CommandText = strextract
Set rs = cmdtext.Execute
Me.lstbox.AddItem ("EMP-ID" & ";" & "EMP-NAME" & ";" & "EMP-DEPT" & ";" & "EMP-SALARY" & ";" & "DEPT_ID" & ";" & "DEPT_NAME" & ";" & "DEPT_HEAD")
If (rs.RecordCount <> 0) Then
Do While Not rs.EOF
With Me.lstbox
.AddItem (rs.Fields(0) & ";" & rs.Fields(1) & ";" & rs.Fields(2) & ";" & rs.Fields(3) & ";" & rs.Fields(4) & ";" & rs.Fields(5) & ";" & rs.Fields(6))
.ColumnHeads = True
rs.MoveNext
End With
Loop
End If
Else
strextract = "SELECT * FROM emp_details JOIN dept_details ON emp_details.E_Dept = dept_details.D_Name WHERE dept_details.D_Name = '" & strfield & "';"
Set cmdtext.ActiveConnection = cn
cmdtext.CommandType = adCmdText
cmdtext.CommandText = strextract
Set rs = cmdtext.Execute
'Me.lstbox.RowSourceType = "Value List"
Me.lstbox.AddItem ("EMP-ID" & ";" & "EMP-NAME" & ";" & "EMP-DEPT" & ";" & "EMP-SALARY" & ";" & "DEPT_ID" & ";" & "DEPT_NAME" & ";" & "DEPT_HEAD")
If (rs.RecordCount <> 0) Then
Do While Not rs.EOF
With Me.lstbox
.AddItem (rs.Fields(0) & ";" & rs.Fields(1) & ";" & rs.Fields(2) & ";" & rs.Fields(3) & ";" & rs.Fields(4) & ";" & rs.Fields(5) & ";" & rs.Fields(6))
.ColumnHeads = True
rs.MoveNext
End With
Loop
End If
End If
End Sub

Public Sub Form_Load()
Dim cnnstring As String
cnnstring = "Driver=MySQL ODBC 8.0 UNICODE Driver;Server=localhost;Database=My_Project2;Uid=root;Pwd=password;"
If cn.State = 0 Then
cn.Open cnnstring
End If
Dim cquery As String
cquery = "SELECT * FROM dept_details;"
'FULL OUTER JOIN dept_details ON emp_details.E-Dept = dept_details.D_NAME

With rs
Set .ActiveConnection = cn
.Source = cquery
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open
End With
rs.MoveFirst

With Me.cmb1
.AddItem "ALL"
Do
cmb1.AddItem rs!D_Name
rs.MoveNext
Loop Until rs.EOF
End With
rs.Close
End Sub


Private Sub Form_Open(Cancel As Integer)
Dim cnnstring As String
cnnstring = "Driver=MySQL ODBC 8.0 UNICODE Driver;Server=localhost;Database=My_Project2;Uid=root;Pwd=password;"
cn.Open cnnstring
Dim cquery As String
cquery = "SELECT * FROM dept_details;"
'FULL OUTER JOIN dept_details ON emp_details.E-Dept = dept_details.D_NAME

With rs
Set .ActiveConnection = cn
.Source = cquery
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open
End With
rs.MoveFirst

With Me.cmb1
.AddItem "ALL"
Do
cmb1.AddItem rs!D_Name
rs.MoveNext
Loop Until rs.EOF
End With
rs.Close
End Sub


Private Sub lstbox_DblClick(Cancel As Integer)
'If cn.State = 1 Then
'cn.Close
'End If

Dim listid As Long
listid = Me.lstbox.Value
DoCmd.Close acForm, "Form_Form3"
DoCmd.OpenForm "Form4", OpenArgs:=listid
End Sub

【问题讨论】:

后端如何“连接”您检索表单打开/事件上的数据还是链接?你尝试了哪些方法,你能总结一下吗? 后端使用 adodb 数据库和 odbc 驱动器连接。在表单的打开事件中检索数据 【参考方案1】:

列表框用于列出数据,而不是编辑数据。

要以类似的方式查看数据并选择编辑这些数据,请使用 DatasheetView 中的表单。

将其作为子表单放置在您的主表单中。

【讨论】:

只有在数据表视图中我可以编辑唯一的一列 empid,这不是我认为编辑和保存数据的可取方式。 除了列表框和数据表视图还有其他方法吗? 我不关注。如果用作源的记录集是可更新的,那么表单也是可更新的。当然,不能编辑自动编号等只读字段。 没有自动编号字段,记录集只能更新 代码很多。它似乎填满了列表框和组合框。如前所述,此类控件是只读的。

以上是关于如何以ms访问形式将mysql中数据库中的数据或表显示为可编辑? (像列表框一样可编辑)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MySQl 的 ODBC 连接器在 MS Access 中的 VBA 中执行和查询?

如何使用 MYSQL 查询访问 Ms-Access 数据库

如何将参数传递给 ms 访问以取回数据

通过 vba ms 访问将多值列的数据绑定到组合框中

如何复制MySQL数据库或表到另外一台服务器

如何将数据从 Ms 访问迁移到 Derby 数据库或如何将数据从 My sql 迁移到 Derby 数据库