У меня есть случай, когда я пытаюсь извлечь значение состояния из поля описания. Однако мне нужно изменить некоторые столбцы в зависимости от состояния. Итак, вот что у меня есть
Описание Пример: Управление EXECUTIVE CTJACKSONVILLE.FL.32216-4041
Function getState(description As String) As String
Dim s() As String
s = Split(description, ".")
getState = s(UBound(s) - 1)
End Function
Я хочу изменить некоторые столбцы в зависимости от того, возвращает ли он правильное сокращение состояния или нет. Если значение не возвращает действительное состояние, я хочу отметить счет. Так что-то вроде этого ...
UPDATE tblInvoices
SET [Invoice Flag] = True
Where getState(description) <> ValidStates.Abbreviation
Что-то в этом роде. Извините за новичок. Любая помощь приветствуется!
1 ответ
Я бы создал функцию под названием isValidState()
, которая возвращает логическое значение
Function isValidState(st As String) As Boolean
Select Case st
Case "AL", "FL", "NY" ...
isValidState = True
Case Else
isValidState = False
End Select
End Function
Другой способ - создать таблицу со всеми кодами состояний (назовем ее MyStateTable
)
Function isValidState(st As String) As Boolean
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("MyStateTable")
rs.FindFirst ("StateFieldName = '" & st & "'")
If rs.NoMatch Then
isValidState = False
Else
isValidState = True
End If
rs.Close
End Function
Ваш запрос будет выглядеть примерно так
UPDATE tblInvoices
SET [Invoice Flag] = True
Where isValidState(getState(description)) = True
Редактировать:
Function getState(description As String) As String
Dim s() As String
s = Split(description, ".")
If (UBound(s) > 1) then
getState = s(UBound(s) - 1)
Else
getState = vbNullString 'Or change this to "" or something else that makes sense for your usage'
End if
End Function
Похожие вопросы
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.
True
иWHERE
. Хороший способ проверить свои строки SQL - это установить точку останова на строке кода, которую вы хотите проверить, а затем в окне немедленного выполнения (Ctrl + G) вы можете ввести?<your expression
и увидеть результат. Например.?1+1
вернет2
, поэтому в вашем случае SQL у вас будет что-то вроде `?" UPDATE ....... "&" ... "и т. Д.Set rs = db.OpenRecordset("MyStateTable",dbOpenSnapshot)
, а если это не сработает, попробуйтеSet rs = db.OpenRecordset("MyStateTable", dbOpenDynaset)