PDA

View Full Version : گزارشگیری از DataGradeView



djhooman
چهارشنبه 19 مرداد 1390, 01:42 صبح
سلام

نماز و روزهاتون قبول باشه

دوستان گل یه تشکر ویژه میکنم ازتون که خیلی چیزا بهم یاد دادید ...

یه سوال دارم ...

من توی فرمم که اطلاعات وارد میشه ، دو تا تکست باکس دارم که توی این دوتا تکست باکس تاریخ رو باید وارد کنم ( یه بازه ی تاریخی مثلا از 1390/03/01 و دومی 1390/04/01 ) ....
میخوام تمام رکورد هایی که توی یه بازه خاص تاریخی وارد میشه رو برام لیست کنه همونجوری که تو دیتاگردویو هست و بتونم خروجی ازش تو اکسل بگیرم ....

یعنی فیلد اول یه تاریخی میزنیم ، فیلد دوم هم یه تاریخ ، توی این بازه هرچی رکورد ثبت شده رو برام لیست کنه ...
درضمن ، قسمت وارد کردن تاریخ هم از سیستم تاریخ شمسی vb.net استفاده شده ...

ممنون میشم کمکم کنید .

Behzad_MCP
چهارشنبه 19 مرداد 1390, 10:04 صبح
djhooman عزیز ، راههای رسیدن به خدا زیاده ! من سعی میکنم یه همچین چیزیو تو دستور Select که از DB میگیرم بنویسم و دقیقا همون رکوردهایی که میخوامو برگردونم یا اینکه همه رکوردهای موجود تو اون تیبل رو بخونم و با DataView و با استفاده از Filter تو اون بازه زمانی رو بخونم :)

monirprogram
چهارشنبه 19 مرداد 1390, 13:45 عصر
با select جواب میده.
select * from tableName where tim1<=time and time2>=time

djhooman
چهارشنبه 19 مرداد 1390, 19:14 عصر
من یکم سطحم مبتدیه ....

اگه امکانش هست بگید چیکار کنم ....
از کجا شروع کنم .....

djhooman
پنج شنبه 20 مرداد 1390, 11:29 صبح
1- منظورم اینه که چه کدی بکار ببرم که اطلاعات یه بازه ی زمانی رو برام تو دیتاگرید ویو بیاره
2 - اون اطلاعاتی که توی دیتاگرید ویوو برام میاره رو خروجی بتونم تو اکسل بگیرم ....

monirprogram
پنج شنبه 20 مرداد 1390, 13:51 عصر
dim con as new sqlconnection("reshte etesal)
dim str as string ="select * from tableName where tim1<=time and time2>=time "
dim com as new sqlcommand(str,con)
}اینجا رو یادمنیست باید آداپتور تعریف بشه یا reader
Dim ds As New DataSet
ds.Tables.Add(t)
DataGridView1.DataSource = t

djhooman
پنج شنبه 20 مرداد 1390, 23:40 عصر
دیتابیس من Access هستش .....

لطفا اگر امکان داره کامل تر برام کدش و بذارید ....

ممنونم

djhooman
جمعه 21 مرداد 1390, 11:56 صبح
دیتابیس من Access هستش .....

لطفا اگر امکان داره کامل تر برام کدش و بذارید ....

ممنونم
چیکار کنم ؟؟؟؟

monirprogram
شنبه 22 مرداد 1390, 13:31 عصر
راستش کدش یادم نیست، اما سعی میکنم تا غروب برات بزارم. فقط برای اینکه اکسس هست،شما باید کلمه sql رو به OLEDB تغییر بدی. یعنی
oledbconnection یا OLEDBCOMMAND . کد کاملش رو برات میزارم/

djhooman
شنبه 22 مرداد 1390, 22:49 عصر
من میخوام بددونم چه کد هایی رو باید استفاده کنم .....

همین .

یعنی توی رویداد Button1 ام ، چه کدی بزنم که تمام رکورد های یه تاریخ مشخص رو برام بیاره ...

monirprogram
یک شنبه 23 مرداد 1390, 08:19 صبح
public sub Dataview()
dim str as string
str="reshte etesal ro bayad bezari inja"
dim con as new oledbconnection (str)
str="select * from tableName where tim1<=time and time2>=time "
dim da as new oledbAdapter(str,con)
dim dt as datatable
da.fill(dt)
datagridview1.datasource=dt
end sub


کافیه جایی که میخوای عمل جستجو انجام بشه ، این تابع رو فراخوانی کنی. و اینکه من نمیدونم رشته اتصال در اکسس چی هست. و اینکه شما چطور میتونی این رو در اکسس فراخوانی کنی. بااین فقط داخل گریدویو نشون میده. برای بقیه موارد دوستان باید راهنمایی کنن

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

z.gh_user
یک شنبه 23 مرداد 1390, 12:21 عصر
سلام
پر کردن گرید:


Public Sub full_dgv()
Dgv1.Rows.Clear()
Dim drp1 As SqlClient.SqlDataReader
SqlCommand1.Connection = SqlConnection1
If (txtFromDate.Text <> "" And txtToDate.Text <> "") Then
SqlCommand1.CommandText = "select * from tabel where (day_date >='" & txtFromDate.Text & "') and (day_date<='" & txtToDate.Text & "')"
end If
Try
Dim i As Integer = 0
drp1 = SqlCommand1.ExecuteReader()
If drp1.HasRows Then
While drp1.Read
i = Dgv1.Rows.Add
Dgv1.Rows(i).Cells(0).Value = i + 1
Dgv1.Rows(i).Cells(1).Value = drp1("sh_parvandeh")
If drp1.IsDBNull(drp1.GetOrdinal("name_family")) = False Then
Dgv1.Rows(i).Cells(2).Value = drp1("name_family")
End If
If drp1.IsDBNull(drp1.GetOrdinal("day_date")) = False Then
Dgv1.Rows(i).Cells(3).Value = drp1("day_date")
End If
End While

End If
If drp1.IsClosed = False Then
drp1.Close()
End If
Catch ex As SqlClient.SqlException
MsgBox(ex.ToString)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
Exit Sub
End Sub


و ذخیره اطلاعات در حافظه موقت:



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim str1 As String = ""
Dim k As Integer = 0
Dim j As Integer = 0
Do
Do
str1 = str1 & Dgv1.Rows(j).Cells(k).Value.ToString & Convert.ToChar(9)
k += 1
Loop While k < Dgv1.Columns.Count
k = 0
str1 = str1 & Convert.ToChar(13)
j += 1
Loop While j < Dgv1.Rows.Count
If str1 <> "" Then
Clipboard.SetText(str1)
MessageBox.Show("اطلاعات در حافظه موقت ذخیره شد", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1, MessageBoxOptions.RtlReading)
End If
End Sub

djhooman
دوشنبه 24 مرداد 1390, 00:10 صبح
این کد هایی که لطف کردید گذاشتید برای بانک SQL هست ....

دیتابیس من Access هستش ....

استاد گرانمایه Alimanam فکر کنم بتونه کمکم کنه .....

monirprogram
دوشنبه 24 مرداد 1390, 08:24 صبح
هر جا sql دذیدی بزارoledb همین. مگه فرقی دارن بانک sql و اکسس؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

djhooman
دوشنبه 24 مرداد 1390, 18:05 عصر
بله

این کاری که گفتید و کردم ، اما 1000 تا خط اررور میده ....

Alimanam فقط میتونه کمکم کنه فکر کنم ..

djhooman
دوشنبه 24 مرداد 1390, 23:48 عصر
البته قصد جسارت به دوستان نداشتما

alimanam
سه شنبه 25 مرداد 1390, 21:37 عصر
با سلام


Alimanam فقط میتونه کمکم کنه فکر کنم .. این دیگه از اون هندونه ها بود ها.... :قهقهه:

از این کدهم استفاده کن شاید به نتیجه رسیدی و باغ هندونه ات رو تکمیل کردی عزیز ! :متعجب:

http://www.hostpic.org/images/620880.png

Public Class Form1
''' <summary>
''' Coding By : Ali Dakhilzadeh
''' Date : 1390/05/25
''' Enjoy It !
''' </summary>
''' <remarks></remarks>
Private cnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb")
Private Function FilterDate(ByVal date1 As String, ByVal date2 As String) As DataTable
Dim ad As New OleDb.OleDbDataAdapter("Select * from Table1 Where date1 >='" & date1 & "' And date2 <='" & date2 & "' Order By id ASC", cnn)
Dim dt As New DataTable
ad.Fill(dt)
Return dt
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataGridView1.DataSource = FilterDate(TextBox1.Text, TextBox2.Text)
Dim cr As New CrystalReport1
cr.SetDataSource(FilterDate(TextBox1.Text, TextBox2.Text))
CrystalReportViewer1.ReportSource = cr

End Sub
Private Function LoadData() As DataTable
Dim ad As New OleDb.OleDbDataAdapter("Select * from Table1", cnn)
Dim dt As New DataTable
ad.Fill(dt)
Return dt
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DataGridView1.DataSource = LoadData()
Dim cr As New CrystalReport1
cr.SetDataSource(LoadData())
CrystalReportViewer1.ReportSource = cr
End Sub
End Class

موفق باشید ./

djhooman
چهارشنبه 26 مرداد 1390, 01:21 صبح
Alimanam جان مرسی از راهنماییت ...

کد ها و ساختار و من از چیزی که دادی مطابق با دیتابیسم تغییر دادم یه این صورت :

Private cnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\db.mdb")
Private Function FilterDate(ByVal Tarikh1 As String, ByVal Tarikh2 As String) As DataTable
Dim ad As New OleDb.OleDbDataAdapter("Select * from Gavahi Where Tarikh >='" & Tarikh1 & "' And Tarikh <='" & Tarikh2 & "' Order By id ASC", cnn)
Dim dt As New DataTable
ad.Fill(dt)
Return dt
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataGridView1.DataSource = FilterDate(TextBox1.Text, TextBox2.Text)
' Dim cr As New CrystalReport1
' cr.SetDataSource(FilterDate(TextBox1.Text, TextBox2.Text))
' CrystalReportViewer1.ReportSource = cr

End Sub
Private Function LoadData() As DataTable
Dim ad As New OleDb.OleDbDataAdapter("Select * from Gavahi", cnn)
Dim dt As New DataTable
ad.Fill(dt)
Return dt
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DataGridView1.DataSource = LoadData()
' Dim cr As New CrystalReport1
' cr.SetDataSource(LoadData())
' CrystalReportViewer1.ReportSource = cr
End Sub


حالا برنامه رو Build کردم و رفتم به فرمم ، اما اررور زیر میاد وقتی جستجو رو میزنم ....


See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.Data.OleDb.OleDbException (0x80040E10): No value given for one or more required parameters.
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextE rrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextF orSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText( Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(Comm andBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderIntern al(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteReader(Comma ndBehavior behavior)
at System.Data.OleDb.OleDbCommand.System.Data.IDbComm and.ExecuteReader(CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.FillInternal(Data Set dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
at Electronic_Office.Gavahi_Sooratvaziat.FilterDate(S tring Tarikh1, String Tarikh2) in C:\Users\Hooman\Desktop\New Version\E-Office\Electronic Office\Gavahi-Sooratvaziat.vb:line 14
at Electronic_Office.Gavahi_Sooratvaziat.Button1_Clic k(Object sender, EventArgs e) in C:\Users\Hooman\Desktop\New Version\E-Office\Electronic Office\Gavahi-Sooratvaziat.vb:line 18
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventAr gs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

djhooman
چهارشنبه 26 مرداد 1390, 01:29 صبح
اگه امکانش هست ببینید من کدها رو درست عوض کردم یا نه ؟؟؟

djhooman
چهارشنبه 26 مرداد 1390, 01:40 صبح
درضمن فکر کنم اشتباه منظور من رو برداشت کرده باشید ...

من توی تیبل Gavahi ، این فیلد ها رو دارم ( ش پرونده ، درخواست ، مالک ، مبلغ دریافتی ، تاریخ پرداخت ) ....
حالا توی فرم ورود اطلاعاتم میام اطلاعات دریافتی 1 ماه رو وارد میکنم ...
مثلا شماره پرونده 1 ، درخواست وام ، مالک هومن ، مبلغ 100000 ، تاریخ پرداخت 1390/05/25
و
مثلا شماره پرونده 2 ، درخواست وام ، مالک علی ، مبلغ 100000 ، تاریخ پرداخت 1390/05/20
و
مثلا شماره پرونده 3 ، درخواست وام ، مالک حسین، مبلغ 100000 ، تاریخ پرداخت 1390/05/15

حالا توی فرم گزارشگیریم دوتا تکست باکس دارم ، توی اونا این مقدار و وارد می کنم ... یکی 1390/05/15 و اون یکی هم 1390/05/20
حالا میخوام برنامه بره تو دیتابیس سرچ کنه و اگه فلان رکورد تاریخ پرداخت اش بین بازه ی زمانی 1390/05/15 و 1390/05/20 بود رو برام تو DGV نشون بده ....
( دوباره تاکید میکنم ، من توی تیبلم ، دو تا فیلد برای تاریخ ندارم ، کلا یه فیلد تاریخ دارم که میخوام اون و بواسطه بازه تاریخی که بهش میدم فیلتر کنم ....

ممنون

alimanam
چهارشنبه 26 مرداد 1390, 18:38 عصر
برنامه رو آپ کن ببینم مشکلش چیه .

djhooman
پنج شنبه 27 مرداد 1390, 00:34 صبح
علی جان برات پ.خ برات فرستادم .....
مرسی

alimanam
پنج شنبه 27 مرداد 1390, 19:03 عصر
برنامه رو واست تغییر دادم .

موفق باشید ./

ahmadreza517
پنج شنبه 27 مرداد 1390, 19:27 عصر
سلام دوست عزیز به آدرس زیر سر بزن -پروژه کامل(گزارشگیری دینامیک)
http://howprg.blogfa.com/post-11.aspx (http://howprg.blogfa.com/post-11.aspx)

djhooman
جمعه 28 مرداد 1390, 01:01 صبح
مرسی......

M.KH-SH
یک شنبه 30 مرداد 1390, 03:11 صبح
دوست عزیز به صورتی که داری بانک رو فراخوانی می کنی یک کوئری بنویس که تاریخ ها باشه
برای ایکه بین 2 تا بازه می خوای باید 2 تا ظرف متغییر تعریف کنی که هر کدوم از تاریخ ها برن تو یکی بعد در قسمت کوئری اسم متغییر ها رو بنویس



Dim con As OleDbConnection
Dim da As New OleDbDataAdapter
Dim ds As New DataSet
Dim str As String

Dim time1, time2 As String


ds.Reset()
con = New OleDbConnection("آدرس بانک")
str = "select * from tableName where tim1 like '" & time1 & "%' and tim1 like '" & time2 & "%' "
con.Open()
da = New OleDbDataAdapter(str, con)
da.Fill(ds, "name jadvalet")
con.Close()
DataGridView1.DataBindings.Clear()
DataGridView1.DataBindings.Add(New Binding("Datasource", ds, "name jadvalet"))

ahmadreza517
یک شنبه 30 مرداد 1390, 18:06 عصر
به نام تنها برنامه نویس هستی
دوست عزیز سلام

برای گزارشگیری از اطلاعات، Ebook رو از آدرس زیر دانلود کن
http://howprg.blogfa.com/cat-7.aspx

پروژه کامل
http://howprg.blogfa.com/cat-13.aspx