Обновление таблицы с изменениями в текстовом поле - PullRequest
0 голосов
/ 02 июля 2019

У меня есть таблица информации об автомобиле (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 ]

1 голос
/ 02 июля 2019

Я думаю, что вы пытаетесь сделать вручную то, что 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

А затем форма информации о транспортном средстве будет отображать информацию для этого пользователя.Всякий раз, когда они вносят изменения в текстовые поля, они сохраняются при закрытии формы.Предполагая, что все связано правильно.

0 голосов
/ 03 июля 2019

Я на самом деле разделил его по переменной-разделителю и загрузил в другой массив.

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