Access 2002 Програмиране чрез пример, част V

Част V: Заобикаляне на ограниченията за достъп

Как ще го получите? Започнете, като поставите всички изрази, които искате, в кавички като тези: "[StateJ=Oklahoma"

Сега оградете вградения низ (низ в низ) с три кавички (както направихте преди), както е показано по-долу: „[Щат]=. Оклахома.

Не забравяйте, че първите и последните кавички са за целия израз. След това свържете променливата, съдържаща "Oklahoma" към амперсанда, както е показано по-долу:

Най-накрая успяхте! Сега присвоете целия низ на променлива, както е показано по-долу:

strWhere = "[State]=. & strState &.

Можете също да използвате единични кавички за филтри, така че следният израз също ще работи: strWhere = [State] = & strState &.

За да запомните техниката на добавяне на вложени кавички, изпълнете следните стъпки:

1. Започнете, като оградите израза, който искате, в кавички (например „[Щат] = Оклахома“).

2. Вмъкнете набор от три (двойни) кавички от двете страни на вложения низ (например „[Щат] =. Оклахома. ).

3. Преместете вложения низ, съдържащ променливата, и го поставете от двете страни на променливата, разделени с интервали (например „[State]=. & strState &. ).

4. Свържете целия израз към променлива (например strWhere = "[State] = '" ' & strState &. ).

Друг метод, който заслужава внимание, е използването на ставане

извъртете цитат. От гл. 16 може би си спомняте, че знаците на клавиатурата съответстват на кодове на знаци, представени в числа. Можете да зададете кой код съответства на конкретен символ, като използвате функцията asc. Например, за да дефинирате просто кода на двойните кавичкинабирам ? asc(. ) в незабавния прозорец за въвеждане и ще върне 34. Трябва да използвате четири кавички, за да дефинирате низ с единични кавички. Вече сте установили, че 34 е числото, което използвате с функцията chr$. Ако напишете същия израз, използвайки този метод, ще завършите така:

' [State] = " & chr$(34) & strState & chr$(34) 373

Можете също да присвоите chr$(34) на променлива за по-добра четливост. Ако присвоите chr$(34) на sQuote, изразът ще изглежда така:

"[Състояние]=" & sЦитирайте strState & с Цитат

Друга алтернатива е да използвате константа за представяне на цитата. Присвоявате четири кавички на константа, както е показано по-долу: Const strOneQuote =

Използвайки този метод, завършвате така: "[State] = " & strOneQuote & strState & strOneQuote

Ако се чудите защо няма собствена функция на Access, която може да обработва вложени кавички, базирана на критерий за изграждане, тогава се радвам да чуя, че функцията BuildCriteria е идеална за свързване на елементи от филтър или аргумент на критерии. Ако приемем, че стойността на strState е Оклахома, вие използвате функцията по следния начин: StrWhere = BuildCriteria("[State]", 8, strState)

Синтаксисът за функция с аргументи изглежда така:

BuildCriteria(Име на поле, Тип поле, израз)

Типът на полето може също да бъде деклариран с помощта на вътрешна константа. Например, вместо да използвате 8 за аргумента FieldType, представляващ типа текстово поле, можете да използвате константата adBSTR. Раздел. Фигура 20.1 показва константите, които работят с функцията BuildCriteria и техните еквивалентни типове и стойности на таблични полета.

Таблица ADO константи на типа данни

ЕквивалентенДостъп Константна стойност Текст AdBSTR 8 Валута adCurrency 6 Дата adDate 7 Число adDecimal 14 Число adDouble 5 Число adInteger 3 Число adSingle 4 Число adSmalllnt 2 Число adTinylnt 16 A ny тип adVariant 12

Константата adBSTR може да конвертира дати и числови стойности. Имайте предвид, че функцията BuildCriteria генерира само критерий. Тъй като вече знаете триковете, които работят, независимо от факта, има 374

Част V: Заобикаляне на ограниченията за достъп

независимо дали имате критерий или не, тогава имате различни начини за работа с вложени низове. Така че, ако имате име, като Charles "Sparky" Mahan, което искате да присвоите на променлива, знаете какво да направите, за да вмъкнете псевдоним. Ако приемем, че променливата StrNickName съдържа "Sparky", изразът ще изглежда така:

StrFullNarne = "Charles & strNickName & Mahan"

Използваната техника не трябва да е изненада за вас, тъй като знаете принципите, по които работи този израз. След като присвояването е направено, strFullName съдържа Charles "Sparky" Mahan, както се очаква.

Както вече знаете, & се вмъкват автоматично в мрежата на заявката, когато въвеждате дата. Какво ще кажете, когато не сте в мрежата на заявките? Въпреки че VBA изрази с & по-лесни за работа от кавички, те все още могат да бъдат трудни. Да предположим, че имате низова променлива с име strDate и трябва да разграничите (разделите) променливата с & както е показано по-долу: "[Acc Предишен 155 156 157 158 159 160 .. 219 >> Следващ