PDA

View Full Version : نشان دادن نتیجه جستجو ی مختلف با یک دیتا گرید



aknj56
سه شنبه 15 فروردین 1391, 11:16 صبح
با سلام و تبریک سال نو
دوستان من برای جستجو از کو مبو باکس استفاده کردم و توش دو تا موضوع نامه های صادره و نامه های وارده گذاشتم و میخام نتیجه رو توی یک دیتا گرید نشون بده یعنی اگر صادره را زدیم فقط گزینه های نامه های صادره از قبیل تاریخ صدور و غیره ر انشون بده و گزینه های نامه های وارده رو مثل تاریخ ورود دیگه نشون نده که دوست عزیزم آقای ابراهیمی برام کد گذاشتم و من با توجه به اون مواردی که میخاستم توش دست بردم حالا یک ایرادهایی میگیره حالا این کد رو من میزارم لطفا راهنمایی کنید یک ایراد که میگیره در اینجاست:
.SelectCommand.ExecuteNonQuery()
این هم کدهای مورد نظر

Imports System.Data.OleDb
Public Class serch

Function Search(ByVal FieldName As String, ByVal SearchFor As String, ByVal sORv As String) As DataSet1
Dim oledbDataAdapter1 As New OleDbDataAdapter
Dim cnn As New OleDbConnection
With oledbDataAdapter1
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\dabirkhaneh.accdb"
cnn.Open()
.SelectCommand = New OleDbCommand
.SelectCommand.Connection = cnn
.SelectCommand.CommandType = CommandType.Text
If sORv = "نامه های وارده" Then
.SelectCommand.CommandText = "Select varedeh as [نامه های وارده],tarikhvorod as [تاریخ ورود],ferestandeh as [فرستنده], khetab as [خطاب نامه],emzae as[امضاء کننده],payvast as [پیوست],erja as [ارجاع به],mozo as [موضوع و شرح نامه] from varedeh Where " & FieldName & " like '%" & SearchFor & "%'"
Else
.SelectCommand.CommandText = "Select sadereh as [نامه صادره ],tarikhsodor as [تاریخ صدور],girandeh as[گیرنده],khetab as[خطاب نامه],emza as [امضاء کننده],payvast as [پیوست],mozo as [موضوع و شرح نامه] from sadereh where " & FieldName & " like '%" & SearchFor & "%'"
End If
If .SelectCommand.Connection.State <> ConnectionState.Open Then
.SelectCommand.Connection.Open()
End If
.SelectCommand.ExecuteNonQuery()
Dim ds As New DataSet1
oledbDataAdapter1.Fill(ds)
Return ds
End With

End Function

Private Sub serch_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim da As New OleDbDataAdapter
da.SelectCommand = New OleDbCommand()
Dim cnn As New OleDbConnection
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\dabirkhaneh.accdb"
cnn.Open()

With da.SelectCommand
.Connection = cnn
.CommandType = CommandType.Text
.CommandText = "select sadereh as [نامه صادره ],tarikhsodor as [تاریخ صدور],girandeh as[گیرنده],khetab as[خطاب نامه],emza as [امضاء کننده],payvast as [پیوست],mozo as [موضوع و شرح نامه] from sadereh and varedeh as [نامه های وارده],tarikhvorod as [تاریخ ورود],ferestandeh as [ فرستنده], khetab as [خطاب نامه],emzae as[امضاء کننده],payvast as [پیوست],erja ad [ارجاع به],mozo as [موضوع و شرح نامه] from varedeh"

If .Connection.State <> ConnectionState.Open Then
.Connection.Open()
End If
End With

' Dim ds As New DataSet1
' da.Fill(ds)

' DataGridView1.DataSource = ds

' cnn.Close()
End Sub

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
If TextBox1.Text.Trim() = String.Empty Then

serch_Load(Nothing, Nothing)

Else

If ComboBox1.SelectedIndex = 0 Then
DataGridView1.DataSource = Search("sadereh", TextBox1.Text.Trim(), "نامه های صادره")
ElseIf ComboBox1.SelectedIndex = 1 Then
DataGridView1.DataSource = Search("varedeh", TextBox1.Text.Trim(), "نامه های وارده")
End If

End If

End Sub

End Class

Hybrid
سه شنبه 15 فروردین 1391, 12:12 عصر
سلام دوست عزیز ، اگه متن یا عکس کل اررور رو میگرفتین بهتر میشه راهنمایی کرد ،


اررور میگه چی؟

hakim22
سه شنبه 15 فروردین 1391, 12:29 عصر
برای گزارش گیری از LINQ استفاده کنید. تقریبا تمام این کد رو میشه در دو یا سه خط نوشت.

Hybrid
سه شنبه 15 فروردین 1391, 14:48 عصر
dataset1 در خط زیر :


Function Search(ByVal FieldName As String, ByVal SearchFor As String, ByVal sORv As String) As DataSet1

رو تبدیل به dataTable کن یعنی به شکل زیر :


Function Search(ByVal FieldName As String, ByVal SearchFor As String, ByVal sORv As String) As DataTable


قطعه کد زیر :


Dim ds As New DataSet1 oledbDataAdapter1.Fill(ds)
Return ds


تبدیل به :


Dim dt As New DataTable
oledbDataAdapter1.Fill(dt)
Return dt

خطوط 46 تا 51 از کدتون یعنی :

' Dim ds As New DataSet1 ' da.Fill(ds)

' DataGridView1.DataSource = ds

' cnn.Close()


تبدیل به :


Dim dt As New DataTable
da.Fill(dt)
DataGridView1.DataSource = dt
cnn.Close()