This is a pervasive problem in St. Louis City, and frankly, I think it is unethical of the prosecutor's office. They tend to file a case one way while waiting for a preliminary hearing, then they also seek a grand jury indictment on the same case. They then keep pushing off the preliminary hearing, and the judges allow this to happen.
As soon as I am able to get a case where this is happening, I will consider a motion to disqualify for ethical violation and a writ to the court of appeals to decide on whether this practice is allowed.
In answer to your question, I am assuming a complaint was actually filed as well. There is no time limit to having a preliminary hearing per se. It just has to be without delay, though, there is no case really specifying delay. So, conceivably, your answer cannot be answered. However, you might have your friend hire an attorney. The attorney will file a motion for speedy trial, and after that, there is a 6 month time limit.