通过更改文本框更新表

时间:2019-07-02 15:15:07

标签: access-vba

我有一张车辆信息表(每辆车5个字段),每人可容纳多辆车。我将所有5个字段和所有车辆都放入多维数组,并根据车辆号(即vic1,vic2 ...)填充文本框。如果任何车辆信息有变化,我需要更新表格。每个车辆都有一个不同的文本框。我不确定如何进行更改(添加/删除/更新)并将其重新加载到表中。

Private Sub cmdDone_Click()
  strMake1 = VicArray(0, 0)
  strModel1 = VicArray(0, 1)
  strYear1 = VicArray(0, 2)
  strColor1 = VicArray(0, 1)
  strPlate1 = VicArray(0, 1)

  strMake2 = VicArray(1, 0)
  strModel2 = VicArray(1, 1)
  strYear2 = VicArray(1, 2)
  strColor2 = VicArray(1, 3)
  strPlate2 = VicArray(1, 4)
.
.
.
  strMake6 = VicArray(5, 0)
  strModel6 = VicArray(5, 1)
  strYear6 = VicArray(5, 2)
  strColor6 = VicArray(5, 3)
  strPlate6 = VicArray(5, 4)

strUpdate = "Update VehicleInfo SET " & _
"Vic1License = '" & strPlate1 & "',Vic1Make = '" & strMake1 & "', Vic1Model = '" & strModel1 & "', Vic1Year = '" & strYear1 & "', Vic1Color = '" & strColor1 & " Handicapped= " & strhandicap & "'," & _
"Vic2License = '" & strPlate2 & "',Vic2Make = '" & strMake2 & "', Vic2Model = '" & strModel2 & "', Vic2Year = '" & strYear2 & "', Vic2Color = '" & strColor2 & "'," & _
"Vic3License = '" & strPlate3 & "',Vic3Make = '" & strMake3 & "', Vic3Model = '" & strModel3 & "', Vic3Year = '" & strYear3 & "', Vic3Color = '" & strColor3 & "'," & _
"Vic4License = '" & strPlate4 & "',Vic4Make = '" & strMake4 & "', Vic4Model = '" & strModel4 & "', Vic4Year = '" & strYear4 & "', Vic4Color = '" & strColor4 & "'," & _
"Vic5License = '" & strPlate5 & "',Vic5Make = '" & strMake5 & "', Vic5Model = '" & strModel5 & "', Vic5Year = '" & strYear5 & "', Vic5Color = '" & strColor5 & "'," & _
"Vic6License = '" & strPlate6 & "',Vic6Make = '" & strMake6 & "', Vic6Model = '" & strModel6 & "', Vic6Year = '" & strYear6 & "', Vic6Color = '" & strColor6 & "'," & _
" WHERE ( LastName= '" & TxtLast & "', AND FirstName= '" & txtFirst & "')"

DoCmd.RunSQL strUpdate

2 个答案:

答案 0 :(得分:1)

我认为您正在尝试手动执行Access可以为您自动完成的工作。

我建议将表单的记录源设置为表VehicleInfo。然后,将每个控件的控件源设置到该表的字段。

尝试这篇文章,它应该为您提供更有效地使用Access的良好入门。

https://support.office.com/en-us/article/introduction-to-forms-e8d47343-c937-44e8-a80f-b6a83a1fa3ae

我认为您应该将VehicleInfo表单过滤为从第一个表单中选择的名称。第一种形式可能是这样的:

public sub btn_Click()
    DoCmd.OpenForm "VehicleInfoForm", , , "Name = '" & selectedName & "'"
end sub

然后,车辆信息表单将显示该用户的信息。每当他们对文本框进行更改时,在关闭表单时都将保存该文本框。假设它们绑定正确。

答案 1 :(得分:0)

我实际上是用一个定界变量将其拆分,然后将其加载到另一个数组中。

SplitArray1 = Split(txtVic1.Value, ",")
strMake1 = SplitArray1(0)
strModel1 = SplitArray1(1)
strYear1 = SplitArray1(2)
strColor1 = SplitArray1(3)
strPlate1 = SplitArray1(4)
.
.
.