Назначить значение из запроса с суммой в текстовое поле - PullRequest
0 голосов
/ 29 мая 2019

Я новичок здесь. Неделями прятался, нашел много ответов. не могу найти один для этой проблемы.

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

У меня есть функция, связанная с ComboBox после обновления. SQL хороший, я проверил его, просто запустив.

Я просто не могу присвоить результат Txtbox

prepoffEIC - это имя моего текстового поля.

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

1 Ответ

0 голосов
/ 29 мая 2019

Создайте запрос, используя 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 (так как я не знаю, что вам нужноfor.) в событии после обновления (также используйте лучшее именование, это быстро и грязно)

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.
...