Когда пользователь обновляет статус отдельного дела, это изменение должно быть отмечено во всех случаях под номером счета.В VB я пытаюсь использовать следующий SQL для обновления таблицы информацией, которую пользователь ввел в форму.
DoCmd.RunSQL "UPDATE [Main Details] " & _
"SET [Main Details].[Status] = '" & Status & "' " & _
"AND [Main Details].[On Hold] = '" & On Hold & "' " & _
"WHERE [Main Details].[Account] = '" & Account & "';"
Однако, я получаю ошибку компиляции, и я подозреваю, что эточто-то делать с «на удержании».Как я могу это исправить?Любая помощь с этим будет принята с благодарностью.
Для контекста, я смотрю на поле со списком «ReportSelection» в форме «Основные сведения».В процедуре события «После обновления» есть следующий код:
Private Sub
ReportSelection_AfterUpdate()
If ReportSelection = "Enforcement Letter" Or ReportSelection = "Fees
Letter" Or ReportSelection = "Follow
On Letter" Or ReportSelection =
"Reminder Letter BO" Or
ReportSelection = "Reminder Letter CR"
Or ReportSelection = "Reminder Letter
CT" Or ReportSelection = "Reminder
Letter NNDR" Or ReportSelection =
"Reminder Letter RTD" Or
ReportSelection = "Reminder Letter SD"
Then
CmbStatus = "HOLD Until"
[On Hold] = Date + 5
End If
DoCmd.RunSQL "UPDATE [Main Details] " & _
"SET [Main Details].[Status] = '" & Status & "' " & _
"AND [Main Details].[On Hold] = '" & On Hold & "' " & _
"WHERE [Main Details].[Account] = '" & Account &
"';"
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
Select Case Me!ReportSelection
Case "Write Email"
DoCmd.OpenForm "CaseEmail", acNormal, , , acFormEdit,
acWindowNormal
Exit Sub
Case "Arrangement Letter"
Set dbs = CurrentDb
DoCmd.RunSQL "SELECT * FROM [Arrangements] " & _
"WHERE [Client] = '" & Me!Client & "' " & _
"AND [Account] = '" & Me!Account & "' " & _
"AND [Status] = 'Made';"
Set rst = dbs.OpenRecordset(SQL)
On Error GoTo ArrangementNotFound
rst.MoveFirst
' rst!PaymentCode
rst.Close
Set dbs = Nothing
GoTo RunReport
ArrangementNotFound:
rst.Close
Set dbs = Nothing
MsgBox "No arrangement has been made for this account"
Exit Sub
Case "Reminder Letter", _
"Reminder Letter BO", _
"Reminder Letter CR", _
"Reminder Letter CT", _
"Reminder Letter NNDR", _
"Reminder Letter RTD", _
"Reminder Letter SD", _
"Enforcement Letter", "Commital Letter"
If [Status] = "HOLD" Then
MsgBox "Order is on HOLD", vbExclamation
Exit Sub
End If
If Me![Bailiff Name] <> "" Then
MsgBox "Order is with " & Me![Bailiff Name], vbExclamation
Exit Sub
End If
If [First Letter] <> 0 Then
GoTo RunReport
Else
MsgBox "Order has not yet been 1st Noticed", vbExclamation
Exit Sub
End If
End Select
RunReport:
Select Case Me!ReportSelection
Case "Details - Account", "Nulla Bona - All Cases", "Arrangement
Letter"
WhereCondition = "[Client]='" & Me!Client & "' AND [Account]='" &
Me!Account & "'"
Case Else
WhereCondition = "[Reference]=" & Forms![Main
Details]!Reference
End Select
On Error GoTo InvalidReport
DoCmd.OpenReport Me![ReportSelection], acViewPreview, ,
WhereCondition, acWindowNormal
Select Case Me!ReportSelection
Case "Council Tax Seizure"
'*** DO NOTHING ***
Case "Details"
If Me!Return Then
Sleep 1000
SendKeys "%(fp)v{ENTER}Z:\Returns\" & Me!Client
& "\" & Trim(Me!Account) & "_" &
Trim(Me!Summons) & ".pdf{ENTER}", True
Sleep 500
DoCmd.Close acReport, Me!ReportSelection, acSaveNo
End If
Case "Details - Account"
If Me!Return Then
Sleep 1000
SendKeys "%(fp)v{ENTER}Z:\Returns\" & Me!Client
& "\" & Trim(Me!Account) &
".pdf{ENTER}", True
Sleep 500
DoCmd.Close acReport, Me!ReportSelection, acSaveNo
End If
Case "Nulla Bona"
If Me!Return Then
Sleep 1000
SendKeys "%(fp)v{ENTER}Z:\Returns\" & Me!Client
& "\" & Trim(Me!Account) & "_" &
Trim(Me!Summons) & "NB.pdf{ENTER}",
True
Sleep 500
DoCmd.Close acReport, Me!ReportSelection, acSaveNo
End If
DoCmd.OpenReport "Details", acViewPreview, , "[Reference]=" &
Forms![Main Details]!Reference,
acWindowNormal
If Me!Return Then
Sleep 1000
SendKeys "%(fp)v{ENTER}Z:\Returns\" & Me!Client
& "\" & Trim(Me!Account) & "_" &
Trim(Me!Summons) & ".pdf{ENTER}", True
Sleep 500
DoCmd.Close acReport, "Details", acSaveNo
End If
Case "Nulla Bona - All Cases"
If Me!Return Then
Sleep 1000
SendKeys "%(fp)v{ENTER}Z:\Returns\" & Me!Client
& "\" & Trim(Me!Account) &
"NB.pdf{ENTER}", True
Sleep 500
DoCmd.Close acReport, Me!ReportSelection, acSaveNo
End If
DoCmd.OpenReport "Details - Account", acViewPreview, ,
"[Client]='" & Me!Client & "' AND
[Account]='" & Me!Account & "'",
acWindowNormal
If Me!Return Then
Sleep 1000
SendKeys "%(fp)v{ENTER}Z:\Returns\" & Me!Client
& "\" & Trim(Me!Account) &
".pdf{ENTER}", True
Sleep 500
DoCmd.Close acReport, "Details - Account", acSaveNo
End If
Case Else
'------------------------------------------+
' STAMP EACH CASE WITH TYPE OF LETTER SENT |
'------------------------------------------+
Set con = Application.CurrentProject.Connection
SQL = "INSERT INTO [Free Type] ( Reference, [Text], Username ) " & _
"SELECT DISTINCTROW Reference, '" & _
ReportSelection & " Sent', '" & _
[Forms]![Current User]![Initials] & "' " & _
"FROM [Main Details] " & _
"WHERE Client = '" & [Forms]![Main Details]![Client] & "' "
& _
"AND Account = '" & [Forms]![Main Details]![Account] &
"';"
con.Execute SQL
End Select
Exit Sub
InvalidReport:
MsgBox "This report is currently unavailable, please try again later."
End Sub
Также стоит упомянуть, что подобный фрагмент кода работает для другого поля со списком, без каких-либо соответствующих объявлений вкод.
Прошу прощения за то, что не предоставил много контекста раньше, это мой первый опыт в VB, SQL и Access.