SELECT patient_master SET ORDER TO NAME GO TOP IN patient_master SCAN FOR !EMPTY(date_birth) DO CASE CASE MONTH(date_birth) < MONTH(DATE()) lnYearModifier = 1 CASE MONTH(date_birth) = MONTH(DATE()) IF DAY(date_birth) < DAY(DATE()) lnYearModifier = 1 ELSE lnYearModifier = 0 ENDIF OTHERWISE lnYearModifier = 0 ENDCASE ldBirthday = CTOD(ALLTRIM(STR(MONTH(date_birth))) + "/" + ALLTRIM(STR(DAY(date_birth))) + "/" + ALLTRIM(STR(YEAR(DATE()) + lnYearModifier))) IF BETWEEN(ldBirthday,DATE(),DATE() + VAL(THISFORM.pgfReport.LabelsPage.cntOptions.txtInfo3.VALUE)) APPEND BLANK IN mailinglabels REPLACE NAME WITH ALLTRIM(patient_master.first_name) + " " + ALLTRIM(patient_master.last_name), ; address1 WITH ALLTRIM(patient_master.address_1), ; address2 WITH ALLTRIM(patient_master.address_2), ; citystzip WITH ALLTRIM(patient_master.city) + ", " + ALLTRIM(patient_master.state) + " " + ALLTRIM(patient_master.zip_code) IN mailinglabels ENDIF ENDSCANMaybe a UDF in the SQL Select that returns the modified Birtdate (using the code above as a guide), then in the WHERE clause using the Between statement...?
>SELECT * FROM mytable ; > WHERE DATE(YEAR(DATE()), MONTH(birthdate), DAY(birthdate)) BETWEEN DATE() AND DATE() + 30 >>>