 |
|
การส่งค่าตัวแปร field ใน คำสั่งselect ไม่รับค่าครับ(where) แต่ถ้าไม่มีตัวแปรใช้ได้ครับ |
|
 |
|
|
 |
 |
|
#dim fdname as string
'Procedure กำหนดชื่อฟีลด์ในตัวแปร fdName เมื่อคลิกปุ่ม RadioButton
Private Sub RadioButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles radFName.Click, radLName.Click, _
radDist.Click, radCity.Click, radPosCode.Click, _
radPhone.Click, radEmail.Click
Select Case CInt(sender.Tag)
Case 0 : fdName = "ชื่อ"
Case 1 : fdName = "นามสกุล"
Case 2 : fdName = "เขต"
Case 3 : fdName = "จังหวัด"
Case 4 : fdName = "รหัสไปรษณีย์"
Case 5 : fdName = "โทรศัพท์"
Case 6 : fdName = "อีเมล์"
End Select
If addNewMode Then 'ถ้าอยู่ในโหมดเพิ่มเรคอร์ดใหม่
txtSearch.Enabled = False 'ให้ช่อง "ค้นหา/กรองข้อมูล" ใช้งานไม่ได้
Else : txtSearch.Enabled = True 'ถ้าอยู่ในโหมดแก้ไขเรคอร์ด ให้ช่อง "ค้นหา/กรองข้อมูล" ใช้งานได้
End If
txtSearch.Text = "" 'ล้างช่อง "ค้นหา/กรองข้อมูล" ให้เป็นค่าว่าง
txtSearch.Focus() 'เลื่อนเคอร์เซอร์รับข้อมูลไปที่ช่อง "ค้นหา/กรองข้อมูล"
End Sub
Private Sub btnFilter_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnFilter.Click
Dim i As Integer
If addNewMode Then
Exit Sub 'ถ้าอยู่ในโหมดการเพิ่มเรคอร์ดให้ออกจาก Procedure นี้
ElseIf txtSearch.Text <> "" Then 'ถ้าอยู่ในโหมดแก้ไขเรคอร์ดและป้อนข้อมูลในช่อง "ค้นหา/กรองข้อมูล"
Dim dtAdapter2 As OleDbDataAdapter = New OleDbDataAdapter( _
"SELECT * FROM Contacts WHERE " & fdName & _
" LIKE ' " & "?" & txtSearch.Text & "?' ", dbConn)
Try
dtSet.Clear()
dtAdapter2.Fill(dtSet) 'นำข้อมูลที่กรองจากเทเบิล Contacts มาไว้ที่ dataset
dtTable = dtSet.Tables(0) 'ให้ตัวแปร dtTable แทนข้อมูลที่ได้จากการกรอง
'ถ้าเป็น datatable ว่าง แสดงข้อความบอกให้ทราบ
Catch er As Exception
Picture.Image = Nothing
MessageBox.Show(er.Message() & vbCrLf & er.StackTrace)
Finally
If dtTable.Rows.Count = 0 Then MessageBox.Show("ไม่พบข้อมูลที่ต้องการ ! ", "ผลการกรอง", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
btnFirst.Enabled = False
btnPrevious.Enabled = False
btnNext.Enabled = False
btnLast.Enabled = False
btnAdd.Enabled = False
btnDelete.Enabled = False
btnEdit.Enabled = False
btnCancel.Enabled = False
btnFind.Enabled = False
End Try
End If
Me.Activate()
End Sub #
Tag : - - - -
|
|
 |
 |
 |
 |
Date :
2010-06-20 12:18:11 |
By :
Thanat |
View :
2187 |
Reply :
16 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
คนใช้ชื่อ ฟิลด์ เป็นภาษาไทยค่ะ
ทีหลังไปปรับเป็นภาษาอังกฤษสะนะคะ
ไม่ควรตั้งชื่อ field ,index ,table โดยใช้ unicode
เดวตอน import export ปัญหาเยอะค่ะ
วิธีแก้
Case 0 : fdName = "ชื่อ"
>>
Case 0 : fdName = "[ชื่อ]" ทุกฟิลด์ค่ะ
|
 |
 |
 |
 |
Date :
2010-06-20 13:16:02 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมแก้ไขcode ตามที่แนะนำแล้วครับแต่ปัญหายังเหมือนเดิม {ฐานข้อมูลเป็นaccess ภาษาเป็นvb.net2003)ตามนี้คับคือไม่ส่งค่าใ(นsql)คำสั่งwhere เหมือนมอง ตัวแปรfdnameไม่เห็นว่าเป็นfieldในaccess
#'Event Procedure เมื่อคลิกปุ่มไอคอนกรองข้อมูล
Private Sub btnFilter_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnFilter.Click
Dim i As Integer
If addNewMode Then
Exit Sub 'ถ้าอยู่ในโหมดการเพิ่มเรคอร์ดให้ออกจาก Procedure นี้
ElseIf txtSearch.Text <> "" Then 'ถ้าอยู่ในโหมดแก้ไขเรคอร์ดและป้อนข้อมูลในช่อง "ค้นหา/กรองข้อมูล"
' ให้เลือกข้อมูลจากเทเบิล Contactsที่ตรงกับข้อมูลที่ต้องการกรอง********ช่วงที่ทำงานไม่ตรงครับทั้งที่เหมือนกับต.ยทั้งสิ้น
'แต่ถ้าเป็นโปรแกรมตัวอย่างกับกรองได้ครับ.....งงงงงงงงงงงงงงงงงงงงงงงงงงงงงงงงงงงง
Dim dtAdapter2 As OleDbDataAdapter = New OleDbDataAdapter( _
"SELECT * FROM Contacts WHERE " & fdName & _
" LIKE '" & "%" & txtSearch.Text & "%'", dbconn)
Try
dtSet.Clear()
MessageBox.Show(fdName, txtSearch.Text, MessageBoxButtons.OK)
dtAdapter2.Fill(dtSet) 'นำข้อมูลที่กรองจากเทเบิล Contacts มาไว้ที่ dataset
dtTable = dtSet.Tables(0) 'ให้ตัวแปร dtTable แทนข้อมูลที่ได้จากการกรอง
'ถ้าเป็น datatable ว่าง แสดงข้อความบอกให้ทราบ
Catch er As Exception
Picture.Image = Nothing
MessageBox.Show(er.Message() & vbCrLf & er.StackTrace)
Finally
If dtTable.Rows.Count = 0 Then MessageBox.Show("ไม่พบข้อมูลที่ต้องการ ! ", "ผลการกรอง", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
btnFirst.Enabled = False
btnPrevious.Enabled = False
btnNext.Enabled = False
btnLast.Enabled = False
btnAdd.Enabled = False
btnDelete.Enabled = False
btnEdit.Enabled = False
btnCancel.Enabled = False
btnFind.Enabled = False
End Try
End If
Me.Activate()
End Sub
'Procedure กำหนดชื่อฟีลด์ในตัวแปร fdName เมื่อคลิกปุ่ม RadioButton
Private Sub RadioButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles radFName.Click, radLName.Click, _
radDist.Click, radCity.Click, radPosCode.Click, _
radPhone.Click, radEmail.Click
Select Case CInt(sender.Tag)
Case 0 : fdName = "[Name]"
Case 1 : fdName = "[Surname]"
Case 2 : fdName = "[District]"
Case 3 : fdName = "[Province]"
Case 4 : fdName = "[Postcal]"
Case 5 : fdName = "[Tel]"
Case 6 : fdName = "[email]"
End Select
If addNewMode Then 'ถ้าอยู่ในโหมดเพิ่มเรคอร์ดใหม่
txtSearch.Enabled = False 'ให้ช่อง "ค้นหา/กรองข้อมูล" ใช้งานไม่ได้
Else : txtSearch.Enabled = True 'ถ้าอยู่ในโหมดแก้ไขเรคอร์ด ให้ช่อง "ค้นหา/กรองข้อมูล" ใช้งานได้
End If
txtSearch.Text = "" 'ล้างช่อง "ค้นหา/กรองข้อมูล" ให้เป็นค่าว่าง
txtSearch.Focus() 'เลื่อนเคอร์เซอร์รับข้อมูลไปที่ช่อง "ค้นหา/กรองข้อมูล"
End Sub[b][/b]#
|
 |
 |
 |
 |
Date :
2010-06-20 15:28:29 |
By :
ธนัท |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ใส bb code ให้จะได้อ่านง่ายๆ
#'Event Procedure เมื่อคลิกปุ่มไอคอนกรองข้อมูล
Private Sub btnFilter_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnFilter.Click
Dim i As Integer
If addNewMode Then
Exit Sub 'ถ้าอยู่ในโหมดการเพิ่มเรคอร์ดให้ออกจาก Procedure นี้
ElseIf txtSearch.Text <> "" Then 'ถ้าอยู่ในโหมดแก้ไขเรคอร์ดและป้อนข้อมูลในช่อง "ค้นหา/กรองข้อมูล"
' ให้เลือกข้อมูลจากเทเบิล Contactsที่ตรงกับข้อมูลที่ต้องการกรอง********ช่วงที่ทำงานไม่ตรงครับทั้ง ที่เหมือนกับต.ยทั้งสิ้น
'แต่ถ้าเป็นโปรแกรมตัวอย่างกับกรองได้ครับ.....งงงงงงงงงงงงงงงงงงงงงงงงงง งงงงงงงงงง
Dim dtAdapter2 As OleDbDataAdapter = New OleDbDataAdapter( _
"SELECT * FROM Contacts WHERE " & fdName & _
" LIKE '" & "%" & txtSearch.Text & "%'", dbconn)
Try
dtSet.Clear()
MessageBox.Show(fdName, txtSearch.Text, MessageBoxButtons.OK)
dtAdapter2.Fill(dtSet) 'นำข้อมูลที่กรองจากเทเบิล Contacts มาไว้ที่ dataset
dtTable = dtSet.Tables(0) 'ให้ตัวแปร dtTable แทนข้อมูลที่ได้จากการกรอง
'ถ้าเป็น datatable ว่าง แสดงข้อความบอกให้ทราบ
Catch er As Exception
Picture.Image = Nothing
MessageBox.Show(er.Message() & vbCrLf & er.StackTrace)
Finally
If dtTable.Rows.Count = 0 Then MessageBox.Show("ไม่พบข้อมูลที่ต้องการ ! ", "ผลการกรอง", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
btnFirst.Enabled = False
btnPrevious.Enabled = False
btnNext.Enabled = False
btnLast.Enabled = False
btnAdd.Enabled = False
btnDelete.Enabled = False
btnEdit.Enabled = False
btnCancel.Enabled = False
btnFind.Enabled = False
End Try
End If
Me.Activate()
End Sub
'Procedure กำหนดชื่อฟีลด์ในตัวแปร fdName เมื่อคลิกปุ่ม RadioButton
Private Sub RadioButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles radFName.Click, radLName.Click, _
radDist.Click, radCity.Click, radPosCode.Click, _
radPhone.Click, radEmail.Click
Select Case CInt(sender.Tag)
Case 0 : fdName = "[Name]"
Case 1 : fdName = "[Surname]"
Case 2 : fdName = "[District]"
Case 3 : fdName = "[Province]"
Case 4 : fdName = "[Postcal]"
Case 5 : fdName = "[Tel]"
Case 6 : fdName = "[email]"
End Select
If addNewMode Then 'ถ้าอยู่ในโหมดเพิ่มเรคอร์ดใหม่
txtSearch.Enabled = False 'ให้ช่อง "ค้นหา/กรองข้อมูล" ใช้งานไม่ได้
Else : txtSearch.Enabled = True 'ถ้าอยู่ในโหมดแก้ไขเรคอร์ด ให้ช่อง "ค้นหา/กรองข้อมูล" ใช้งานได้
End If
txtSearch.Text = "" 'ล้างช่อง "ค้นหา/กรองข้อมูล" ให้เป็นค่าว่าง
txtSearch.Focus() 'เลื่อนเคอร์เซอร์รับข้อมูลไปที่ช่อง "ค้นหา/กรองข้อมูล"
End Sub
|
 |
 |
 |
 |
Date :
2010-06-20 15:47:24 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทีหลัง ช่วย เอา TAG CODEครอบให้ด้วยก้ดีนะคะ อ่านง่ายกว่าเยอะเลย
จะได้มียักเยื้อง อ่านง่ายกว่าค่ะ
1. เอา table structure มาลงให้ครบ cap screen มาเลยค่ะ อย่า copy text มา
2. LIKE operator ของ MS ACCESS ไม่ใช้ '%' ค่ะ
ที่มีคือ
* = สำหรับทุกค่า
? = Charactor 1 ตัวอะไรก็ได้
# = ตัวเลข
|
 |
 |
 |
 |
Date :
2010-06-20 15:47:29 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผมขอดู form layout ด้วย ช่วย print screen มาให้ดูที
พอดีข้องใจนิดหน่อย
|
 |
 |
 |
 |
Date :
2010-06-20 16:15:22 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2010-06-20 17:08:03 |
By :
Thanat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2010-06-20 17:09:30 |
By :
Thanat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code (VB.NET)
Dim tempStr As String = String.Empty
tempStr = txtSearch.Text.Trim()
If (tempStr.Length = 0) Then
tempStr = "'*'"
Else
tempStr = "'*" & tempStr & "*'"
End If
Dim dtAdapter2 As OleDbDataAdapter = New OleDbDataAdapter( _
"SELECT * FROM Contacts WHERE " & fdName & _
" LIKE " & tempStr & " , dbConn)
เอาไปแทน
Code (VB.NET)
Dim dtAdapter2 As OleDbDataAdapter = New OleDbDataAdapter( _
"SELECT * FROM Contacts WHERE " & fdName & _
" LIKE '" & "%" & txtSearch.Text & "%'", dbconn)
ค่ะ
|
 |
 |
 |
 |
Date :
2010-06-20 17:53:35 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
โค้ดไม่ได้เรื่องเลย พอดีเห็นแค่นี้เลยแก้ให้แค่นี้
Code (VB.NET)
Private Sub btnFilter_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnFilter.Click
Dim i As Integer
If addNewMode Then
Exit Sub 'ถ้าอยู่ในโหมดการเพิ่มเรคอร์ดให้ออกจาก Procedure นี้
ElseIf txtSearch.Text <> String.Empty Then 'ถ้าอยู่ในโหมดแก้ไขเรคอร์ดและป้อนข้อมูลในช่อง "ค้นหา/กรองข้อมูล"
' ให้เลือกข้อมูลจากเทเบิล Contactsที่ตรงกับข้อมูลที่ต้องการกรอง********ช่วงที่ทำงานไม่ตรงครับทั้ง ที่เหมือนกับต.ยทั้งสิ้น
'แต่ถ้าเป็นโปรแกรมตัวอย่างกับกรองได้ครับ.....งงงงงงงงงงงงงงงงงงงงงงงงงง งงงงงงงงงง
Dim commandString As String = String.Format("SELECT * FROM Contacts WHERE {0} LIKE @Keyword", fdName )
Dim command As New OleDbCommand(commandString, dbconn)
command.Parameters.AddWithValue("@Keyword", String.Format("*{0}*", txtSearch.Text))
Dim dtAdapter2 As OleDbDataAdapter = New OleDbDataAdapter(command)
Try
MessageBox.Show(fdName, txtSearch.Text, MessageBoxButtons.OK)
dtAdapter2.Fill(dtTable) 'ให้ตัวแปร dtTable แทนข้อมูลที่ได้จากการกรอง
'ถ้าเป็น datatable ว่าง แสดงข้อความบอกให้ทราบ
Catch er As Exception
Picture.Image = Nothing
MessageBox.Show(er.Message() & vbCrLf & er.StackTrace)
Finally
If dtTable.Rows.Count = 0 Then
MessageBox.Show("ไม่พบข้อมูลที่ต้องการ ! ", "ผลการกรอง", _
MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
btnFirst.Enabled = False
btnPrevious.Enabled = False
btnNext.Enabled = False
btnLast.Enabled = False
btnAdd.Enabled = False
btnDelete.Enabled = False
btnEdit.Enabled = False
btnCancel.Enabled = False
btnFind.Enabled = False
End Try
End If
Me.Activate()
End Sub
'Procedure กำหนดชื่อฟีลด์ในตัวแปร fdName เมื่อคลิกปุ่ม RadioButton
Private Sub RadioButton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles radFName.Click, radLName.Click, _
radDist.Click, radCity.Click, radPosCode.Click, _
radPhone.Click, radEmail.Click
Dim radioSender As RadioButton = CType(sender, RadioButton)
Select Case CInt(radioSender.Tag)
Case 0 : fdName = "[Name]"
Case 1 : fdName = "[Surname]"
Case 2 : fdName = "[District]"
Case 3 : fdName = "[Province]"
Case 4 : fdName = "[Postcal]"
Case 5 : fdName = "[Tel]"
Case 6 : fdName = "[email]"
End Select
If addNewMode Then 'ถ้าอยู่ในโหมดเพิ่มเรคอร์ดใหม่
txtSearch.Enabled = False 'ให้ช่อง "ค้นหา/กรองข้อมูล" ใช้งานไม่ได้
Else
txtSearch.Enabled = True 'ถ้าอยู่ในโหมดแก้ไขเรคอร์ด ให้ช่อง "ค้นหา/กรองข้อมูล" ใช้งานได้
End If
txtSearch.Text = String.Empty 'ล้างช่อง "ค้นหา/กรองข้อมูล" ให้เป็นค่าว่าง
txtSearch.Focus() 'เลื่อนเคอร์เซอร์รับข้อมูลไปที่ช่อง "ค้นหา/กรองข้อมูล"
End Sub
อยากเปลี่ยนอีเว็นต์ click เป็น checkedchange จังเลย
|
 |
 |
 |
 |
Date :
2010-06-20 17:59:48 |
By :
tungman |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
command.Parameters.AddWithValue เป็นcodeที่ไม่ยอมรับครับAddwithvaule is not a member of system.data.oldb.oldbparametercollection ครับ
|
 |
 |
 |
 |
Date :
2010-06-21 00:58:24 |
By :
Thanat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2010-06-21 01:27:59 |
By :
ธนัท |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2010-06-21 01:31:32 |
By :
Thanat |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|

|
 |
 |
 |
 |
Date :
2010-06-21 02:00:29 |
By :
ธนัท |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
อื้อ AddWithValue มาเพิ่มใน 2.0 ค่ะ
สงสัย 1.1 + Visual studio 2003 มั้งเนี่ย
.NET Framework
Supported in: 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0
จะใช้ code พี่ตึ๋งปะคะ งั้นเปลี่ยน
Code (VB.NET)
Dim commandString As String = String.Format("SELECT * FROM Contacts WHERE {0} LIKE @Keyword", fdName )
Dim command As New OleDbCommand(commandString, dbconn)
command.Parameters.AddWithValue("@Keyword", String.Format("*{0}*", txtSearch.Text))
เป็น
Code (VB.NET)
Dim commandString As String = String.Format("SELECT * FROM Contacts WHERE {0} LIKE ?", fdName )
Dim tempStr As String = String.Empty
tempStr = txtSearch.Text.Trim()
If (tempStr.Length = 0) Then
tempStr = "*"
Else
tempStr = "*" & tempStr & "*"
End If
Dim command As New OleDbCommand(commandString, dbconn)
command.Parameters.Add ( "@SearchValue", OleDbType.VarChar, 255).Value = tempStr
Method Add
.NET Framework
Supported in: 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1
|
 |
 |
 |
 |
Date :
2010-06-21 09:14:02 |
By :
blurEyes |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|