|
|
Question : MS Access update statement with subquery in the set clause?
|
|
Experts, I am trying to run the following update this update statement works:
UPDATE MJM_ATTEND_PAY_INDIV SET MJM_ATTEND_PAY_INDIV.ATTEND_PER_MONTH = 4 WHERE (((MJM_ATTEND_PAY_INDIV.ROW_ID) In (SELECT [MJM_ATTEND_PAY_INDIV].[ROW_ID] FROM MJM_SCHOOL, MJM_CLASS, MJM_STUDENT, MJM_ATTEND_PAY_INDIV WHERE [MJM_SCHOOL].[ROW_ID]=[MJM_CLASS].[SCHOOL_ID] And [MJM_CLASS].[ROW_ID]=[MJM_STUDENT].[CLASS_ID] And [MJM_STUDENT].[ROW_ID]=[MJM_ATTEND_PAY_INDIV].[STUDENT_ID] And [MJM_STUDENT].[ACTIVE_FLG] = -1 And [MJM_ATTEND_PAY_INDIV].[PAID_FLG]=0 And [MJM_SCHOOL].[ROW_ID] IN (select row_id from mjm_school as sc where sc.active_flg = -1 and sc.billing_flg = -1 and sc.payment_type = 'Individual') And [MJM_ATTEND_PAY_INDIV].[BILLING_MONTH]=[Date])));
However instead of hardcoding the number 4 at the end of the set statement, I want to use a subselect:
UPDATE MJM_ATTEND_PAY_INDIV SET MJM_ATTEND_PAY_INDIV.ATTEND_PER_MONTH = (select config_value from mjm_lu_config where config_type = 'Week Override') WHERE (((MJM_ATTEND_PAY_INDIV.ROW_ID) In (SELECT [MJM_ATTEND_PAY_INDIV].[ROW_ID] FROM MJM_SCHOOL, MJM_CLASS, MJM_STUDENT, MJM_ATTEND_PAY_INDIV WHERE [MJM_SCHOOL].[ROW_ID]=[MJM_CLASS].[SCHOOL_ID] And [MJM_CLASS].[ROW_ID]=[MJM_STUDENT].[CLASS_ID] And [MJM_STUDENT].[ROW_ID]=[MJM_ATTEND_PAY_INDIV].[STUDENT_ID] And [MJM_STUDENT].[ACTIVE_FLG] = -1 And [MJM_ATTEND_PAY_INDIV].[PAID_FLG]=0 And [MJM_SCHOOL].[ROW_ID] IN (select row_id from mjm_school as sc where sc.active_flg = -1 and sc.billing_flg = -1 and sc.payment_type = 'Individual') And [MJM_ATTEND_PAY_INDIV].[BILLING_MONTH]=[Date])));
I know the subselect only returns 1 row. However, when I do this I get an error that says "query must be updateable".
I would think I would be able to do this, am I doing something wrong?
Thank you in advance for the help.
- Mike
|
Answer : MS Access update statement with subquery in the set clause?
|
|
PARAMETERS [Week Overide] Text ( 255 ); UPDATE MJM_ATTEND_PAY_INDIV SET MJM_ATTEND_PAY_INDIV.ATTEND_PER_MONTH = (select config_value from mjm_lu_config where config_type = [Week Override]) WHERE (((MJM_ATTEND_PAY_INDIV.ROW_ID) In (SELECT [MJM_ATTEND_PAY_INDIV].[ROW_ID] FROM MJM_SCHOOL, MJM_CLASS, MJM_STUDENT, MJM_ATTEND_PAY_INDIV WHERE [MJM_SCHOOL].[ROW_ID]=[MJM_CLASS].[SCHOOL_ID] And [MJM_CLASS].[ROW_ID]=[MJM_STUDENT].[CLASS_ID] And [MJM_STUDENT].[ROW_ID]=[MJM_ATTEND_PAY_INDIV].[STUDENT_ID] And [MJM_STUDENT].[ACTIVE_FLG] = -1 And [MJM_ATTEND_PAY_INDIV].[PAID_FLG]=0 And [MJM_SCHOOL].[ROW_ID] IN (select row_id from mjm_school as sc where sc.active_flg = -1 and sc.billing_flg = -1 and sc.payment_type = 'Individual') And [MJM_ATTEND_PAY_INDIV].[BILLING_MONTH]=[Date])));
|
|
|
|
|