Access vba sql запросы: Вложенные запросы SQL (Microsoft Access SQL)
Содержание
SQL VBA Excel
Работа с внешними источниками данных
Материалы по работе с внешними источниками данных на примере Excel и SQL.
Рассмотрим способы передачи данных между Excel и внешней базой данной на SQL сервере с помощью ADO.
Задача первая. Подключаемся к внешней базе данных.
Для начала надо подключиться к внешней базе данных. Подключение возможно если на компьютере установлен драйвер. Список установленных драйверов для подключения к базам данных на компьютере под управлением Windows:
Панель управления\Все элементы панели управления\Администрирование\Источники данных (ODBC)
Проверить подключение к базе данных можно простым способом. Создаем пустой файл (например, «текстовый документ.txt»), затем изменяем имя и расширение на .udl (например, «connect.udl»). Двойной клик мышкой по новому файлу, далее приступаете к настройке и проверке подключения к базе данных. После того, как удалось настроить корректное подключение к базе данных, сохраняем файл «connect.udl». Открываем файл «connect.udl» обычным текстовым редактором (например, блокнотом), и видим в строке подключения все необходимые параметры. Про подключение к внешним базам данных можно посмотреть на ресурсе ConnectionStrings .
Теперь возвращаемся к нашему VBA для Excel. В редакторе VBA подключаем последнюю версию библиотеки:
Microsoft ActiveX Data Objects Library
Пример кода:
Sub TestConnection() Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.ConnectionString = "" 'Параметры строки подключения cn.Open 'Открываем подключение cn.Close 'Закрываем подключение Set cn = Nothing 'Стираем объект из памяти End Sub
Задача вторая. Загружаем данные из внешней базы данных на SQL сервере в Excel.
После того, как мы установили подключение к внешней базе данных можно приступать к чтению данных и выводу в Excel. Здесь потребуется знание языка запросов SQL. В результате выполнения SQL запроса к нам возвращается некая таблица с данными в объект RecordSet. Далее из объекта RecordSet можно выгружать данные непосредственно на лист или в сводную таблицу.
Пример кода простой процедуры:
Sub LoadData() Dim cn As ADODB.Connection Dim rst As ADODB.Recordset Set cn = New ADODB.Connection Set rst = New ADODB.Recordset cn.ConnectionString = "" 'Параметры строки подключения cn.Open rst.Open "SELECT TOP 10 * FROM <таблица>", cn 'SQL-запрос, подключение ActiveSheet.Range("A1").CopyFromRecordset rst 'Извлекаем данные на лист rst.Close cn.Close Set rst = Nothing Set cn = Nothing End Sub
Для удобства работы. Предлагаю создать собственный класс «tSQL» для работы с базой данных. У класса будет одно свойство:
Public ConnectionSring As String
Для чтения данных напишем метод SelectFrom с параметрами TableName и ws. TableName — это имя таблицы, откуда будем считывать данные и ws — лист Excel, куда будем записывать данные.
Public Sub SelectFrom(TableName As String, ws As Worksheet) Dim cn As ADODB.Connection Dim rst As ADODB.Recordset Dim SQLstring As String Dim i As Long Set cn = New ADODB.Connection Set rst = New ADODB.Recordset SQLstring = "SELECT * FROM " & TableName ws.Cells.Clear cn.ConnectionString = ConnectionSring cn.Open rst.Open SQLstring, cn For i = 1 To rst.Fields.Count ws.Cells(1, i) = rst.Fields(i - 1).Name Next i ws.Range("A2").CopyFromRecordset rst rst.Close cn.Close Set rst = Nothing Set cn = Nothing SQLstring = Empty i = Empty End Sub
Пример использования класса tSQL в процедуре
Sub mySQL() Dim ts As tSQL Set ts = New tSQL ts.ConnectionSring = '<Строка подключения> ts.SelectFrom "Название таблицы", ActiveSheet Set ts = Nothing End Sub
Задача третья. Загружаем данные из Excel во внешнюю базу данных.
Для записи данных напишем метод InsertInto с параметрами TableName. rHead и rData. TableName — это имя таблицы, куда будем добавлять данные; rHead — диапазон ячеек, с указанием полей; rData — диапазон ячеек с данными, которые будем добавлять.
Public Sub InsertInto(TableName As String, rHead As Range, rData As Range) Dim cn As ADODB.Connection Dim SQLstring As String Dim SQLstringH As String Dim SQLstringV As String Dim i As Long Dim j As Long Dim arrHead() Dim arrData() arrHead = rHead.Value arrData = rData.Value Set cn = New ADODB.Connection cn.ConnectionString = ConnectionSring cn.Open SQLstringH = "INSERT INTO " & TableName & "(" For j = LBound(arrHead, 2) To UBound(arrHead, 2) SQLstringH = SQLstringH & " " & arrHead(1, j) If j < UBound(arrHead, 2) Then SQLstringH = SQLstringH & "," Else SQLstringH = SQLstringH & ")" End If Next j SQLstringH = SQLstringH & " VALUES(" For i = LBound(arrData, 1) To UBound(arrData, 1) For j = LBound(arrData, 2) To UBound(arrData, 2) SQLstringV = SQLstringV & " " & arrData(i, j) If j < UBound(arrHead, 2) Then SQLstringV = SQLstringV & "," Else SQLstringV = SQLstringV & ") " End If Next j SQLstring = SQLstringH & SQLstringV SQLstringV = Empty cn.Execute SQLstring Next i cn.Close Set cn = Nothing SQLstring = Empty i = Empty j = Empty SQLstring = Empty SQLstringH = Empty SQLstringV = Empty Erase arrHead Erase arrData End Sub
Пример использования класса tSQL в процедуре
Sub mySQL() Dim ts As tSQL Set ts = New tSQL ts.ConnectionSring = '<Строка подключения> ts.InsertInto "Название таблицы", Range("B1:D1"), Range("B8:D300") Set ts = Nothing End Sub
Задача четвертая. Управляем внешней базой данных из Excel
Рекомендую использовать запросы в основном для чтения данных из внешней БД. Можно записывать данные в таблицы внешней БД.
Но крайне не желательно использовать Excel для управления внешней базой данных, лучше использовать стандартные средства разработки.
Полезные ссылки:
Data from Excel to SQL
http://www.excel-sql-server.com/excel-sql-server-import-export-using-vba.htm
Excel подключение к oracle
Подключение к базе данных Oracle (Power Query)
Смотрите также: И так сmrzv строке подключения Set: Здравствуйте, раньше не осталась последняя проблема ‘Password=пароль;’ ‘Получаем данные строку подключения. сотрудники умеют считать спеца, в крутойB.Key Хочу в дальнейшем экспортный файл из Буду осень признательна вас! К сожалению,. перейдите к AccessПримечание: проблемой провайдера я: Вот такой код, cn = CreateObject(«ADODB.Connection») имел дела с
— это runtime из БД черезElhust деньги. конторе, стоит 200$,
: «Некустарные», как правило настроить фильтр, чтобы ПО, и выполнит за помощь. познания в VBAВ диалоговом окне компоненты данных (ODAC)Мы стараемся как разобрался я получаю нужную cn. Open «Provider=ORAOLEDB.ORACLE;Data Source=192.168.200.253:1521/xe;Password=org;User подключением к БД. error -2147217843 (80040e4d) запрос rsORA.Open ‘SELECT…(тело:-В «серьезных» организациях стоимость нормочаса крутого не отвечают запросам выгружался только нужный то, что будетМотя очень скудны. БезБаза данных Oracle 32-разрядная Oracle с
можно оперативнее обеспечиватьКриво стояли драйвера мне информацию, но
ID=pqw2″Run-time error 3706 Прошу помочь. ‘Automation error’… Возникает запроса)’, cnORA ‘Вставкаanvg сотрудники умеют бездумно спеца excel 20$. конечных пользователей филиал. Смысл еще заложено в алгоритм: Почему Вы выбрали вашей помощи нев поле помощью инструментов разработчика вас актуальными справочными oracle кириллица вопросами. ЧтоНе удается найти
На просторах нашего при выполнении Open. даннных из полученого, Спасибо буду изучать тратить деньги, дажеСрок исполнения данной, либо отвечают,
Далее
-
в том, чтобы макроса.
такой громоздкий путь? обойтись. Мне необходимоИмя сервера Oracle для Visual материалами на вашемПоследний раз когда я делаю не указанный поставщик.Вероятно, он
-
форума нашел вот Единственное подозрение у набора записей ‘1-й ) не понимая сколько задачи «oracle спеца за «очень серьезные» максимально автоматизировать работуМаксим ЗеленскийЭто — из осуществить следующее: необходимоукажите сервер Oracle,
-
Studio (12.1.0.2.4) установить языке. Эта страница я их устанавливал
-
так? Sub ImpOracle() установлен неправильно. такую строку подключения
-
меня на то, вариант — всеSinister это стоит на
-
в крутой конторе» деньги. сотрудников, чтобы им
-
support.office.com>
Подключение к Базе данных Oracle из Excel с помощью VBA
: всякое в жизни серии «Слон и
написать макрос в к которому нужно 32-разрядного клиента Oracle переведена автоматически, поэтому я качал их Set cn =sokol92 Set cn = что неправильно указан полученные записи вставляются: Люди! Подскажите, pls, самом деле. 1 день ТЗ,Мотя не пришлось ручками бывает. Моська». Excel. Цель такая: подключиться. Если требуется или ODAC 64-разрядной ее текст может вот отсюда CreateObject(«ADODB.Connection») cn.Open «ODBC;DBQ=192.168.200.253:1521/XE;UID=orga;PWD=a546;DSN=ALGO»: Установите клиент Oracle CreateObject(«ADODB.Connection») cn.Open «Provider=MSDAORA.1;Data параметр Data Source. в виде талицы как написать макрос,——— 2-5 дней подписание: Одна из 2-х ни соединяться кМотяУ Вас соединение нужно, чтобы нажимая ИД безопасности, его версии 4 (12.1.0.2.4) содержать неточности искачивал вот этот ‘======================================================================================== sSql = в Source=***;Password=***;User ID=***»но как
Каким его задавать? на лист Range(‘адрес который по данным
Что говорить, «совок» документов, 2-7(возможно и ситуаций:
БД, ни устанавливать: «Серьезные» организации кустарные прошло успешно, а кнопку сотрудник любого
можно указать в Xcopy для Windows
грамматические ошибки. Для файл: «select partner_short_name, trunc(OUTCOME_DATE_SALE)полном объеме настроить под свой В OrantNETWORKADMINTnsnames.ora записано
верхней левой ячейки’).CopyFromRecordset запроса к базе привык так жить. меньше) дней выполнение.
1. ПО - как вариант developer поделки, как правило,
что будет в филиала получал выгрузку формате «Имя_сервера/ИД_безопасности». x64 12 cустановить нас важно, чтобы64-bit ODAC 12.2c d, sum(roh.sum_w_nds) s,count(1). По умолчанию указанный
лад не пойму. имя, которое я rsORA ‘2-й вариант
данных Oracle устанавливалB.KeyСрок исполнения данной «кривое», то бишь, для выгрузки данных, не покупают.
филиалах? из базы данныхЕсли данные нужно импортировать
64-разрядную клиента Oracle. эта статья была Release 1 (12.2.0.1.1) h from t_partner
выше драйвер может На счет Data пытался использовать в
— вставляются определенные
бы значения переменных: Пользуйтесь на здоровье задачи «крутого спеца кустарное. чтобы выгружать нужнуюМаксим ЗеленскийНе завидую Вашим одного программного обеспечения с использованием запросаБолее новые версии вам полезна. Просим for Windows x64 p, T_REMOTE_ROZNICA_OUTCOME_HEAD roh и не устанавливаться. Source=***;Password=***;User ID=*** все качестве Data Source. поля в заданную или ячеек рабочего и экономьте Ваши excel» максимум 12. Начальники ничего им информацию в: Целых два небесспорных филиальным операционистам. Oracle. При этом на языке базы Office 2010 – вас уделить пару[Released August 3, where ROH.REMOTE_PARTNER_ID = Кроме того, учтите, понятно Должно быть это ячейку While Not листа? Очень хотелось средства час. слаще морковки, EXCEL, Excel. Помогите, пожалуйста, допущения ))ПО на платформе Oracle нужно, чтобы макрос данных, укажите его 2013
секунд и сообщить, 2018] — 406 p.PARTNER_ID and trunc(OUTCOME_DATE_SALE) что разрядности (32-А вот Provider неправильно? rsORA.EOF …. Range(‘адрес бы пример соединенияМотяЗачем платить больше, не признают! с реализацией задуманного. Ну, будем надеяться не может быть подключил пользователя к в полеЩелкните на вкладке « помогла ли она
MB (426,617,132 bytes)В between sysdate - или 64-) клиента какой нужно использовать?
meja ячейки’)=rsORA.Fields(номер поля из с базой через
: Почти, цитаты «от если второй сделаетЦитатаhipersa пишет: Хочу
Какой код VBAhipersa примитивным: в нем
базе. Через excelИнструкция SQLданные
вам, с помощью этом архиве есть 3 and sysdate Oracle и MSЯ установил драйвер: Может быть и
запроса — начинается ODBC и строку министра финансов», когда лучше. в дальнейшем настроить можно было бы: Смысл данной работы
не может отсутствовать осуществила подключение через. Дополнительные сведения см.» выберите кнопок внизу страницы. нормальный setup group by partner_short_name,
Office должны совпадать. с сайта oracl
в этом ошибка, с 0). Value ….. выполнения запроса и он затягивает песню———
фильтр, чтобы выгружался использовать для подключения в том, чтобы цивилизованный экспорт в Microsoft Query. Драйвер в статье ИмпортПолучение данных
Для удобства такжеПравильная строка подключения trunc(OUTCOME_DATE_SALE)» Set Rssokol92
«Oracle in instantclient_18_3″ но скорее всего rsORA.MoveNext Wend ‘Закрываем
считывания значений разультата
«Разговор в пользуСкрытый текстНу если только нужный филиал.Неужели
к базе? Заранее начальники в филиалах
EXCEL. указала как «Microsoft данных из базы> приводим ссылку на
выглядит вот так: = GetRs(sSql, cn): Проверить доступность провайдера имя его «SQORA32.DLL». в другом: нужно
переменные rsORA.Close cnORA.Close его выполнения. бедных». только заказчик откат ПО не определяет
большое спасибо! имели возможность вИзучите шаблоны экспорта
ODBC for Oracle» данных с помощьюИз базы данных оригинал (на английском Set cn = Sheets(«Лист1»). [a1].CopyFromRecordset Rs Rs.Close
можно через Меню/Данные/Из
ivanok_v2 еще дописать Set
SinisterЗаранее благодарен!vikttur получит
права пользователя?!B.Key любую минуту выгрузить Вашего ПО во (правильно ли именно запроса на ее
> языке) .
CreateObject(«ADODB.Connection») cn.Open «Provider=OraOLEDB.Oracle;Data
planetaexcel.ru>
Как Подключиться к базе Oracle ? (Макросы/Sub)
Set Rs = других источников/Из мастера: ConnectionString для всех rsORA = New: У меня наmeja: Хватит флудерства.Мотя
ЦитатаB.Key пишет: «Некустарные»,: Sub ImpOracle() Set
нужную информацию, не все форматы, которые его использовать?), пользователь языке.Из базы данных OracleС помощью Excel Get Source=192.168.200.253:1521/XE;User ID=***;Password=***»
Nothing End Sub подключений/Дополнительно (путь дан языков програмирования однаковая. as ADODB. Recordset, чтобы выражении ‘cnORA As
excelworld.ru>
SQL запрос к Oracle из Excel через ODBC
: Один из вариантТему закрыл.: Любопытно, однако. как правило не cn = CreateObject(«ADODB.Connection») прибегая к написанию в нем предусмотрены. (допустим) Crent, ПарольНажмите кнопку. Если кнопка & преобразования качествачто касается кодировки при Function GetRs(sstr, cn) для Excel 2016).если вы подключаетсь
инициализировать переменную. Я
ADODB.Connection’ возникает ошибка — подключиться, используяElhustОбщеизвестно: лучше иметь отвечают запросам конечных
cn.Open «Provider=MSDAORA.1;Data Source=Chief;Password=Bercut;User скриптов для выгрузкиПолагаю, Вы обнаружите Bercut, Сервер Chief.ОКПолучить данные (Power Query) для использовании DSN вместо Set rstdata = Имя провайдера: Oracle через другое ПО, просто забыл это компиляции. Для выполнение ADO. Ниже представлены: Доброго времени суток дело с качественным пользователей , либо ID=Crent» ‘======================================================================================== sSql данных из базы не только формат Соединение прошло успешно. .не отображается, нажмите подключения к базе Provider, то мне CreateObject(«ADODB.Recordset») rstdata.Open sstr, Provider for OLE значить нужные драйвера указать, сорри :-) приведенного Вами кода узловые моменты кода. уважаемые гуру Excel’ya ПО, чем с отвечают, за «очень
= «select * (база программного обеспечения, EXCEL. Далее нужно, чтобыЕсли для сервера Oracle кнопку данных Oracle. так и не cn Set GetRs DB.Там же можно уже есть.
Sinister требуется что-то дополнительно’Объявляем вначале переменные подскажите как к разного рода «крутыми»
серьезные» деньги.Общеизвестно, СКУПОЙ from xclient_class» Set используемого в организации).Научить операционистов, «денно выгружалась определенная таблица требуются учетные данныеНовый запросПримечание: удалось разобраться. Но = rstdata Set протестировать его работоспособность.mrzv: Все равно, спасибо устанавливать кроме Офиса Dim cnORA As оракловой базе подключится спецами. ПЛАТИТ ДВАЖДЫ! Rs = GetRs(sSql,
С экспортом в и нощно сидящих этой базы данных пользователя базы данных:> Прежде чем вы можете на мой взгляд rstdata = Nothingmrzv: Как тогда определить )
2000, в котором ADODB.Connection ‘для соединения какие библиотеки подключать
В «серьезных» организацияхhipersa cn) sheets(1).[a1].copyfromrecordset rs
эксель из БД в ПО», шаблонному (например) xclient_class. НоВ диалоговом окнеИз базы данных подключиться к базе
CyberForum.ru>
Подключение к Базе данных Oracle из Excel с помощью VBA
способ подключения через End Function: Спасибо за советЯ какой драйвер мнеКстати, все заработало,
я предполагаю его Dim rsORA As и что делать ни с какими: , большое вам Rs.Close Set Rs проблем нет. Но экспорту в файл как это прописатьДоступ к базе данных>
данных Oracle с Provider более правильный.
весь код взял из создал подключение ODBC нужно использовать? когда я изменил
запускать из Excel? ADODB. Recordset ‘для получения ?
«крутыми спецами» никогда спасибо за код, = Nothing end нужно, чтобы данные
из ПО в в VBA так,введите имя пользователяИз базы данных Oracle
помощьюСпасибо всем за помощь. этой статьи
DNS посмотрел тамNordheim
процедуру подключения так:meja записей ‘Устанавливаем соединениеanvg не будут иметь за вашу помощь sub Function GetRs(sstr,
подгружались именно после нужный каталог в чтобы я могла
и пароль..Power Querysokol92sokol92 строку подключения .: Я подключаюсь такWith conn .ConnectionString: Нужно подключить библиотеку с БД Set: Доброе время суток. дела.
и за потраченное cn) Set rstdata нажатия определенной кнопки нужном формате - это все этоНажмите кнопкуНа вкладке ленты, вам необходимо v8.1.7: Успехов!: Вы, похоже, подключили
Вставил её в «Provider=msdaora» = ‘Provider=MSDAORA; Data Microsoft ActiveX Data cnORA = NewДа всё такжеB. Key время! Очень вам = CreateObject(«ADODB.Recordset») rstdata.Open в Excel (кнопок
элементарно.
могла реализовать безПодключитьсяPower Query программного обеспечения клиентаbedvit провайдер Microsoft, а свой код иsokol92 Source=var1; ‘ & Objects 2.x Library ADODB.Connection cnORA.Open ‘Provider=msdaora;’ как и к: Я не буду благодарна. Все работает!!! sstr, cn Set будет несколько иНу, а далее: ручной настойки непонятно..щелкните Oracle или больше: Владимир, работаем тоже не Oracle. Мы все получилось. Только: Provider=ORAOLEDB.ORACLE _ ‘User ID=var2; в Tools/Refrences + _ ‘Data остальным. Поставить клиент вступать с ВамиB.Key
GetRs = rstdata к каждой будет
старт Вашего макросного Просмотрела много литературы,hipersaИз базы данных на вашем компьютере. с родными драйверами
всегда работали с вот русские буквыmrzv Password=var3;’ .Open End
Sinister Source=имя базы;’ +
баз данных Oracle, в полемику, скажу: Вы не правы. Set rstdata =
привязан скрипт на файла.
но постоянно какие-то: Добрый день!>
Чтобы установить клиентское Oracle. Microsoft не провайдером Oracle. вопросами…: Вот такую ошибку
With: Все очень хорошо _ ‘User Id=имя если ещё не лишь одно:
Стоимость нормочаса oracle Nothing End Function выгрузку определенной информации).Макрос сам «найдет» ошибки. Пожалуйста, помогите!!!Вся надежда наИз базы данных Oracle программное обеспечение Oracle,
используем.
mrzvcn.Open «ODBC;DBQ=192.168.200.253:1521/XE;UID=orga;PWD=a546;DSN=ALGO»
мне выдает наmrzv скомпилировалось, спасибо Только пользователя;’ + _ стоит, сконфигурировать. Сформировать
planetaexcel.ru>
-В хороших организациях
- Excel скопировать содержимое ячейки в excel без формулы
- Как преобразовать число в текст сумма прописью в excel
- Excel не работает формула впр в excel
- Excel 2013 сбросить настройки
- Объединение столбцов в excel без потери данных
- Функция в excel медиана
- Сквозные строки excel
- Диапазон печати в excel
- Excel word слияние
- Функция целое в excel
- Excel текущая дата в ячейке
- Как в excel сделать перенос в ячейке
SQL-запрос в Excel VBA для извлечения информации из Access
Пересмотренный вопрос: я не привык писать SQL-запросы в VBA, поэтому я использовал запись макроса для подключения к Access. Я включил код, который возвращает средство записи макросов. Я получаю сообщение об ошибке
Непредвиденная ошибка. Что-то пошло не так. Если проблема не исчезнет,
пожалуйста, перезапустите Эксель.
Если я щелкну закрыть сообщение об ошибке, электронная таблица с информацией о базе данных из Access появится в Excel, и это здорово, но я бы не хотел, чтобы сообщение об ошибке всплывало.
Вот мой код:
Sub Contact_Search() Dim ContactNum как строка Запустить снова: ContactNum = InputBox("Введите номер для запроса.", "Контактный запрос", "Введите номер здесь...") Если ContactNum = "Введите номер здесь..." Тогда MsgBox "Неверный ответ, пожалуйста, введите номер для запроса." Перейти к перезагрузке ИначеЕсли НомерКонтакта = "" Тогда MsgBox "Номер обязателен. Пожалуйста, введите номер." Перейти к перезагрузке Конец, если ActiveWorkbook.Worksheets.Добавить после:=Листы(1) С ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(_ "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=C:\Users\путь\имя папки\Контакты" _ , _ "Database.accbd;Mode=Share Deny Write;Extended Properties="""";Jet OLEDB:Системная база данных="""";Jet OLEDB:Путь к реестру="""";Jet OLEDB:Da" _ , _ "tabase Password="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Mod блокировки базы данных=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Globa" _ , _ «l Массовые транзакции = 1; JetOLEDB: новый пароль базы данных = «»»; Jet OLEDB: создать системную базу данных = False; Jet OLEDB: зашифровать базу данных = False» _ , _ ";Jet OLEDB:Не копировать локально на компактный=False;Jet OLEDB:Compact без восстановления реплики=False;Jet OLEDB:SFP=False;Jet OLEDB:Suppo" _ , _ "rt Complex Data+False;Jet OLEDB:Обход сведений о пользователе Validaton=False;Jet OLEDB:Ограниченное кэширование БД=False;Jet OLEDB;Обход ChoiceField" _ , " Validation=False"), Destination:=Range("$A$1")).QueryTable .CommandType = кслкмдтабле .CommandText = Массив ("Контакты") .
PreserveFormatting = Истина .BackgroundQuery = Истина .RefreshStyle = кслинсертделетселлс .СохранитьДанные = Истина .AdjustColumnWidth = Истина .RefreshPeriod = 0 .PreserveColumnInfo = Истина .SourceDataFile = "C:\Users\путь\имя папки\Contacts\Database.accdb" .ListObject.DisplayName = "Table_Database.accdb" .Обновить BackgroundQuery:=False Конец с Конец сабвуфера
Я уверен, что многое из того, что находится в этом коде, на самом деле не нужно, это просто то, что туда вставляет средство записи макросов, но я не уверен, что можно вынуть и что там должно быть, чтобы он работа, и я не уверен, что что-то в коде вызывает сообщение об ошибке, которое я получаю. Как я уже сказал, информация все еще поступает, но я должен закрыть сообщение об ошибке, прежде чем оно появится в документе Excel.
Кроме того, на самом деле я хочу вернуть не всю таблицу, а только строки, соответствующие переменной ContactNum, введенной пользователем. Я не уверен, где в этом коде я бы поместил язык SQL, чтобы он возвращал только определенные значения, а не всю таблицу. Любые идеи по сообщению об ошибке, а также словоблудие SQL?
sql — Использование функции VBA в запросе доступа
Задавать вопрос
спросил
Изменено
1 год, 8 месяцев назад
Просмотрено
316 раз
Я хочу написать запрос SQL, используя доступ MS, который вычисляет серийный номер, используя функцию VBA.
У меня есть большая таблица «samplebasicinformation», в которой много внешних ключей, и я хочу использовать текстовые поля во внешних таблицах для создания текстового серийного номера.
Я хочу, чтобы первое поле запроса сокращало несколько текстовых полей из других таблиц, затем объединяло их и создавало этот серийный номер.
Для сокращения текстовых полей у меня есть следующая функция:
Функция GetFirstLetters(rng As String) Тусклый обр Дим я пока arr = VBA.Split(rng, "") Если Массив(обр) Тогда Для I = LBound (приб.) To UBound (приб.) GetFirstLetters = GetFirstLetters & Left(arr(I), 1) Далее я Еще GetFirstLetters = Слева (приб., 1) Конец, если Конечная функция
Я попытался сделать это с помощью приведенного ниже SQL, но не смог из-за синтаксической ошибки.
ВЫБЕРИТЕ (getfirstletters(выбрать sl.locationname из samplebasicinformation as sbi присоединиться к samplelocation как sl на sbi.samplelocationid = sl.samplelocationid)), SampleBasicInformationID из SampleBasicInformation как sbi1
Кто-нибудь может дать совет?
- sql
- vba
- ms-access
Вам нужно передать один столбец вашей функции.
Ваш запрос довольно запутан, я думаю, что это так же просто:
SELECT
getfirstletters(sl.locationname),
sbi.samplebasicinformationid
ОТ образца базовой информации как sbi
Расположение образца INNER JOIN как sl
на sbi.samplelocationid = sl.