You are using the version of DateToStr() that relies on the user's current OS locale settings. DBs have particular formats that they expect date/time strings to be expressed in, and the OS's locale settings might not match those formats. You can use the overloaded version of DateToStr() that takes a TFormatSettings as input so you can specify the exact formatting of the output string (via the TFormatSettings.ShortDateFormat member):
var
fmt: TFormatSettings;
ExpireDate: string;
fmt := TFormatSettings.Create;
fmt.ShortDateFormat := 'yyyy-mm-dd';
ExpireDate := DateToStr(IncYear(Today,1), fmt);
Also, date/time strings need to be wrapped in quotes in SQL statements. You can use the QuotedStr() function for that purpose.
But more importantly, your INSERT statement is malformed anyway.
If you are trying to add a new record, it needs to look more like this instead:
datamodule1.qryDB1.SQL.Text := 'INSERT INTO table (Member_ID, Member_ExpireDate) VALUES (' + SomeIDValue + ', ' + QuotedStr(ExpireDate) + ')';
Otherwise, if you are trying to modify an existing record, you need to use an UPDATE statement instead:
datamodule1.qryDB1.SQL.Text := 'UPDATE table SET Member_ExpireDate = ' + QuotedStr(ExpireDate) + ' WHERE Member_ID = ' + SomeIDValue;
Either way, it would be best to use a parameterized query instead. Let the DB itself handle all of the necessary formatting for you:
datamodule1.qryDB1.SQL.Text := 'INSERT INTO table (Member_ID, Member_ExpireDate) VALUES (:MemberID, :ExpireDate)';
datamodule1.qryDB1.ParamByName('MemberID').AsInteger := SomeIDValue; // or whatever data type your field uses
datamodule1.qryDB1.ParamByName('ExpireDate').AsDate := IncYear(Today,1);
datamodule1.qryDB1.ExecSQL;
datamodule1.qryDB1.SQL.Text := 'UPDATE table SET Member_ExpireDate = :ExpireDate WHERE Member_ID = :MemberID';
datamodule1.qryDB1.ParamByName('ExpireDate').AsDate := IncYear(Today,1);
datamodule1.qryDB1.ParamByName('MemberID').AsInteger := SomeIDValue; // or whatever data type your field uses
datamodule1.qryDB1.ExecSQL;
DateTime?