Приступите ВБА табелама - ажурирајте, бројите, избришите, креирајте, преименујте, извезите

Овај водич ће вас научити како да радите са Аццесс Таблес користећи ВБА.

Приступите ВБА табелама

За почетак ћемо демонстрирати једноставне команде за рад са табелама у Аццессу. Касније у овом водичу показат ћемо вам потпуно професионално развијене функције за рад с таблицама у програму Аццесс.

Направи табелу

Овај код ће користити СКЛ за креирање табеле под називом „Табела1“ са пољима „ИД“ и „Име“:

 Дим таб_наме Ас Стринг Дим поља Ас Стринг табле_наме = "Табле1" фиелдс = "([ИД] варцхар (150), [Наме] варцхар (150))" ЦуррентДб.Екецуте "ЦРЕАТЕ ТАБЛЕ" & табле_наме & фиелдс

Затвори табелу

Ова линија ВБА кода ће затворити табелу (чување промена):

ДоЦмд.Цлосе ацТабле, "Табле1", ацСавеИес

Да бисте затворили табелу без чувања:

ДоЦмд.Цлосе ацТабле, "Табле1", ацСавеНо

Избриши табелу

Овај код ће избрисати табелу (напомена: прво табелу треба затворити):

ДоЦмд.Цлосе ацТабле, "Табле1", ацСавеИес ДоЦмд.ДелетеОбјецт ацТабле = ацДефаулт, "Табле1"

Преименуј табелу:

Ова линија кода ће преименовати таблу приступа:

ДоЦмд.Ренаме "Табле1", ацТабле, "Табле1_Нев"

Друга могућност је коришћење својства ТаблеДефс објекта базе података.

Постави тдф = дб.ТаблеДефс (стрОлдТаблеНаме) тдф.Наме = стрНевТаблеНаме

Празна / Очисти табелу

Овај ВБА код ће испразнити табелу:

ДоЦмд.РунСКЛ "ДЕЛЕТЕ * ФРОМ" & "Табле1"

Скраћи табелу / Избриши записе

Ова линија ВБА кода користи СКЛ за брисање записа из табеле који задовољавају одређене критеријуме:

ДоЦмд.РунСКЛ ("ДЕЛЕТЕ * ФРОМ" & "Табле1" & "ВХЕРЕ" & "нум = 2")

Извезите табелу у Екцел

За извоз табеле у Екцел користите ДоЦмд.ОутпутТо метода:

ДоЦмд.ОутпутТо ацОутпутТабле, "Табле1", ацФорматКСЛС, "ц: \ темп \ ЕкпортедТабле.клс"

или користите ДоЦмд.ТрансферСпреадсхеет метода:

ДоЦмд.ТрансферСпреадсхеет ацЕкпорт, ацСпреадсхеетТипеЕкцел9, "Табле1", "ц: \ темп \ ЕкпортедТабле.клс", Тачно

Ажурирај табелу

Следећи код ће ажурирати запис без приказивања поруке упозорења:

ДоЦмд.СетВарнингс (Фалсе) ДоЦмд.РунСКЛ "Ажурирање производаТ СЕТ ПродуцтсТ.ПродуцтНаме = 'ААА производа" ГДЕ (((ПродуцтсТ.ПродуцтИД) = 1)) "

Приступите ВБА табеларним функцијама

Горе наведени примери кода су једноставне команде које можете користити за интеракцију са табелама помоћу ВБА. Међутим, често ћете морати да додате много више кода за подршку (укључујући руковање грешкама) да бисте правилно користили ове команде. У наставку ћете пронаћи професионално развијене функције за рад са Таблицама у Аццессу.

Бројање табеларних записа

Ова функција броји број записа у табели:

Јавна функција Цоунт_Табле_Рецордс (ТаблеНаме Ас Стринг) Ас Интегер Он Еррор ГоТо Ерр: Дим р Као ДАО.Рецордсет Дим ц Ас Интегер Сет р = ЦуррентДб.ОпенРецордсет ("Селецт цоунт (*) ас рцоунт фром" & ТаблеНаме) .ОпенРецордсет Иф (р .ЕОФ) Тада је ц = 0 У супротном ц = Нз (р! РЦоунт, 0) Крај Ако је Цоунт_Табле_Рецордс = ц Излаз из функције Ерр: Позовите МсгБок ("Дошло је до грешке:" & Ерр.Десцриптион, вбЕкцламатион, "Еррор") Крај функције ' Пример коришћења Приватни подброј_Таблица_Рецордс_Екампле () МсгБок (Цоунт_Табле_Рецордс ("Табела1")) Крај Суб

Проверите да ли табела постоји

Ова функција ће тестирати постоји ли табела и враћа ТРУЕ или ФАЛСЕ:

Јавна функција ТаблеЕкистс (БиВал стрТаблеНаме Ас Стринг) Као Боолеан 'Функција: Утврдите да ли табела постоји у Аццесс бази података' Аргументи: стрТабленаме: Име табеле за проверу Дим тдф Ас ДАО.ТаблеДеф Он Еррор Ресуме Нект Сет тдф = ЦуррентДб.ТаблеДефс (стрТаблеНаме ) ТаблеЕкистс = (Ерр.Нумбер = 0) Енд Фунцтион

Ево примера функције која се користи:

Привате Суб ТаблеЕкистс_Екампле () Иф ВБА_Аццесс_Цхецкс.ТаблеЕкистс ("Табле") = Труе тхен МсгБок ("Табле вас фоунд!") Елсе МсгБок ("Табле нот фоунд!") Енд Иф Енд Суб

Направи функцију табеле

Ова функција ће креирати Табелу у Аццесс ВБА у тренутној бази података:

Јавна функција ЦреатеТабле (табле_фиелдс Ас Стринг, табле_наме Ас Стринг) Ас Боолеан Дим стрЦреатеТабле Ас Стринг Дим интЦоунт Ас Интегер Дим стрФиелдс () Ас Стринг Дим стрВалуес () Ас Стринг Дим стрИнсертСКЛ Као Стринг Дим интЦоунтер Као цео број Дим интДата као цео број Грешка ГоТо стрФиелдс = Сплит (табле_фиелдс, ",") стрЦреатеТабле = "ЦРЕАТЕ ТАБЛЕ" & табле_наме & "(" За интЦоунтер = 0 за УБоунд (стрФиелдс) - 1 стрЦреатеТабле = стрЦреатеТабле & "[" & стрФиелдс (интЦоунтер) & "] варцхар ( 150), "Нект Иф Ригхт (стрЦреатеТабле, 1) =", "Тхен стрЦреатеТабле = Лефт (стрЦреатеТабле, Лен (стрЦреатеТабле) - 1) стрЦреатеТабле = стрЦреатеТабле &") "Енд Иф ЦуррентДб.Екецуте стрЦреатеТабле интЦоунтер = 0 интДата = 0 Иф Ерр.Нумбер = 0 Тхен ЦреатеТабле = Труе Елсе ЦреатеТабле = Фалсе Енд Иф Екит Фунцтион Ерр: ЦреатеТабле = Фалсе МсгБок Ерр.Нумбер & "" & Ерр.Десцриптион Енд Фунцтион

Ова функција ће вратити ТРУЕ ако је табела успешно креирана или ФАЛСЕ ако табела није креирана.

Функцију можете позвати овако:

Привате Суб ЦреатеТабле_Екампле () Позовите ЦреатеТабле ("ф1, ф2, ф3, ф4", "ттест") Крај Суб

Функција брисања / испуштања табеле

Ова функција ће избрисати табелу ако постоји:

Јавна функција ДелетеТаблеИфЕкистс (ТаблеНаме Ас Стринг) Иф Нот ИсНулл (ДЛоокуп ("Наме", "МСисОбјецтс", "Наме = '" & ТаблеНаме & "'")) Затим ДоЦмд.СетВарнингс Фалсе ДоЦмд.Цлосе ацТабле, ТаблеНаме, ацСавеИес ДоЦмд ДелетеОбјецт ацТабле = ацДефаулт, Дебуг.Назив табеле. Одштампајте "Табела" & Назив табеле & "избрисано …" ДоЦмд.СетВарнингс Труе Енд Иф Енд функција

Функцију можете позвати овако:

Привате Суб ДелетеТаблеИфЕкистс_Екампле () Позив ДелетеТаблеИфЕкистс ("Табле1") Енд Суб

Функција празне табеле

Ова функција ће испразнити табелу ако постоји:

Јавна функција ЕмптиТабле (ТаблеНаме Ас Стринг) Иф Нот ИсНулл (ДЛоокуп ("Наме", "МСисОбјецтс", "Наме = '" & ТаблеНаме & "'")) Затим ДоЦмд.СетВарнингс Фалсе ДоЦмд.РунСКЛ "ДЕЛЕТЕ * ФРОМ" & ТаблеНаме Дебуг.Принт "Табле" & ТаблеНаме & "Емптиед…" ДоЦмд.СетВарнингс Труе Енд Иф Енд Функција

Функцију можете позвати овако:

Привате Суб ЕмптиТабле_Екампле () Позовите ЕмптиТабле ("Табле1") Енд Суб

Преименуј функцију табеле

Ова ВБА функција ће преименовати табелу:

Јавна функција РенамеТабле (БиВал стрОлдТаблеНаме Ас Стринг, БиВал стрНевТаблеНаме Ас Стринг, Опционално стрДБПатх Ас Стринг) Као Боолеан Дим дб Као ДАО.Датабасе Дим тдф Као ТаблеДеф 'Трап за све грешке. Укључено Грешка Настави даље 'Ако је име базе података празно … Ако Трим $ (стрДБПатх) = "" Затим' … онда поставите Дб на тренутни Дб. Постави дб = ЦуррентДб () У супротном случају, поставите Дб на наведену отворену базу података. Поставите дб = ДБЕнгине.Воркспацес (0) .ОпенДатабасе (стрДБПатх) 'Погледајте да ли је дошло до грешке. Ако греши, онда 'МсгБок "Није могуће пронаћи базу података за отварање:" & стрДБПатх РенамеТабле = Фалсе Екит Функција Енд Иф Енд Иф Иф ОбјецтЕкистс ("Табле", стрОлдТаблеНаме, стрДБПатх) Затим поставите тдф = дб.ТаблеДефс (стрОлдТаблеНаме) тдф.Наме = стрНевТаблеНаме дб.Цлосе РенамеТабле = Труе Елсе РенамеТабле = Фалсе Енд Иф Енд Фунцтион 'Пример употребе Привате Суб РенамеТабле_Екампле () Цалл РенамеТабле ("табле1", "табле2") Енд Суб

Функцију можете позвати овако:

Привате Суб РенамеТабле_Екампле () Позив РенамеТабле ("табле1", "табле2") Крај Суб

Скраћивање / брисање записа из табеле

Ова функција ће избрисати записе из табеле са руковањем грешкама:

Јавна функција Делете_Фром_Табле (ТаблеНаме Ас Стринг, Цритериа Ас Стринг) Он Еррор ГоТо СубЕррор ДоЦмд.СетВарнингс Фалсе ДоЦмд.РунСКЛ ("ДЕЛЕТЕ * ФРОМ" & ТаблеНаме & "ВХЕРЕ" & Цритериа) ДоЦмд.СетВарнингс Труе СубЕкит: ЕкЕкБит Екит: СубЕкБит Екит: СубЕкБит Екит: СубЕкБит Екит: СубЕкБит Екит: СубЕкБит Екит: СубЕкБит Екит: СубЕкБит Екит: СубРег. Грешка Делете_Фром_Табле: "& вбЦрЛф & Ерр.Нумбер &": "& Ерр.Десцриптион Ресуме СубЕкит Енд Фунцтион 'Усаге Екампле Публиц Суб Делете_Фром_Табле_Екампле () Цалл Делете_Фром_Табле (" Табле1 "," нум = 2 ") Енд Суб

Извезите табелу у Екцел

Ова линија кода извешће табелу у Екцел (нову табелу):

ДоЦмд.ОутпутТо ацОутпутТабле, "Табле1", ацФорматКСЛС, "ц: \ темп \ ЕкпортедТабле.клс"

Или можете користити ову функцију:

Јавна функција Екпорт_Табле_Екцел (ТаблеНаме Ас Стринг, ФилеПатх Ас Стринг) ДоЦмд.ТрансферСпреадсхеет ацЕкпорт, ацСпреадсхеетТипеЕкцел9, ТаблеНаме, ФилеПатх, Труе Енд Фунцтион 'Упутство за употребу Суб Екпорт_Табле_Екцел_Екампле (. \ Екпорт_Т Енд Суб

Горњи код ће се извести у нову табелу. Уместо тога, можете додати табелу у постојећу табелу. Наш чланак о увозу / извозу у Аццесс ВБА покрива ово детаљније.

Додајте / додајте записе у табелу

Ова функција ће додати / додати запис у табелу:

Јавна функција Аппенд_Рецорд_То_Табле (ТаблеНаме Ас Стринг, ФиелдНаме Ас Стринг, ФиелдВалуе Ас Стринг) Он Еррор ГоТо СубЕррор Дим рс Ас ДАО.Рецордсет Дим СКЛ Ас Стринг Дим ЦуррентИеар Ас Интегер Сет рс = ЦуррентДб.ОпенРецордсет (Име табеле) рс.Ад .Валуе = ФиелдВалуе рс.Упдате рс.Цлосе Сет рс = Нотхинг СубЕкит: Екит Фунцтион СубЕррор: МсгБок "РунСКЛ еррор:" & вбЦрЛф & Ерр.Нумбер & ":" & Ерр.Десцриптион Ресуме СубЕкит Енд Фунцтион 'Усаге Екампле Привате Суб АппеТ_Тект_Рецорд_ () Позовите Аппенд_Рецорд_То_Табле ("Табле1", "нум", 3) Енд Суб

Додајте запис у табелу из обрасца

Ова функција ће додати запис у табелу из обрасца:

Јавна функција Адд_Рецорд_То_Табле_Фром_Форм (Име табеле као низ) при грешци ГоТо подпогрешка затамњује рс као ДАО.Рецордсет Сет рс = ЦуррентДб.ОпенРецордсет (ТаблеНаме) рс.АддНев 'рс! [Фиелд1] = Валуе1' рс! [Рс2] Фиелд3] = Валуе3 рс.Упдате рс.Цлосе Сет рс = Ништа СубЕкит: Екит Фунцтион СубЕррор: МсгБок "Рефресх_Форм еррор:" & вбЦрЛф & Ерр.Нумбер & ":" & Ерр.

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave