# مباحث متفرقه برنامه نویسی > گزارش سازی با Crystal Report >  پاس دادن يك datasource به crystalreport

## eli_dani22

chetori mishe be crystal ye datasource pass dad va bad az field haye DS estefade kard?????????? :خجالت:

----------


## MORTEZA66

اينو قبلا براي يكي از دوستان نوشتم مثل اينكه خيلي بدردش خورد اميدوارم براي شما هم مفيد باشه 

اول از همه دو تا متغير زير رو براي كار با ديتاست و دستورات SQL تعريف كنيد  و يه كم مقدار دهي كنيد

DIM dap1 As New SqlClient.SqlDataAdapter
DIM dset1 As New DataSet
dap1.SelectCommand = New SqlClient.SqlCommand
dap1.SelectCommand.Connection = con ‘Connection name


يك شي يا هر چي از نوع گزارشتون تعريف مي كنيد

Dim rpt As New kolRpt

بعد براي اينكه موقع نمايش گزارش كادر User و Pass نياد خط زير رو كه فكر مي كنم همش واضح باشه مي نويسيد

rpt.DataSourceConnections.Item(0).SetConnection(se  rver, database, username, pass)

بعد دستور SQL رو مي سازيد

sqltext = "select name,family,fathername from main_tlb Where id=1"

بعد متغيرهايي كه در ابتدا براي كار با ديتاست و دستورات SQL ساختيد رو به صورت زير مقدار دهي مي كنيد

dset1.Dispose()
dset1 = New DataSet
dap1.SelectCommand.CommandText = sqltext
dset1.Clear()
dap1.Fill(dset1, "main_tlb")
rpt.SetDataSource(dset1)


بعد هم RPT رو كه در واقع يك گزارش است به هر گزارشي كه دلتون مي خواد براي ديدن پيش نمايش نسبت مي ديد

frm.viewrep1.ReportSource = rpt
frm.Show()

----------


## ali_mnkt

با سلام

آقای mortezza66 اگه 2 تا جدول داشته باشیم که بخواهم حاصل تjoin اونها رو نمایش بدیم چی

( با استفاده از همین dataset) ؟ من از همین روش استفاده کردم ولی اطلاعات یک جدول رو فقط

نمایش می ده!!!!

آیا شما تونستید برای چند جدول جواب بگیری؟

( نمی دونم شاید مشگل مربوط به قسمت پر کردن dataAdaptor باشه چون توی اون باید نام

یک جدول رو بنویسی؟)

----------


## ali_mnkt

کسی گزارش از join دو جدول با استفاده از dataset نگرفته که مشگل نداشته باشه؟

----------


## niloofar norouzi

> کسی گزارش از join دو جدول با استفاده از dataset نگرفته که مشگل نداشته باشه؟


سلام من از view استفاده کردم مشکلم حل شد.

----------


## MORTEZA66

> با سلام
> 
> آقای mortezza66 اگه 2 تا جدول داشته باشیم که بخواهم حاصل تjoin اونها رو نمایش بدیم چی
> 
> ( با استفاده از همین dataset) ؟ من از همین روش استفاده کردم ولی اطلاعات یک جدول رو فقط
> 
> نمایش می ده!!!!
> 
> آیا شما تونستید برای چند جدول جواب بگیری؟
> ...


جداول حاصل از join رو به يك جدول تبديل كنيد و نام اون رو بنويسيد به همين راحتي 
و يا اگر دو جدول جداگانه استفاده مي كنيد اوني كه تعداد فيلدهاش كمتره رو فيلدهاش رو به شكل پارامتر ارسال كنيد

----------


## ali_mnkt

چطور جدول حاصل از join رو به یک جدول تبدیل کنم؟

یعنی یک جدول temp در نظر بگیرم و حاصل join رو تو اون بریزم و اون رو نمایش بدم؟

----------


## niloofar norouzi

> چطور جدول حاصل از join رو به یک جدول تبدیل کنم؟
> 
> یعنی یک جدول temp در نظر بگیرم و حاصل join رو تو اون بریزم و اون رو نمایش بدم؟


من قبلا خدمتتون عرض کردم که با view می تونید این کارو کنید

create view v1
as
{ 
select t.fname,tb.code from table1 t
join table2 tb
on t.code=tb.code
}
go

----------


## davoodrm666_666

سلام آقا من گزارشی دارم که در هر بار اجرا باید یک جدول رو پر کنم که اون جدول به فایل کریستال من متصل هست حالا من می خواهم در زمان اجرا بتونم نام جدول رو عوض کنم که دقیقا همون فیلدهای جدول اول در جدول جدید هم هست چطوری میشه با کد این کار رو کرد

----------


## davoodrm666_666

آقا کسی نیست راهنمای کنه ؟

----------


## karbar987654321

> اينو قبلا براي يكي از دوستان نوشتم مثل اينكه خيلي بدردش خورد اميدوارم براي شما هم مفيد باشه 
> 
> اول از همه دو تا متغير زير رو براي كار با ديتاست و دستورات SQL تعريف كنيد و يه كم مقدار دهي كنيد
> 
> DIM dap1 As New SqlClient.SqlDataAdapter
> DIM dset1 As New DataSet
> dap1.SelectCommand = New SqlClient.SqlCommand
> dap1.SelectCommand.Connection = con ‘Connection name
> 
> ...


__________________________________________________  _______
من این کارو کردم ولی مثل اینکه کریستال اصلا به شرط where توجهی نمی کنه!!!!!!
چه باید کرد؟

----------


## hesamodin1381

دوست عزیز اگر من با استفاده استور پروسیجر و Linq  و Dataset  بخواهم با کریستال ریپورت گزارش بگیرم باید چه کدی بنویسم

----------


## hesamodin1381

linqTestDataContext
 







 linqTest = newlinqTestDataContext();       

 



var mySample = linqTest.SP_Test(Convert.ToInt32(txtTest.Text));                              

 



SqlCommand cmd =linqTest.GetCommand(mySample) asSqlCommand;                               
 



SqlDataAdapter da =newSqlDataAdapter(cmd);

 



DataTable dt = newDataTable();

                da.Fill(dt);

               Report.SetDataSource(dt);   



من کد بالا را نوشتم جواب نمیده اگه امکان داره یک نفر خواهشن جواب من را بده

----------

