It isn't clear to me what you want to achieve and what project is doing "wrong" when you do something.
As Francisco says you can use Manual scheduled tasks to do almost anything but they're the work of the devil to be honest :)
If you type a date into the start field (thereby setting a should not start before constraint) and then enter a finish date a duration will be calculated. After this point if you change ither either the start or finish date the duration will remain the same and the other date will change.
However if you enter a start date and have any %complete the changing the finish date will chaneg the duration. ALso changing the duraation will chaneg the finish date.
If you get into the annoying position of needing the change the start and finish date you can end up pinging between the two as the duraation will remain constant. In this situation you can a) plahy with the duration until the finsh is where you want it to be, 2) put 10% onto the %complete and change the finish to force the duration to the right point and thn remove the % complete. You may also be able to delete both dates to remove the constraint and start again. Yu can also enter he task details dialogue and chnage the dates there.
One thign to note is that it is generally good prctice to use the predecesor and successor links to drive dates, only adding date constraints if you have to.
If this doesn't help can you give us more invo on what you're doing what project does in return and what you wish it was doing :)