R
RobertG
Hi all,
I am receiving "Error 93: Invalid use of null" when trying to run a query
with criteria in a certain field; the query runs fine without the criteria,
but not so much when I try to specify one.
The expression of the field in question is:
Period: CStr(IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,Format(DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),"qyyyy"),5
& DatePart("yyyy",[TrainingDate])+3)))
The full SQL is:
SELECT tblTraining.StaffID, tblStaff.LName & ", " & tblStaff.FName AS
StaffName, tblTrainingType.TrainingType, tblTraining.TrainingType,
tblFrequency.Frequency, tblStaff.AnniversaryDate, tblTraining.TrainingDate,
IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),DateSerial(Year([TrainingDate])+3,12,31)))
AS DueDate, CStr(IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,Format(DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),"qyyyy"),5
& DatePart("yyyy",[TrainingDate])+3))) AS Period
FROM (tblFrequency RIGHT JOIN tblTrainingType ON tblFrequency.FrequencyID =
tblTrainingType.Frequency) RIGHT JOIN (tblStaff LEFT JOIN tblTraining ON
tblStaff.StaffID = tblTraining.StaffID) ON tblTrainingType.TrainingTypeID =
tblTraining.TrainingType
WHERE (((IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),DateSerial(Year([TrainingDate])+3,12,31))))>=Date())
AND ((CStr(IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,Format(DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),"qyyyy"),5
& DatePart("yyyy",[TrainingDate])+3))))=fPeriod()) AND
((tblFrequency.FrequencyID)=2)) OR (((IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),DateSerial(Year([TrainingDate])+3,12,31))))>=Date())
AND ((CStr(IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,Format(DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),"qyyyy"),5
& DatePart("yyyy",[TrainingDate])+3))))=fPeriod()) AND
((tblFrequency.FrequencyID)=3))
ORDER BY tblTraining.StaffID;
Any ideas why this query will run under one circumstance, but not another?
Feel free to ask any questions or request more info, if need. Your help is
greatly appreciated!
Thanks,
Robert
I am receiving "Error 93: Invalid use of null" when trying to run a query
with criteria in a certain field; the query runs fine without the criteria,
but not so much when I try to specify one.
The expression of the field in question is:
Period: CStr(IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,Format(DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),"qyyyy"),5
& DatePart("yyyy",[TrainingDate])+3)))
The full SQL is:
SELECT tblTraining.StaffID, tblStaff.LName & ", " & tblStaff.FName AS
StaffName, tblTrainingType.TrainingType, tblTraining.TrainingType,
tblFrequency.Frequency, tblStaff.AnniversaryDate, tblTraining.TrainingDate,
IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),DateSerial(Year([TrainingDate])+3,12,31)))
AS DueDate, CStr(IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,Format(DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),"qyyyy"),5
& DatePart("yyyy",[TrainingDate])+3))) AS Period
FROM (tblFrequency RIGHT JOIN tblTrainingType ON tblFrequency.FrequencyID =
tblTrainingType.Frequency) RIGHT JOIN (tblStaff LEFT JOIN tblTraining ON
tblStaff.StaffID = tblTraining.StaffID) ON tblTrainingType.TrainingTypeID =
tblTraining.TrainingType
WHERE (((IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),DateSerial(Year([TrainingDate])+3,12,31))))>=Date())
AND ((CStr(IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,Format(DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),"qyyyy"),5
& DatePart("yyyy",[TrainingDate])+3))))=fPeriod()) AND
((tblFrequency.FrequencyID)=2)) OR (((IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),DateSerial(Year([TrainingDate])+3,12,31))))>=Date())
AND ((CStr(IIf([TrainingDate] Is
Null,Null,IIf([FrequencyID]=2,Format(DateSerial(Year([TrainingDate])+1,Month([AnniversaryDate]),Day([AnniversaryDate])),"qyyyy"),5
& DatePart("yyyy",[TrainingDate])+3))))=fPeriod()) AND
((tblFrequency.FrequencyID)=3))
ORDER BY tblTraining.StaffID;
Any ideas why this query will run under one circumstance, but not another?
Feel free to ask any questions or request more info, if need. Your help is
greatly appreciated!
Thanks,
Robert