Light-electric.com

IT Журнал
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba access dlookup

Это интересно

Страницы

Ярлыки

воскресенье, 22 июня 2014 г.

DlookUP Access

Указание числового критерия:

Чтобы найти фамилию сотрудника с кодом 7, укажите критерий, ограничивающий диапазон значений:
=DLookup(«[LastName]», «Employees», «[EmployeeID] = 7»)

Указание числового критерия из поля формы:

Если вы не хотите указать конкретное значение в выражении (как в предыдущем примере), используйте параметр в критерии.
=DLookup(«[LastName]», «Employees», _
«[EmployeeID] = Form![EmployeeID]»)

=DLookup(«[LastName]», «Employees», _
«[EmployeeID] = » & [EmployeeID])

=DLookup(«[LastName]», «Employees», _
«[EmployeeID] = » & Forms![Orders]![EmployeeID])

Эти три примера возвращают одинаковые результаты.

В первом примере формы!
«[EmployeeID] = [EmployeeID]»

вычисляется как:
«1 = 1»

и поэтому будет первой записью, соответствующей критерию.

Критерий в двух примерах выполняются путем сцепления двух строковых выражений с
амперсанда (&).

При вычислении критерия первой и присоединенных или сцепленные вычисляются отдельные
части критерия, а затем вычисляется все выражение.

Если текущее значение поля EmployeeID формы Orders равно 7, исходное выражение
критерия
«[EmployeeID] = » & [EmployeeID]

будет вычисляться как
«[EmployeeID] = » & 7

что после объединения дает для:
«[EmployeeID] = 7»

Если не указать ссылку полной формы (как во втором примере), Microsoft Access
предполагает, что вы ссылаетесь на текущую форму.

Следующий пример является производным от третьего примера:
=DLookup(«[LastName]», «Employees», _
«[EmployeeID] = Forms![Orders]![EmployeeID]»)

В этом примере ссылки на формы полностью заключен внутри кавычек критерия.

Если поле Чтобы автоматически обновлять при изменении критерия, сделайте критерий
переменной с помощью способ объединения частей выражения, как описано ранее.
Обратите внимание, что при переходе к новой записи DLookup() текстовые поля, которые
обновляются автоматически будет иметь # Ошибка в них, то, что вводится в поле
EmployeeID поле.

Указание текстового критерия:

Приведенные выше примеры демонстрируют использование функции DLookup() с числовым
критерием.
=DLookup(«[Title]», «Employees», «[LastName] = ‘Callahan'»)

Обратите внимание, что можно использовать двойные кавычки, а не одинарные
кавычки, хотя одинарных кавычек является более предпочтительным.
=DLookup(«[Title]», «Employees», «[LastName] = «»Callahan»»»)

Указание текстового критерия из поля формы:

Следующем примере показано, как найти название контракта для клиента в форме
Orders. Поле CustomerID является текстовым полем критерия, поэтому DLookup()
инструкции:
=DLookup(«[ContactName]», «[Customers]», _
«[CustomerID]='» & [CustomerID] & «‘»)

–ИЛИ-
=DLookup(«[ContactName]», «[Customers]», _
«[CustomerID]='» & Forms![Orders]![CustomerID] & «‘»)

Во втором примере критерий создается путем объединения трех строковых выражений.
Во-первых, «[CustomerID] = ‘», вторым – значение, содержащееся в поле CustomerID,
а третий — закрывающей одиночной кавычки заключены в двойные кавычки.

При вычислении этого критерия сначала вычисляются отдельные части и их результаты
складываются или объединяются. Затем вычисляется все выражение.

Если текущее значение выбранного в поле со списком CustomerID в форме Заказы
Alfreds Futterkiste, присоединенный столбец для поля со списком возвращает ALFKI как
CustomerID. Исходное выражение критерия
«[CustomerID] = ‘» & [CustomerID] & «‘»

вычисляется как
«[CustomerID] = ‘» & «ALFKI» & «‘»

что после объединения дает
«[CustomerID] = ‘ALFKI'»

Указание даты:

Если поля критерия содержат значения даты или времени, заключите значение даты
или времени в знаки номера (#). Чтобы найти сотрудника, день рождения которого
приходится на определенную дату, воспользуйтесь следующим примером:
=DLookup(«[LastName]», «Employees», «[BirthDate] = #12-08-68#»)

Указание нескольких полей в критерии:

Выражение условия может быть любой допустимый предложение SQL WHERE (без
ключевого слова ГДЕ). Это означает, что можно использовать более одного поля для
указания критерия для функции DLookup() .

Чтобы найти код заказа один из заказов, проданных сотрудником «Андрей Фокин» с
EmployeeID 2 (числовой) для клиента «Simons bistro» с CustomerID из SIMOB (текст),
используйте следующую инструкцию DLookup() образца:
=DLookup(«[OrderID]», «Orders», _
«[CustomerID] = ‘SIMOB’ And [EmployeeID] = 2»)

Этот оператор возвращает значение OrderID 10556, который является значением первого поля OrderID, соответствующего заданному критерию. OrderID 10669 также соответствует критериям.
Приведенный выше пример использует жестко запрограммированные или специальные значения CustomerID и EmployeeID. Чтобы использовать переменные вместо специфических значений критерия, можно использовать для объединения нескольких строковых выражений Visual Basic для приложений. Этот метод демонстрируется в следующем примере Visual Basic:
Sub subTest
‘Declare the variables.
Dim CustID As String
Dim EmpID As Long
Dim Result

‘Assign values to the variables to be used in the criteria.
CustID = «SIMOB»
EmpID = 2
Result = DLookup(«[OrderID]», «Orders», _
«[CustomerID] = ‘» & CustID & «‘ And [EmployeeID] = » & EmpID)

MsgBox Result
End Sub
Если функция DLookup() завершается неудачно, результат переменная содержит значение Null.
Обратите внимание, что критерий состоит из четырех частей, которые оцениваются по отдельности. Результаты добавляются и оцениваются в целом. Исходное выражение критерия: «[CustomerID] = ‘» & CustID & «‘ And [EmployeeID] = » & EmpID

вычисляется как
«[CustomerID] = ‘» & «SIMOB» & «‘ And [EmployeeID] = » & 2

что после объединения дает
«[CustomerID] = ‘SIMOB’ And [EmployeeID] = 2»

Следующий пример можно использовать для нахождения сотрудника, день рождения которого
совпадает с текущей датой:
=DLookup(«[LastName]», «Employees», _
«Month([BirthDate]) = » & Month(Date) & » And Day([BirthDate]) _
= » & Day(Date))

Если текущая дата — 2/12/2001, исходное выражение критерия
«Month([BirthDate]) = » & Month(Date) & » And Day([BirthDate]) = » _
& Day(Date)

вычисляется как
«Month([BirthDate]) = » & 12 & » And Day([BirthDate]) = » & 2

что после объединения дает
«Month([BirthDate]) = 12 And Day([BirthDate]) = 2»

VBA example — Microsoft Access tutorial: Dlookup

VBA Dlookup

In this example, you will learn VBA DLookup Fucntion to find the User Name and Password from User Account table(TblUserAccount). The syntax of DLookup Function is:

Expression = DLookup(Expr,Domain,[Criteria])

-Expression: A variable that has data type as Variant.

-Expr: A field of a table or query(String data type) that you want to find.

-Domain: A table or query name or it can be an SQL statement that contains the field you want DLookup function to return. The Domain has data type as string.

Читать еще:  Access vba filedialog

-Criteria: The argument is optional. It represents the conditional string used to filter information. It is like the WHERE clause of an SQL statement, but in here the word WHERE is not used.

The example illustrates the Log In form that has three Labels(Log In, msg1,msg2), a Line(Line7), two Text Boxes(User Name and Password), three Command Buttons(Sign In, Close and Create New Account) as the figure below:

-When the form loads, the two labels(msg1,msg2) is disable(See Log In form above) and the cursor is set focus in User Name text.

-If you not enter or enter the wrong user name and click Sign In command button, the message will appear. See the figure below:

-If you do not enter or enter the wrong password and click Sign In command button, the message will appear. See the figure below:

-After you enter the user name and password correctly and click the Sign In command button, one message box will display like the figure below:

-Click Ok, then the Taxation form will appear.

-The Log In form does not have the upper right close button because the form border style is set to none. If you want to close this form, click Close command button.

-If you want or need to create a new user account, click Create New Account command button. The User Account form will appear.

To have the Log In form as the figure above, you have to create the form in Form Design. See the figure below:

-Drag and drop three Labels, a Line, two Text Boxes, and three Command Button to the form.

-Set Name properties to two Text Boxes:

Text Boxes:

Name: txtUserName

Name: txtPwd

-Set Name and Caption properties to a Label and three Command Buttons

Labels:

Name: lblLogIn

Caption: LogIn

Name: lblmsg1

Caption: a

Name: lblmsg2

Caption: a

Command Buttons:

Name: CmdSignIn

Caption: SignIn

Name: CmdClose

Caption: Close

Name: CmdCreateNewAccount

Caption: Create New Account

BackStyle: Transparency

Then apply the VBA Code below:

Option Compare Database

Private Sub Form_Load()

Function CheckUserName(UserName As String) As Boolean

Dim Rst As Variant

Rst = DLookup(«UserName», «TblUserAccount», «UserName='» & txtUserName & «‘»)

If IsNull(Rst) Then

Function CheckPassword(Password As String) As Boolean

Dim Rst As Variant

Rst = DLookup(«Password», «TblUserAccount», «Password='» & txtPwd & «‘»)

If IsNull(Rst) Then

Private Sub CmdSignIn_Click()

‘ Check user name and password if not create

If CheckUserName(txtUserName) = True Then

lblmsg1.Caption = «Invalid User Name, Try the other.»

ElseIf CheckPassword(txtPwd) = True Then

lblmsg2.Caption = «Invalid Password, Try the other.»

‘ Display a message then open a new form

MsgBox «Log in succeed!», vbInformation

DoCmd.OpenForm «frmTaxation», acNormal

Private Sub CmdClose_Click()

DoCmd.Close ‘ Close form

Private Sub CmdCreateNewAccount_Click()

‘ Open form in form view mode

DoCmd.OpenForm «frmUserAccount», acNormal

Private Sub Form_Timer()

‘ Generate random fore color of label

lblLogIn.ForeColor = QBColor(15 * Rnd)

Note: To create the Taxation and User Account forms visit:

Vba access dlookup

М етод Application. DLookup (Access)

С помощью функции DLookup можно получить значение определенного поля из указанного набора записей (домена).

Expression . DLookup ( Expr , domain , условия_отбора )

выражение : переменная, представляющая объект Application .

Обязательный или необязательный

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

Строковое выражение, определяющее набор записей, входящих в домен. Это может быть имя таблицы или имя запроса для запроса, для которого не требуется параметр.

Необязательное строковое выражение, используемое для ограничения диапазона данных, в котором выполняется функция DLookup . Например, критерии часто эквивалентны предложению WHERE в выражении SQL без слова WHERE. Если условие не задано, функция DLookup вычисляет выражение для всего домена. Любое поле, включенное в критерии , также должно быть полем в домене ; в противном случае функция DLookup возвращает значение NULL .

В озвращаемое значение

Функцию DLookup можно использовать для отображения значения поля, отсутствующего в источнике записей формы или отчета. Например, предположим, что у вас есть форма, основанная на таблице «сведения о заказе». В форме отображаются поля OrderID , ProductID , UnitPrice , Quantity и Скидка . Однако поле » Марка » находится в другой таблице, таблице «продукты». Вы можете использовать функцию DLookup в вычисляемом элементе управления, чтобы отобразить значение ProductName в той же форме.

Функция DLookup возвращает одно значение поля на основе информации, заданной в условиях . Несмотря на то, что условие является необязательным аргументом, если вы не указали значение для условия , функция DLookup возвращает случайное значение в домене.

Если ни одна из записей не удовлетворяет _условиям_или домен не содержит записей, функция DLookup возвращает значение NULL .

Если условию соответствует несколько полей __, функция DLookup возвращает первый экземпляр. Необходимо указать условия, которые гарантируют, что значение поля, возвращаемого функцией DLookup , будет уникальным. Возможно, вы захотите использовать значение первичного ключа для критериев, например, [EmployeeID] в следующем примере, чтобы функция DLookup возвращала уникальное значение:

Dim varX As Variant

varX = DLookup(«[LastName]», «Employees», «[EmployeeID] = 1»)

Независимо от того, используется ли функция DLookup в макросе или модуле, выражении запроса или вычисляемом элементе управления, необходимо тщательно сформировать аргумент условия , чтобы убедиться, что он будет оцениваться правильно.

Читать еще:  Access примеры кода

Функцию DLookup можно использовать для указания условий в строке условия запроса, в выражении вычисляемого поля в запросе или в строке Обновление в запросе на обновление.

Вы также можете использовать функцию DLookup в выражении в вычисляемом элементе управления в форме или отчете, если поле, которое требуется отобразить, не находится в источнике записей, на котором основана форма или отчет. Например, предположим, что у вас есть форма «сведения о заказе» на основе таблицы «сведения о заказе» с текстовым полем ProductID, которое отображает поле ProductID . Чтобы найти ProductName из таблицы Products на основе значения в текстовом поле, можно создать другое текстовое поле и присвоить его свойству ControlSource следующее выражение:

=DLookup(«[ProductName]», «Products», «[ProductID] =» _

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

В следующем примере возвращаются сведения о имени из поля CompanyName записи, удовлетворяющие условию . Домен — это таблица грузоотправителей. Аргумент условия_отбора разрешает результирующий набор записей для тех, для которых шипперид равняется 1.

Dim varX As Variant

varX = DLookup(«[CompanyName]», «Shippers», «[ShipperID] = 1»)

Следующий пример из таблицы грузоотправители использует элемент управления формы Шипперид для предоставления критериев функции DLookup . Обратите внимание, что ссылка на элемент управления не включается в кавычки, обозначающие строки. Это гарантирует, что при каждом вызове функции DLookup Microsoft Access будет получать текущее значение из элемента управления.

Dim varX As Variant

varX = DLookup(«[CompanyName]», «Shippers», «[ShipperID] = » _

В следующем примере используется переменная, intSearch чтобы получить значение.

Dim intSearch As Integer

Dim varX As Variant

varX = DLookup(«[CompanyName]», «Shippers», _

В приведенных ниже примерах показано, как использовать различные типы условий с помощью функции DLookup .

‘ Numerical values. Replace «number» with the number to use.

variable = DLookup(«[FieldName]», «TableName», «[Criteria] = number»)

‘ Numerical values. Replace «string» with the string to use.

variable = DLookup(«[FieldName]», «TableName», «[Criteria]= ‘string'»)

‘ Dates. Replace «date» with the string to use.

variable = DLookup(«[FieldName]», «TableName», «[Criteria]= #date#»)

‘ Referring to a control on a form

variable = DLookup(«[FieldName]», «TableName», «[Criteria] = » & Forms!FormName!ControlName)

variable = DLookup(«[FieldName]», «TableName», «[Criteria] = ‘» & Forms!FormName!ControlName & «‘»)

variable = DLookup(«[FieldName]», «TableName», «[Criteria] = #» & Forms!FormName!ControlName & «#»)

‘ Multiple types of criteria

variable = DLookup(«[FieldName]», «TableName», «[Criteria1] = » & Forms![FormName]![Control1] _

& » AND [Criteria2] = ‘» & Forms![FormName]![Control2] & «‘» _

& » AND [Criteria3] =#» & Forms![FormName]![Control3] & «#»)

‘ Use two fields from a single record.

variable = DLookup(«[LastName] & ‘, ‘ & [FirstName]», «tblPeople», «[PrimaryKey] = 7»)

variable = DLookup(«[Field1] + [Field2]», «tableName», «[PrimaryKey] = 7»)

variable = DLookup(«IIf([LastName] Like ‘Smith’, ‘True’, ‘False’)», «tableName», «[PrimaryKey] = 7»)

П оддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь .

Vba access dlookup

Функция DLookUp относится к так называемым Domain Aggregate Functions (примерно это можно перевести как агрегатные функции домена — доменом обычно является таблица или запрос). К числу этих функций, кроме функции DLookUp, принадлежат также функции, аналогичные вышеописанным статистическим функциям SQL (Sum, Count и т.д.). Названия этих функций соответствуют названиям статистических функций, но впереди названия присутствует буква D (DSum, DCount и т.д.). Функция DLookUp возвращает значение указанного поля домена (таблицы, запроса) из записи, удовлетворяющей заданному критерию. Если таких записей несколько, то указанное значение возвращается из первой встреченной записи, подходящей под заданный критерий. Она может использоваться, как и все остальные функции этого типа, для возвращения значения поля таблиц или запросов, не являющихся источником строк для запроса, формы или отчета, а также — в модуле или в макросе. В нашем примере функция DLookUp возвращает значения полей из таблицы Товары (Products), не включенной в запрос (не указанной в предложении FROM).

Синтаксис DLookUp при использовании в запросах следующий:

DLookUp(выражение, домен[, критерий]), где:

  • выражение (Expression): определяет наименование поля, значение которого необходимо вернуть. Это может быть строковое выражение, определяющее поле таблицы или запроса или выражение, выполняющее какие-либо вычисления с данными этого поля. В выражении можно использовать любые встроенные или определенные пользователем функции, за исключением других агрегатных функций домена (Domain Aggregate Functions) или статистических функций SQL.
  • домен (Domain): Строковое выражение, задающее набор записей, определяющий домен. Это может быть наименование таблицы или запроса.
  • критерий (Criteria): Необязательный параметр (на что указывают прямоугольные скобки). Критерий — это строковое (текстовое) выражение, которое используется для ограничения данных, обрабатываемых функцией DLookUp. Обычно является аналогом условий, задаваемых в предложении WHERE в SQL-операторе, однако без употребления ключевого слова WHERE. Поля, указываемые в критерии, должны принадлежать указанному в предыдущем параметре домену, иначе функция DLookUp вернет значение Null.

Функция DLookUp возвращает значение поля из таблицы или запроса, удовлетворяющее указанному критерию и в отличие от статистических функций SQL может применяться не только в запросах, но и в модулях, макросах, являться источником данных для элементов управления в формах и отчетах. Если критерий не указан, то будет возвращено значение указанного поля из случайной записи (из первой попавшейся). Если таблица или запрос не имеет записей или не содержит записей, удовлетворяющих критерий, то функция возвратит значение Null. Если критерий удовлетворяет более чем одна запись домена, то возвращено будет также значение поля из первой попавшейся записи, удовлетворяющей заданным условиям, поэтому при построении критерия нужно убедиться в том, что в любой ситуации вы получите то, что и ожидали получить. Чаще всего для этого используется критерий, содержащий первичный ключ (как в вышеприведенном примере). Функцию DLookUp можно использовать также и для указания условия в строке Условие отбора (Criteria) запроса.

Читать еще:  Access для начинающих

ПРИМЕЧАНИЕ Все вышесказанное в равной степени относится и к остальным агрегатным функциям домена. ПРИМЕЧАНИЕ Точно так же, как была использована встроенная функция DLookUp, могут быть использованы и другие встроенные функции Microsoft Access, а также функции, разработанные пользователем. Однако хотелось бы обратить внимание на то, что использование функций в запросе значительно замедляет его работу. Особенно это касается пользовательских функций. Поэтому желательно избегать использования каких-либо функций (кроме статистических функций SQL) при разработке запроса. Язык SQL, несмотря на свою предельную лаконичность, позволяет этого добиться в подавляющем большинстве случаев. Если же вы все же решились использовать в запросе свою собственную функцию, то она должна быть как можно проще. Избегайте использовать в таких функциях запросы. Хотя это и допускается, но приводит к невероятному замедлению работы запроса и к многократному увеличению объема исходного mdb-файла, содержащего базу данных. В моей практике был случай, когда использование такого запроса привело к увеличению файла базы данных от1.5 Мбайт до 22 Мбайт. (Другими словами, до запуска запроса файл базы данных занимал 1.5 Мбайт, а после окончания его работы — уже 22 Мбайт.) Запрос выполнялся больше часа и повторный его запуск привел к краху всей Microsoft Windows. Сама база данных после перезапуска была безвозвратно утеряна. Восстановив ее из копии и переделав запрос так, что в нем больше не использовалась ни одна внешняя функция, я добился того, что запрос выполнялся меньше минуты и база данных работала стабильно, почти не увеличиваясь в размерах. ПРИМЕЧАНИЕ Обратите внимание на то, что для разделения параметров функции DLookUp в бланке запроса используется точка с запятой, в то время как в строке оператора SQL и в программных модулях для тех же целей используется запятая. Кроме того, при использовании этой функции в программах Visual Basic ее имя нужно писать так: DLookup (а не DLookUp).

Microsoft Access DLOOKUP Function

Q: I have a service call form where I track service calls for each customer. I can pick a customer from a combo box, like you covered in your relational combo box tutorial. Now, however, I’d like to know how to automatically set the address of the service call to the customer’s current address — but I need to be able to change it if necessary, so I can’t just show the customer’s address. Help!

A: In order to do this, you’re going to need a little bit of VBA programming. Now, if you’ve never done any VBA programming before, I strongly recommend you start by taking my Access 301 tutorial. I cover all of the basics (no pun intended) of VBA programming with Access.

Now, there is a special function called DLOOKUP (short for Domain Lookup) which lets you look up a value in a table or query. For your example, you need to look up the Address, City, and State fields (and ZIP code if you have it) from your customer table where the CustomerID is the same as the CustomerID on your service form — or in this case, the value in your CustomerCombo box since you’re picking from a list.

Here’s how the DLOOKUP function works:

=DLOOKUP ( Field , Domain , Criteria )

The Field is simply any field you want to return the value of: Address, City, State, ZIP, etc. The Domain is any table or query where your data resides. The Criteria allows you to tell DLOOKUP which record to return.

For example, if you want to get the last name of the customer whos ID is 5, then you’d say:

=DLOOKUP ( «LastName» , «CustomerT» , «CustomerID=5» )

Since you’re working with a service call form and the value of the CustomerID is in a combo box called CustomerCombo, you’d use the following line to get the selected customer’s Address:

=DLOOKUP ( «Address» , «CustomerT» , «CustomerID=» & CustomerCombo )

When you put this in the AfterUpdate event for the CustomerCombo, the Address field can be automatically populated on your form. Then, just add in DLOOKUP statements for any other fields like City or State that you might need.

Here’s a screen shot from one of my tutorials. The address fields are automatically populated when the customer is changed using the combo box.

Here is a FREE VIDEO TUTORIAL that will walk you through this topic in detail.

I teach the concepts in this free mini tutorial in my Access 302 course. These are full courses — over 60 minutes in length each. I spend a lot more time going over how to do this, in addition to lots more tips and tricks.

UPDATE: The DLOOKUP function was also recently covered again in my Access 2013 Expert Level 10 class.

Click here to sign up for more FREE tips

You may want to read these articles from the 599CD News:

Ссылка на основную публикацию
Adblock
detector