У меня есть 31 текстовых полей, которые получают заселенные с ADO из таблицы календаря в соответствии с функциями, указанными ниже:UPDATE с ADO в Access VBA массив
Private Function FillDates()
Dim cnn As ADODB.Connection
Dim ssql As String
Dim rst As ADODB.Recordset
Set cnn = CurrentProject.Connection
Dim i As Integer
Dim Records As Integer
ssql = "SELECT RoomAvailabilityId, Availability FROM RoomAvailability WHERE Month(AvailabilityDate)=Month(Now()) AND RoomTypesId=1"
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.Open ssql, cnn
Records = rst.RecordCount
For i = 1 To Records
Me("idtext" & i).Value = rst.Fields!RoomAvailabilityId
Me("Text" & i).Value = rst.Fields!Availability
rst.MoveNext
Next i
rst.Close
Set rst = Nothing
End Function
Это упрощенная версия фактического кода. Фактический код скрывает текстовые поля, когда месяц составляет 30 дней или 29/28 дней.
Итак, у меня есть 2 значения, которые теперь хранятся в моей сетке, состоящей из вышеуказанных текстовых полей.
Теперь я хочу обновить поле таблицы «Доступность» (Number - Long Integer Datatype) нажатием кнопки, и я не могу коснуться базы с этим.
Не могли бы вы предложить, как? Это мой начинает не рабочий код:
Private Sub cmdUpdatetxt_Click()
Dim cn As ADODB.Connection '* Connection String
Dim oCm As ADODB.Command '* Command Object
Dim iRecAffected As Integer
Set cn = CurrentProject.Connection
Dim i As Integer
For i = 1 To 31
AvailableRooms = Me("txt" & i).Value
AvailableRoomsId = Me("idtext" & i).Value
Next i
Set oCm = New ADODB.Command
oCm.ActiveConnection = cn
oCm.CommandText = "Update RoomAvailability Set Availability ='" & AvailableRooms & "' WHERE RoomAvailabilityId = '" & AvailableRoomsId & "' AND Month(RoomAvailability.AvailabilityDate) = '" & cboMonthYear.Value & "' "
oCm.Execute iRecAffected
If iRecAffected = 0 Then
MsgBox "Nessun Utente Inserito"
End If
If cn.State <> adStateClosed Then
cn.Close
If Not oCm Is Nothing Then Set oCm = Nothing
If Not cn Is Nothing Then Set cn = Nothing
End If
End Sub
Большое спасибо заранее
Вам нужен ваш SQL в следующем цикле, для начала, это будет выполнять инструкцию 31 раз, или вы можете построить SQL с 31 текстовым полем. Из того, что я могу собрать, вам нужно «update RoomAvailability set availabilty =» & AvailableRooms & «where .........» & AvailableRoomsId, то, что у вас есть, будет только поле № 31. –
Спасибо, Натан_Сав, ты спас мой день. оно работает. Я сделаю ответ, чтобы поделиться кодом. спасибо – Kurt