you need to be using the replace function in the where clause, by using it in the select clause, you are only effecting the output data.
Keep in mind that the Data engine that executes the SQL Statement does not execute the query in the same order it is written
First it looks at the FROM statement, including the INNER JOINS, then filters the data from all of the table included using the WHERE clause, finally it looks at the select clause and returns only those columns.
this is why the where clause can act on columns that are not included in the select clause.
SELECT tblhouseinfo.BedRooms, tblhouseinfo.BathRooms, tblhouseinfo.list_price, tblinventory.* FROM tblhouseinfo JOIN tblinventory ON tblinventory.invId = tblhouseinfo.addInfoID WHERE tblinventory.mid = 10 AND (replace(list_price, ',' , '') >= 24000) AND (replace(list_price, ',' , '') <= 45000)
should give the result you are after.