While I don't know what you want to achieve, the first thing you might want to do is to use a SCAN, to simplify your code. When you process several records, a SCAN is usually preferable over a DO WHILE. For instance, to process all records that satisfy your condition:
>
scan for FOR (mstr.inname) = ;
(thisform.pageframe1.page1.text1.Value);
and mstr.nam1 =thisform.pageframe1.page1.text4.Value and;
between(mstr.datein, thisform.pageframe1.page1.text3.value,thisform.pageframe1.page1.text5.value );
m.a=mstr.innoumber
? m.a ,mstr.innoumber
wait
m.b=mstr.price
m.c=total
ENDDO
REPORT FORM mstr22 preview
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)