اتفاقا من هم همین مشکل شما رو داشتم. آخرین کاری که حوصله انجامش رو داشتم این بود که در زمان اجرای برنامه یک دیتاست می ساختم. حالا هرجوری که می خواستم می تونستم دستور اس کیو رو بنویسیم. مثلا یک دیتاست می ساختم با دستور اس کیو ال مثل زیر.
Dim c AsNew mycrystalreport
dim strsel as string = "select name,famili,id from tabel1 weher name like'%a%'"
dim da as new sqldataadapter (strsel,mycon)
dim ds as new dataset
mycon.open
da.fill(ds,"tbl1")
mycon.close
crp.SetDataSource (ds.table("tbl1"))
البته در دستوراتی که بیش از اطلاعات رو بیشتر از یه جدول بر می گردونه کمی قضیه فرق می کنه.