It seems that your tables are linked with PersonID, so when you filter "Task Date" in table1 you get all the values of salary corresponding to that person irrespective of date.
To solve this problem you have to link both tables with a key that is made up by a combination of PersonID and Date.
Here is a sample code you could try.
Person & '|' & num(TaskDate) as Key
Person & '|' & num(SalaryDate) as Key
Drop Field Person From Table1; //This is important to avoid syn key.
Num function is used so that dates in both the Key are in same format.
If you want to link them on basis of month instead of date just use MonthSerial in creating Key.
Best way to create uMonthSerial is using ( Year(Date)* 12 ) + num(month(Date)).
Hope it helps.
Perhaps the easiest solution is to concatenate the two tables and then generate a common calendar,
TaskDate as Date
(html, codepage is 1252, embedded labels, table is @1);
SalaryDate as Date
(html, codepage is 1252, embedded labels, table is @2);
CALL CalendarFromField('Date', 'CommonCalendar', '');
You can also use a linktable as shown in the tutorial you referenced, but the linkkey will need to be Person&Date,
The attached example shows both the Concatenated and LinkTable solutions,