 |
|
VB.Net ถ้ามี Combobox หลายๆอันจะเขียนโค้ดทำปุ่ม "ค้นหา" อย่างไรดีครับ [[มีภาพ]]] |
|
 |
|
|
 |
 |
|
ตามภาพนะครับเนื่งจากผมมีไฟล์ฐานข้อมูลแบบ access ถ้าทำค้นหาแบบ textbox หรือ combobox อย่างใดอย่างนึงอันเดียว ผมทำได้นะครับ แต่พอผมอยากเพิ่ม combobox หลายๆอันมา เพื่อให้มีเลือกได้มากขึ้น ผมไม่รู้จะเขียนโค้ดอย่างไรดี
- เวลาค้นหามันจะเลือกอันใดอันหนึ่งอยู่แล้วน่ะครับเช่น ชื่อก็หาใน textbox พอจะเลือกใหม่เป็นเพศ ก็รีเซต แล้วเลือกใหม่
- ผมได้สร้าง Search_Record() ขึ้นมาเพื่อใช้กับปุ่มค้นหาเวลากดมันให้มันค้นหาอ่ะครับ
- อันนี้โค้ดปกติที่ผมทำได้แค่นี้อ่ะครับ ใช้ได้แค่ textbox อันเดียว พอใส่เพิ่มพวก cobboboxไปมันเออเร่อ
(ภาพอยู่ถัดจากโค้ดนะคัรบ
Code
Private Sub SB1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SB1.Click
Search_Record()
End Sub
Private Sub Search_Record()
Dim conn As New OleDbConnection
Dim cmd As New OleDbCommand
Dim da As New OleDbDataAdapter
Dim dt As New DataTable
Dim sSQL As String = String.Empty
'try catch block is used to catch the error
Try
'get connection string declared in the Module1.vb and assing it to conn variable
conn = New OleDbConnection(Get_Constring)
conn.Open()
cmd.Connection = conn
cmd.CommandType = CommandType.Text
sSQL = "SELECT number_id,date_time,name_id,Firthname,Lastname,Birthday,sex,CH,GC, MOO_ID,A1,A2,B1,B2,B3,B4,C1,C2,D1,D2,D3,D4,E1,E2,E3,E4,E5,F1,G1,G2,G3,H1,H2,H3,H4,H5,H5,H6 FROM Geezer"
If Me.S1.Text = Me.S1.Text Then
sSQL = sSQL & " where Firthname like + '%" & Me.S1.Text & "%'"
End If
Select Case S3.SelectedItem
Case 0 = sSQL = sSQL & "where sex = ชาย'"
End Select
cmd.CommandText = sSQL
da.SelectCommand = cmd
da.Fill(dt)
Me.GeezerDataGridView.DataSource = dt
If dt.Rows.Count = 0 Then
MsgBox("No record found!")
End If
Catch ex As Exception
MsgBox(ErrorToString)
Finally
conn.Close()
End Try
End Sub
End Class
อันนี้ภาพในหน้างานครับ

Tag : .NET, Ms Access, VBScript, VS 2008 (.NET 3.x), VS 2010 (.NET 4.x)
|
ประวัติการแก้ไข 2013-09-01 22:21:26
|
 |
 |
 |
 |
Date :
2013-09-01 22:19:20 |
By :
bp28311 |
View :
3146 |
Reply :
7 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
If Me.S1.Text = Me.S1.Text Then
sSQL = sSQL & " where Firthname like + '%" & Me.S1.Text & "%'"
End If
If Me.S1.Text = Me.S1.Text Then
sSQL = sSQL & " where Firthname like + '%" & Me.S1.Text & "%'"
End If
If Me.S1.Text = Me.S1.Text Then
sSQL = sSQL & " where Firthname like + '%" & Me.S1.Text & "%'"
End If
อันที่จริงเพิ่มอีกหลาย ๆ เงื่อนไขก็ได้แล้วน่ะครับ 
|
 |
 |
 |
 |
Date :
2013-09-02 06:24:48 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
แก้ไข - ใช้ string builder สร้าง query สิ ตรวจดู value ของ combo ก่อน ถ้าไม่มีก็ไม่ต้องเอาไปใส่ในเงื่อนไข
แนะนำ - ใช้ combo แต่ทำไมเอาไป where ด้วย string ทำไมไม่ใช้ key
|
 |
 |
 |
 |
Date :
2013-09-03 07:56:41 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใช้ if สิ คือถ้า combo อันไหนไม่ได้ใช้ก็ไม่ต้อง append
|
 |
 |
 |
 |
Date :
2013-09-04 08:54:32 |
By :
ห้ามตอบเกินวันละ 2 กระทู้ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
If txtSearch.Text.Trim() = "" Then Exit Sub
sb.Remove(0, sb.Length())
sb.Append("SELECT * FROM Table")
Select Case cboSearch1.SelectedIndex
Case 0
sb.Append(" WHERE (EmpID=@EmpID)")
Case 1
sb.Append(" WHERE (FullName LIKE @FullName)")
End Select
sb.Append(" ORDER BY EmpID")
Dim sqlSearch As String
sqlSearch = sb.ToString()
dt = New DataTable()
With com
.Parameters.Clear()
Select Case cboSearch1.SelectedIndex
Case 0
.Parameters.Add("@EmpID", SqlDbType.NVarChar).Value = txtSearch.Text.Trim()
Case 1
.Parameters.Add("@FullName", SqlDbType.NVarChar).Value = "%" & txtSearch.Text.Trim() & "%"
End Select
.CommandText = sqlSearch
.CommandType = CommandType.Text
.Connection = Conn
dr = .ExecuteReader
If dr.HasRows Then
ClearBinding()
dt.Load(dr)
bn.BindingSource = bs
dgv.DataSource = dt
txtEmpID.DataBindings.Add("Text", bs, "EmpID")
|
 |
 |
 |
 |
Date :
2013-09-04 10:38:32 |
By :
ih4cK |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|