Хорошо, друзья, я оставляю свою работу через полтора недели, и я пытаюсь сделать то, что я сделал легче для моего босса. У него нет доступа к знаниям, поэтому я пытаюсь создать форму, которая будет автоматизировать отчеты, которые я генерирую. Вместо того, чтобы создавать разные формы для всех разных отчетов, я пытаюсь автоматизировать его из таблицы параметров. Вот что я собираюсь сделать: У меня есть таблица, которую я создал, которая состоит из 5 полей. Я хотел бы использовать эти поля для заполнения полей параметров в стандартном шаблоне формы. Пять полей в моей таблице следующим образом:Автоматический выбор запроса на основе поля со списком на форме
- Тип запроса выполняющиеся (результат выплюнуть)
- Запросы, которые генерируют этот отчет, разделенных запятой и без пробелов.
"QRYNAMEA,QRYNAMEB"
- Таблица которые генерируют эти запросы, которые будут использоваться
transferspreadsheet
- Адресата первенствует файл, который уже имеет сводную таблицу, созданную для подачи данных.
- Входной лист этого файла excel. В настоящее время все эти листы называются «Input». (что не имеет значения)
Моя проблема связана с тем, что я не знаю, куда идти после того, как я сделал свой комбинированный блок. Я знаю достаточно Visual Basic для автоматизации моих запросов, но недостаточно, чтобы заполнить форму информацией в 3,4 и 5 (до сих пор я вручную менял их для разных запросов). Я понятия не имею, как искать запись в таблице по выбору в «selectbox», а затем выбирать отдельные поля из этого в моей автоматизации.
Я довольно уверен в своей способности разбирать №2 и автоматизировать запросы и поместить значения в поля, на которые я смотрю, но я не знаю, как на самом деле вытащить эти значения из таблицы , прежде чем я смогу сделать это. Я также не могу описать это достаточно хорошо для Google, чтобы помочь мне.
Кто-нибудь сделал что-то подобное раньше? Я предполагаю, что мне просто не хватает знаний об одной из библиотек VBA, но мне не удавалось выяснить, что.
Редактировать: Мой наклон в этот момент должен создать запрос для этой таблицы, который будет возвращать одно поле в зависимости от ввода, который я даю. Я могу представить, как это делается в SQL, но я до сих пор не знаю, как заполнить формы, и не извлекать полевой объект из таблицы, как только я получу его.
Мне нужно отправиться на день, но я вернусь в пятницу, чтобы продолжить работу над этим, и я отправлю свое решение, когда найду его. Это похоже на уникальную загадку, и было бы неплохо дать ответ на нее.
Заключительный изменить: Код полируется (не так много на пути обработки ошибок):
Первый метод, который тянет поля из таблицы и заполнит форму, активируется путем выбора новая запись в поле со списком и выглядит следующим образом:
Private Sub QuerySelect_Change() Dim db As Database Dim rec As Recordset Set db = CurrentDb Set rec = db.OpenRecordset("SELECT [Queries to Run], [Source Table], [Destination Spreadsheet], [Destination Sheet Name] FROM TBL_QRY_SETTINGS WHERE TBL_QRY_SETTINGS.[Query Type] Like '" & [Forms]![QuerySelector]![QuerySelect] & "';") [Forms]![QuerySelector]![QueriesToRun].Value = rec("Queries to Run") [Forms]![QuerySelector]![SourceTable].Value = rec("Source Table") [Forms]![QuerySelector]![FileDest].Value = rec("Destination Spreadsheet") [Forms]![QuerySelector]![SheetName].Value = rec("Destination Sheet Name") Set rec = Nothing Set db = Nothing End Sub
Второй код тянет, что данные для выполнения запроса. Мне нравится, как это получилось. Он запускается при нажатии кнопки рядом с выпадающим списком.
Private Sub DynamicQuery_Click() Dim qryArray As Variant Dim i As Integer qryArray = Split([Forms]![QuerySelector]![QueriesToRun], ",") DoCmd.SetWarnings False For i = LBound(qryArray) To UBound(qryArray) Debug.Print qryArray(i) DoCmd.OpenQuery (qryArray(i)) Next DoCmd.SetWarnings True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, [Forms]![QuerySelector]![SourceTable], _ [Forms]![QuerySelector]![FileDest], _ True, [Forms]![QuerySelector]![SheetName] End Sub
Обратите внимание, что конечный код части (1) почти такая же, как выбранный ответ, за исключением того, что я захватывая более одного поля. Это работает, потому что я знаю, что у меня есть уникальные «Типы запросов», и мой набор записей будет содержать только одну запись.
В любом случае, я надеюсь, что некоторые люди наткнутся на это и сочтут это полезным. Send me a message if you do
. Насколько я могу судить по кратким поисковым запросам, такого рода автоматизация не была достигнута при доступе. Это должно облегчить доступ к неграмотным, чтобы запускать свои собственные запросы и быть простым для дизайнеров, чтобы добавить, если они хотят, чтобы все их запросы были доступны через несколько кликов.
Возможно, кто-то может использовать это, чтобы автоматизировать различные отчеты в последовательности, итерируя через таблицу, подобную той, которую я ссылаюсь.
нет автоматического способа осуществить это. Если я последую тому, что вы описываете, это потребует какой-то таблицы документации, содержащей все детали, которые вы хотите отобразить после выбора запроса из выпадающего списка. –
@HansUp Я не могу вставить фотографию в сообщение, и я не могу понять способ ее форматирования, поэтому вот скриншот: http://i.imgur.com/EuTi5bY.png Верхний ряд является единственным, связанным с ним, но все они следуют одному и тому же форматированию. – GMoany