Назначить значение из запроса с суммой в текстовое поле

Я пытаюсь присвоить значение из SQL-запроса текстовому полю.

У меня есть функция, привязанная к ComboBox After update.

Я проверил SQL, запустив его.

Как назначить результат текстовому полю с именем prepoffEIC?

Dim MyVar2 As Integer
MyVar2 = Me.SelectedExam.Column(0)
ExamViewQry = "SELECT Sum(tblentrys.entryhours) AS TotalHoursPerFunction FROM tBleExams INNER JOIN (tBlBankList INNER JOIN (tBlExaminers INNER JOIN (tBlEntrys INNER JOIN tBlActivity ON tBlEntrys.EntryActivityID = tBlActivity.FunctionKey) ON tBlExaminers.ExaminersKey = tBlEntrys.EntryExaminerID) ON tBlBankList.BankID = tBlEntrys.EntryInstitutionID) ON (tBlBankList.BankID = tBleExams.ExamBankID) AND (tBleExams.ExamID = tBlEntrys.EntryExamID) WHERE tBlEntrys.EntryActivityID=1 AND tblEntrys.EntryExamStageID=1 AND tBleExams.ExamID = " & MyVar2

Me.prepoffEIC.ControlSource = "ExamViewQry"
Me.prepoffEIC.Requery
ExamViewQry — это просто строка. Я предполагаю, что вам нужно выполнить это и вернуть результат, прежде чем делать что-либо еще.
user11509084 29.05.2019 16:24

«Я пытаюсь присвоить значение из SQL-запроса текстовому полю и столкнулся с препятствием». - что именно это означает? Вы хотите создать список значений в качестве источника поля со списком/списка? Или что-то другое? Не могли бы вы предоставить более подробную информацию об этом?

Van Ng 29.05.2019 16:27

Вы хотите назначить значение или источник управления? Если вы присвоите значение, оно не будет автоматически обновляться при изменении данных, и вам придется вычислять значение в коде VBA и использовать свойство .Value. Если вы хотите назначить источник управления, вам нужно обернуть запрос в функцию DLookUp.

Erik A 29.05.2019 16:36

SQL возвращает СУММУ, я хочу присвоить эту сумму значению текстового поля.

Gary 29.05.2019 16:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
211
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Создайте запрос, используя имеющийся у вас sql, но слегка модифицированный, вставьте его сюда: Sql view

PARAMETERS eid long;
SELECT Sum(tblentrys.entryhours) AS TotalHoursPerFunction
FROM tBleExams
INNER JOIN (
    tBlBankList INNER JOIN (
        tBlExaminers INNER JOIN (
            tBlEntrys INNER JOIN tBlActivity ON tBlEntrys.EntryActivityID = tBlActivity.FunctionKey
            ) ON tBlExaminers.ExaminersKey = tBlEntrys.EntryExaminerID
        ) ON tBlBankList.BankID = tBlEntrys.EntryInstitutionID
    ) ON (tBlBankList.BankID = tBleExams.ExamBankID)
    AND (tBleExams.ExamID = tBlEntrys.EntryExamID)
WHERE tBlEntrys.EntryActivityID = 1
    AND tblEntrys.EntryExamStageID = 1
    AND tBleExams.ExamID = [eid]

давайте назовем это qryGetHours (поскольку я не знаю, для чего вам это нужно.) в событии после обновления (также используйте лучшее имя, это быстро и грязно)

dim db as DAO.Database
dim qry as QueryDef
dim rs as DAO.Recordset

set db = currentdb
set qry = db.querydefs("qryGetHours")
'this is the name of the query you made above
qry.parameters("eid").value = me.SelectedExam.Column(0)
set rs = qry.openrecordset(dbopendynaset,dbseechanges)
'dbseechanges is more for if you have a sql server backend, but i usually do
if not ( rs.eof and rs.bof) then
    rs.movefirst
    me.prepoffEIC = rs.fields("TotalHoursPerFunction").value
    'This portion assumes that you only get one record back, 
    'or if you do end up with more than one, it only goes 
    'after the first one.
else
    msgbox "Errors... Errors everywhere."
    'You will definitely want to put something meaningful 
    'here relating to it not being able to find the data you 
    'were looking for.
end if
if not rs is nothing then
    rs.close
    set rs = nothing
end if
set qry = nothing
set db = nothing
'you will always want to do this portion where you properly 
'check if a recordset exists and then close it when you are 
'done, along with closing out the querydef and database variables.

ОК, как новичок в VBA, я думаю, что понимаю весь второй раздел. это первый фрагмент кода, который я потерял. где код SQL. Спасибо

Gary 29.05.2019 17:11

На ленте вы нажимаете «Создать», затем находите «Конструктор запросов». как только вы окажетесь там, вы увидите кнопку в крайнем левом углу, если вы нажмете маленькую стрелку вниз под ней, выберите ту, которая говорит «Просмотр SQL».

KySoto 29.05.2019 17:15

На самом деле, я добавлю картинку в пост, чтобы было понятно.

KySoto 29.05.2019 17:18

О, я вижу, вы имеете в виду наличие объекта запроса в БД. не просто создание одного на лету! Я понимаю.

Gary 29.05.2019 17:19

Да, нет проблем, раньше я выполнял запросы «на лету», но обнаружил, что это ОЧЕНЬ сильно увеличивает раздувание базы данных (вы знаете, куда она переходит от файла размером 3,5 МБ до 700 МБ за пару месяцев без его сжатия)

KySoto 29.05.2019 17:20

и TADA... это сделало это... Спасибо, я надеялся быть более динамичным (в коде VBA) с запросами, но это сработает. Я настрою свой мыслительный процесс на работу с помощью этого метода... Сопротивление бесполезно!

Gary 29.05.2019 17:22

и один быстрый последний вопрос. в ПАРАМЕТРАХ eid LONG; (никогда не видел этого раньше), как бы я добавил 3 PARAMS. так как я мог бы использовать их для других переменных "И".

Gary 29.05.2019 17:26

Да, я делаю это изо дня в день, я дошел до того, что у меня есть файл доступа, посвященный модулям кода, из которого я повторно использую код.

KySoto 29.05.2019 17:26

Таким образом, параметры ДОЛЖНЫ быть чем-то заполнены, если они перечислены в этом разделе, но чтобы добавить больше, вы просто должны сделать PARMETERS eid long, SecondParamter text(255); Кроме того, вы ДОЛЖНЫ иметь точку с запятой между частью параметров и остальной частью запроса. Обновлено: если вы хотите установить параметры, вы можете просто перейти к инструментам запроса в представлении сетки дизайна, а вверху у него есть кнопка с именем параметры. вы можете добавить в список таким образом.

KySoto 29.05.2019 17:29

Побей тебя... Спасибо. Теперь я собираюсь снова и снова использовать этот фрагмент кода для нескольких текстовых полей. Еще раз спасибо КиСото!

Gary 29.05.2019 17:30

кстати, если вы создаете запрос, содержащий ВСЕ данные, которые вам нужны (для всех полей, над которыми вы работаете), вы можете использовать этот метод для загрузки данных во все них.

KySoto 29.05.2019 17:31

Это именно то, о чем я думал... Теперь обдумываю, как написать оператор SQL для ВСЕХ итогов со всеми переменными... Может быть ДЛИННЫЙ оператор SQL.....

Gary 29.05.2019 17:43

Кстати, вы бы отметили мой ответ как лучший ответ, если бы это было так?

KySoto 29.05.2019 18:27

Сделанный! нуб... ЛОЛ

Gary 29.05.2019 19:10

Другие вопросы по теме