You seem to have two interconnected issues:
Comparing the values in Last Given to LastThanked in each record
Finding records where LastThanked contains a date that is more than 45 days old.
I am interpreting that to mean that you want to find all records where LastGiven contains a later date than LastThanked and for which the date in LastThanked is more than 45 days old.
Define a calculation field:
LastThanked < Last Given
Select Number as the return type. Clear the "do not evaluate if all referenced fields are empty" check box. We'll call it cThankedFlag
Now you can find all records where LastThanked is empty or contains a date that is earlier than Last Given by entering find mode and specifying a 1 in this field.
Use this calculation in a script to find all records where LastThanked is older than 5 days:
"<" & Get ( CurrentDate ) - 45
Step 3: combine both criteria in one script:
Enter FInd Mode-->Clear the pause check box
Set Field [DonorManageMent::cThankedFlag ; 1 ]
Set Field [DonorManagement::LastThanked ; "<" & Get ( CurrentDate ) - 45 ]
Set Error Capture [on]
Perform Find 
Thank you very much. This has given me what I needed to figure out what I was doing wrong. I've got some refining to do, but you got me un-stuck! I appreciate your help.