กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
412 11
URL.หัวข้อ /
URL
รบกวนช่วยดู code ให้หน่อยครับ
ผมต้องการ Search หาข้อมูลใน Table จาก Field (Field of Study) โดยใช้ Dynamic Search (นำของ อ. BADMan มาประยุกต์ใช้นะครับ)
แต่ผมมี TextBox 2 ตัว คือ FieldOfStudy1 และ FieldOfStudy2 ตาม code ด้านล่าง ผมต้องการใส่บางส่วนของข้อมูล และใช้ * เพื่อแทนตัวอะไรก็ได้
ผมต้องการให้ Search ได้จากทั้ง 2 TextBox แต่ code มันไม่ได้ผลนะครับ ต้องแก้ไขอย่างไรครับ
ขอบคุณ อ.สุภาพ อ.BADMan และผู้รู้ทุกท่านครับ
If Me.FieldOfStudy1 <> "" Then
If Me.FieldOfStudy2 <> "" Then
If where <> "" Then
strAnd = "And"
Else
strAnd = ""
End If
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = where & strAnd & " [Field of Study] Like'" + Me![FieldOfStudy1] + "'"
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = where & strAnd & " [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = where & strAnd & " [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
End If
End If
End If
แต่ผมมี TextBox 2 ตัว คือ FieldOfStudy1 และ FieldOfStudy2 ตาม code ด้านล่าง ผมต้องการใส่บางส่วนของข้อมูล และใช้ * เพื่อแทนตัวอะไรก็ได้
ผมต้องการให้ Search ได้จากทั้ง 2 TextBox แต่ code มันไม่ได้ผลนะครับ ต้องแก้ไขอย่างไรครับ
ขอบคุณ อ.สุภาพ อ.BADMan และผู้รู้ทุกท่านครับ
If Me.FieldOfStudy1 <> "" Then
If Me.FieldOfStudy2 <> "" Then
If where <> "" Then
strAnd = "And"
Else
strAnd = ""
End If
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = where & strAnd & " [Field of Study] Like'" + Me![FieldOfStudy1] + "'"
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = where & strAnd & " [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = where & strAnd & " [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
End If
End If
End If
11 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R02598
ขอโทษครับ ไม่ได้เข้ามา check หลายวัน พอดี net หมดนะครับ
ที่บอกว่าไม่ได้ผล คือ เวลาผม Search ใน FieldOfStudy1 ข้อมูลออกมาถูกต้องครับ
แต่เวลาผม Search ใน FieldOfStudy2 พร้อมกับ FieldOfStudy1 จะเกิด Run-Time Error '3075':
ตัวอย่างเช่น ผมใส่คำว่า *วิศว* ลงใน FieldOfStudy1 ข้อมูลออกมาถูกต้องครับ
และพอผมใส่คำว่า *engineer* ลงใน FieldOfStudy2 ด้วย มันจะแสดง Error ครับ
ไม่ทราบว่าจะแก้ใข code อย่างไรดีครับ ถ้าจะกรุณา ช่วยเขียน code แบบเต็มให้ด้วยครับ
ขอความกรุณาด้วยครับ
ขอบคุณครับ
ที่บอกว่าไม่ได้ผล คือ เวลาผม Search ใน FieldOfStudy1 ข้อมูลออกมาถูกต้องครับ
แต่เวลาผม Search ใน FieldOfStudy2 พร้อมกับ FieldOfStudy1 จะเกิด Run-Time Error '3075':
ตัวอย่างเช่น ผมใส่คำว่า *วิศว* ลงใน FieldOfStudy1 ข้อมูลออกมาถูกต้องครับ
และพอผมใส่คำว่า *engineer* ลงใน FieldOfStudy2 ด้วย มันจะแสดง Error ครับ
ไม่ทราบว่าจะแก้ใข code อย่างไรดีครับ ถ้าจะกรุณา ช่วยเขียน code แบบเต็มให้ด้วยครับ
ขอความกรุณาด้วยครับ
ขอบคุณครับ
3 @R02619
เรียน อ.สุภาพ หรือ อ.BADMan หรือผู้รู้ทุกท่าน
รบกวนช่วยด้วยครับ ต้องการความช่วยเหลือจริง ๆ ครับ
ขอบคุณมากครับ
รบกวนช่วยด้วยครับ ต้องการความช่วยเหลือจริง ๆ ครับ
ขอบคุณมากครับ
4 @R02620
ผมว่าถ้าแนบไฟล์มาด้วยจะเร็วกว่าครับ
หรือถ้าเคยแนบมาแล้ว ก็ให้ช่วยแจ้งกระทู้ที่แนบไว้ด้วยครับ
ถ้ายังไม่ได้ส่งมาไว้ที่นี่ ช่วย compact แล้ว zip ไฟล์ด้วยนะครับ เพราะพื้นที่ของเว็บมีจำกัดครับ
หรือถ้าเคยแนบมาแล้ว ก็ให้ช่วยแจ้งกระทู้ที่แนบไว้ด้วยครับ
ถ้ายังไม่ได้ส่งมาไว้ที่นี่ ช่วย compact แล้ว zip ไฟล์ด้วยนะครับ เพราะพื้นที่ของเว็บมีจำกัดครับ
5 @R02623
ลองแบบนี้ดูครับ...
1. ให้สร้าง Temp Table ขึ้นมามีโครงสร้างเดียวกับตารางข้อมูลที่ค้นหา
2. ในฟอร์มที่จะใช้แสดงข้อมูลที่ได้จากการค้นหาให้เอาข้อมูลมาจากตารางข้อ 1
3. เงื่อนไขในการค้นให้ทำอย่างที่ อ.สุภาพบอกด้านบน
4. ก่อนรัน code เพื่อทำการสืบค้น ให้ทำการลบข้อมูลในตารางข้อ 1 ก่อน
5. เมื่อสืบค้น FieldOfStudy1 ก็ให้รัน Append SQL ตามเงื่อนไข ไปที่
ตารางในข้อ 1 แล้วสั่ง requery เพื่อให้แสดงข้อมูล
6. เมื่อสืบค้น FieldOfStudy2 ก็ให้รัน Append SQL ตามเงื่อนไข ไปที่
ตารางในข้อ 1 เพิ่มเข้าไปอีก แล้วสั่ง requery เพื่อให้แสดงข้อมูลออกมา
7. ทำอย่างนี้ก็จะได้ข้อมูลจากผลของการสืบค้น ทั้งที่เป็นภาษาไทย และอังกฤษ
8. ผมว่าลองทำเองจะได้จดจำปัญหา และฝึกวิธีแก้ปัญหา ได้ดีกว่าครับ
...แต่ เอ..ที่บอกมาไม่ทราบเป็นอย่างที่ต้องการเปล่า...
1. ให้สร้าง Temp Table ขึ้นมามีโครงสร้างเดียวกับตารางข้อมูลที่ค้นหา
2. ในฟอร์มที่จะใช้แสดงข้อมูลที่ได้จากการค้นหาให้เอาข้อมูลมาจากตารางข้อ 1
3. เงื่อนไขในการค้นให้ทำอย่างที่ อ.สุภาพบอกด้านบน
4. ก่อนรัน code เพื่อทำการสืบค้น ให้ทำการลบข้อมูลในตารางข้อ 1 ก่อน
5. เมื่อสืบค้น FieldOfStudy1 ก็ให้รัน Append SQL ตามเงื่อนไข ไปที่
ตารางในข้อ 1 แล้วสั่ง requery เพื่อให้แสดงข้อมูล
6. เมื่อสืบค้น FieldOfStudy2 ก็ให้รัน Append SQL ตามเงื่อนไข ไปที่
ตารางในข้อ 1 เพิ่มเข้าไปอีก แล้วสั่ง requery เพื่อให้แสดงข้อมูลออกมา
7. ทำอย่างนี้ก็จะได้ข้อมูลจากผลของการสืบค้น ทั้งที่เป็นภาษาไทย และอังกฤษ
8. ผมว่าลองทำเองจะได้จดจำปัญหา และฝึกวิธีแก้ปัญหา ได้ดีกว่าครับ
...แต่ เอ..ที่บอกมาไม่ทราบเป็นอย่างที่ต้องการเปล่า...
6 @R02628
ผมขอแนบไฟล์ที่ อ.สุภาพ เคยแก้ไขให้ในเรื่องของ Gender และ Marital Status แต่ผมไม่สามารถ Search หา Field of Study พร้อมกัน 2 ช่องได้ครับ
ความต้องการจริง ๆ ของผมคือ สามารถ Search หาข้อมูลจาก Field ใด Field หนึ่งได้ และ Search ได้พร้อมกันทุก Field นะครับ
เช่นต้องการ Search ผู้สมัครที่เป็นผู้ชาย หรือผู้หญิงอย่างเดียว
หรือผู้ชายและเป็นโสด
หรือผู้ชายที่เป็นโสด และเรียนวิศวกรรมศาสตร์ รวมถึง Engineer (ข้อมูลมีทั้งภาษาไทยและภาษาอังกฤษ)
รบกวนด้วยนะครับ
ขอบคุณอาจารย์ทั้งสองมากครับ
ความต้องการจริง ๆ ของผมคือ สามารถ Search หาข้อมูลจาก Field ใด Field หนึ่งได้ และ Search ได้พร้อมกันทุก Field นะครับ
เช่นต้องการ Search ผู้สมัครที่เป็นผู้ชาย หรือผู้หญิงอย่างเดียว
หรือผู้ชายและเป็นโสด
หรือผู้ชายที่เป็นโสด และเรียนวิศวกรรมศาสตร์ รวมถึง Engineer (ข้อมูลมีทั้งภาษาไทยและภาษาอังกฤษ)
รบกวนด้วยนะครับ
ขอบคุณอาจารย์ทั้งสองมากครับ
7 @R02645
รบกวนช่วยด้วยครับ ต้องการความช่วยเหลือจริง ๆ ครับ
ขอบคุณมากครับ
ขอบคุณมากครับ
8 @R02659
ต้องขออภัยครับ ช่วงนี้ผมยุ่งจริงๆ กำลังจะปิดโปรเจ็ค เลยทำให้ต้องวิ่งวุ่นเร่งงานให้เรียบร้อย
มาถึงโค้ดที่ถามมานะครับ
ผมลองทำเป็นตัวอย่างสำหรับส่วนของ FirstName (Thai) อันหนึ่งก่อน
แล้วศึกษาจากภาษาไทยที่ผมอธิบายไว้นะครับ คงต้องทำความเข้าใจโค้ดแต่ละส่วนให้เข้าใจก่อน แล้วค่อยนำไปปรับใช้กับส่วนที่เหลือ
' ถ้ามีการพิมพ์ข้อความในช่องชื่อภาษาไทย
If Me.[FirstName (Thai)] <> "" Then
' ถ้ามีการเลือกให้มีการกรองในช่องที่อยู่ก่อนหน้านี้
' คือ Where <> ""
If where <> "" Then
If Left(Me![FirstName (Thai)], 1) = "*" Or Right(Me![FirstName (Thai)], 1) = "*" Then
' จะต้องให้ And เข้ามาช่วย เพื่อรวมเงื่อนไขตรงส่วนนี้กับ Where ที่ที่เก็บได้จากที่ผ่านมา
where = where & " AND [First Name (Thai)] Like '" + Me![FirstName (Thai)] + "'"
Else
where = where & " AND [First Name (Thai)]='" + Me![FirstName (Thai)] + "'"
End If
Else
' ถ้าไม่มีการเลือกเงื่อนไขก่อนหน้ามาก่อน ไม่ต้องใส่ And ลง
If Left(Me![FirstName (Thai)], 1) = "*" Or Right(Me![FirstName (Thai)], 1) = "*" Then
where = "[First Name (Thai)] Like '" + Me![FirstName (Thai)] + "'"
Else
where = "[First Name (Thai)]='" + Me![FirstName (Thai)] + "'"
End If
End If
End If
ลองปรับใช้กับส่วนที่เหลือนะครับ ทำที่เงื่อนไข ถึงแม้จะเป็นชื่อฟีลด์ที่เก็บข้อมูลที่เหมือนกัน เช่น Field Of Study และ Field Of Study1 ให้ถือว่าเป็นคนละรายการ เพื่อความสะดวกในการเขียนโค้ดให้เข้าใจได้ง่าย จะทำให้แก้บักได้ตรงจุดครับ
ข้อแนะนำเพิ่มเติมจากการออกแบบข้อมูล
1. ให้กำหนด CodePage ให้เป็นภาษาไทย โดยไปที่เมนู Tools>Options>General tab>ตรง New Database Sort Order ให้เลือกเป็น Thai ครับ แล้วทำการ Compact แล้วปิดออกไป แล้วให้เข้าไฟล์นี้มาใหม่
การเลือกตรงนี้จะทำให้การ Sort ถูกต้องตามหลักของภาษาไทยครับ
2. การตั้งชื่อฟีลด์ หรือชื่อของ Text Box ไม่ควรให้มีช่องว่าง และชื่อยาว เกินไป จะทำให้เขียนโค้ดมีโอกาสพิมพ์ผิดได้ง่ายครับ
มาถึงโค้ดที่ถามมานะครับ
ผมลองทำเป็นตัวอย่างสำหรับส่วนของ FirstName (Thai) อันหนึ่งก่อน
แล้วศึกษาจากภาษาไทยที่ผมอธิบายไว้นะครับ คงต้องทำความเข้าใจโค้ดแต่ละส่วนให้เข้าใจก่อน แล้วค่อยนำไปปรับใช้กับส่วนที่เหลือ
' ถ้ามีการพิมพ์ข้อความในช่องชื่อภาษาไทย
If Me.[FirstName (Thai)] <> "" Then
' ถ้ามีการเลือกให้มีการกรองในช่องที่อยู่ก่อนหน้านี้
' คือ Where <> ""
If where <> "" Then
If Left(Me![FirstName (Thai)], 1) = "*" Or Right(Me![FirstName (Thai)], 1) = "*" Then
' จะต้องให้ And เข้ามาช่วย เพื่อรวมเงื่อนไขตรงส่วนนี้กับ Where ที่ที่เก็บได้จากที่ผ่านมา
where = where & " AND [First Name (Thai)] Like '" + Me![FirstName (Thai)] + "'"
Else
where = where & " AND [First Name (Thai)]='" + Me![FirstName (Thai)] + "'"
End If
Else
' ถ้าไม่มีการเลือกเงื่อนไขก่อนหน้ามาก่อน ไม่ต้องใส่ And ลง
If Left(Me![FirstName (Thai)], 1) = "*" Or Right(Me![FirstName (Thai)], 1) = "*" Then
where = "[First Name (Thai)] Like '" + Me![FirstName (Thai)] + "'"
Else
where = "[First Name (Thai)]='" + Me![FirstName (Thai)] + "'"
End If
End If
End If
ลองปรับใช้กับส่วนที่เหลือนะครับ ทำที่เงื่อนไข ถึงแม้จะเป็นชื่อฟีลด์ที่เก็บข้อมูลที่เหมือนกัน เช่น Field Of Study และ Field Of Study1 ให้ถือว่าเป็นคนละรายการ เพื่อความสะดวกในการเขียนโค้ดให้เข้าใจได้ง่าย จะทำให้แก้บักได้ตรงจุดครับ
ข้อแนะนำเพิ่มเติมจากการออกแบบข้อมูล
1. ให้กำหนด CodePage ให้เป็นภาษาไทย โดยไปที่เมนู Tools>Options>General tab>ตรง New Database Sort Order ให้เลือกเป็น Thai ครับ แล้วทำการ Compact แล้วปิดออกไป แล้วให้เข้าไฟล์นี้มาใหม่
การเลือกตรงนี้จะทำให้การ Sort ถูกต้องตามหลักของภาษาไทยครับ
2. การตั้งชื่อฟีลด์ หรือชื่อของ Text Box ไม่ควรให้มีช่องว่าง และชื่อยาว เกินไป จะทำให้เขียนโค้ดมีโอกาสพิมพ์ผิดได้ง่ายครับ
9 @R02667
ขอบคุณ อ.สุภาพมากครับ สำหรับคำแนะนำต่าง ๆ
ผมได้ลองทำตามคำแนะนำ และลองปรับใช้ดูแล้ว
มันสามารถกรองข้อมูลใน Field เดียวกัน (Field of Study) จาก 2 TextBox ได้ (FieldOfStudy1 และ FieldOfStudy2)
แต่พอผมต้องการกรองข้อมูลอื่นร่วมด้วย มันไม่ตรงตามความเป็นจริงนะครับ เช่น
1. ผมกรองข้อมูลคนที่เรียน วิศวกรรมศาสตร์ (FieldOfStudy1 ใส่ *วิศว*,
FieldOfStudy2 ใส่ *engineer*) ข้อมูลกรองได้ถูกต้อง ไม่มีปัญหาครับ
2. ผมกรองข้อมูล ผู้หญิงที่เรียน วิศวกรรมศาสตร์ (cboGender เลือก
Female, FieldOfStudy1 ใส่ *วิศว*, FieldOfStudy2 ใส่
*engineer*) ข้อมูลที่กรองออกมามีทั้งผู้หญิงและผู้ชายนะครับ
ไม่ทราบว่าควรต้องแก้ใขอย่างไรดีครับ
ขอโทษครับที่ต้องรบกวนหลายครั้ง หวังว่าอาจารย์จะกรุณาอีกครั้งนะครับ
code ของ Field of Study เป็นแบบนี้ครับ
If Me.FieldOfStudy1 <> "" Then
If where <> "" Then
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = where & " AND [Field of Study] Like'" + Me![FieldOfStudy1] + "'"
Else
where = where & " AND[Field of Study] ='" + Me![FieldOfStudy1] + "'"
End If
Else
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = "[Field of Study] Like'" + Me![FieldOfStudy1] + "'"
Else
where = " [Field of Study] ='" + Me![FieldOfStudy1] + "'"
End If
End If
End If
If Me.FieldOfStudy2 <> "" Then
If where <> "" Then
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = where & " AND [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = where & " AND [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
Else
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = " [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = " [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
End If
End If
ผมได้ลองทำตามคำแนะนำ และลองปรับใช้ดูแล้ว
มันสามารถกรองข้อมูลใน Field เดียวกัน (Field of Study) จาก 2 TextBox ได้ (FieldOfStudy1 และ FieldOfStudy2)
แต่พอผมต้องการกรองข้อมูลอื่นร่วมด้วย มันไม่ตรงตามความเป็นจริงนะครับ เช่น
1. ผมกรองข้อมูลคนที่เรียน วิศวกรรมศาสตร์ (FieldOfStudy1 ใส่ *วิศว*,
FieldOfStudy2 ใส่ *engineer*) ข้อมูลกรองได้ถูกต้อง ไม่มีปัญหาครับ
2. ผมกรองข้อมูล ผู้หญิงที่เรียน วิศวกรรมศาสตร์ (cboGender เลือก
Female, FieldOfStudy1 ใส่ *วิศว*, FieldOfStudy2 ใส่
*engineer*) ข้อมูลที่กรองออกมามีทั้งผู้หญิงและผู้ชายนะครับ
ไม่ทราบว่าควรต้องแก้ใขอย่างไรดีครับ
ขอโทษครับที่ต้องรบกวนหลายครั้ง หวังว่าอาจารย์จะกรุณาอีกครั้งนะครับ
code ของ Field of Study เป็นแบบนี้ครับ
If Me.FieldOfStudy1 <> "" Then
If where <> "" Then
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = where & " AND [Field of Study] Like'" + Me![FieldOfStudy1] + "'"
Else
where = where & " AND[Field of Study] ='" + Me![FieldOfStudy1] + "'"
End If
Else
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = "[Field of Study] Like'" + Me![FieldOfStudy1] + "'"
Else
where = " [Field of Study] ='" + Me![FieldOfStudy1] + "'"
End If
End If
End If
If Me.FieldOfStudy2 <> "" Then
If where <> "" Then
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = where & " AND [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = where & " AND [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
Else
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = " [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = " [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
End If
End If
10 @R02670
ผมทำตามแล้ว ได้ผลออกมาถูกต้อง
คือ จะได้ข้อมูลแค่ 1 รายการ ถ้าเลือก Female จะไม่มีข้อมูลเลย
โค้ดเป็นอย่างนี้ครับ
Private Sub cmdShowData_Click()
Dim db As Database
Dim QD As QueryDef
Dim where As String
Dim strAnd As String
Set db = CurrentDb
where = ""
If Me.cboGender <> "" Then
If Me.cboGender = "Male" Then
where = " [Title] = 'Mr.'"
Else
where = " [Title] <> 'Mr.'"
End If
End If
If Me.cboMaritalStatus <> "" Then
If where <> "" Then
strAnd = " And "
Else
strAnd = ""
End If
If Me.cboMaritalStatus = "Single" Then
where = where & strAnd & " [Marital Status] = '1'"
ElseIf Me.cboMaritalStatus = "Married" Then
where = where & strAnd & " [Marital Status] = '2'"
ElseIf Me.cboMaritalStatus = "Divorced" Then
where = where & strAnd & " [Marital Status] = '3'"
ElseIf Me.cboMaritalStatus = "Widow" Then
where = where & strAnd & " [Marital Status] = '4'"
Else
where = where & strAnd & " [Marital Status] = '5'"
End If
End If
' ถ้ามีการพิมพ์ข้อความในช่องชื่อภาษาไทย
If Me.[FirstName (Thai)] <> "" Then
' ถ้ามีการเลือกให้มีการกรองในช่องที่อยู่ก่อนหน้านี้
' คือ Where <> ""
If where <> "" Then
If Left(Me![FirstName (Thai)], 1) = "*" Or Right(Me![FirstName (Thai)], 1) = "*" Then
' จะต้องให้ And เข้ามาช่วย เพื่อรวมเงื่อนไขตรงส่วนนี้กับ Where ที่ที่เก็บได้จากที่ผ่านมา
where = where & " AND [First Name (Thai)] Like '" + Me![FirstName (Thai)] + "'"
Else
where = where & " AND [First Name (Thai)]='" + Me![FirstName (Thai)] + "'"
End If
Else
' ถ้าไม่มีการเลือกเงื่อนไขก่อนหน้ามาก่อน ไม่ต้องใส่ And ลง
If Left(Me![FirstName (Thai)], 1) = "*" Or Right(Me![FirstName (Thai)], 1) = "*" Then
where = "[First Name (Thai)] Like '" + Me![FirstName (Thai)] + "'"
Else
where = "[First Name (Thai)]='" + Me![FirstName (Thai)] + "'"
End If
End If
End If
Debug.Print where
If Me.FieldOfStudy1 <> "" Then
If where <> "" Then
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = where & " AND [Field of Study] Like'" + Me![FieldOfStudy1] + "'"
Else
where = where & " AND[Field of Study] ='" + Me![FieldOfStudy1] + "'"
End If
Else
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = "[Field of Study] Like'" + Me![FieldOfStudy1] + "'"
Else
where = " [Field of Study] ='" + Me![FieldOfStudy1] + "'"
End If
End If
End If
If Me.FieldOfStudy2 <> "" Then
If where <> "" Then
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = where & " AND [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = where & " AND [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
Else
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = " [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = " [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
End If
End If
If where <> "" Then
where = " Where " & where
End If
Set QD = db.QueryDefs("Query1")
QD.SQL = "Select * from qryEducationDetails" & where
'DoCmd.OpenQuery "Query1"
Me.sfrmSearch2.Form.RecordSource = "Query1"
End Sub
ลองเปรียบเทียบกับที่มีอยู่นะครับ
*** Edited by Supap Chaiya *** 2/5/2546 12:10:42
คือ จะได้ข้อมูลแค่ 1 รายการ ถ้าเลือก Female จะไม่มีข้อมูลเลย
โค้ดเป็นอย่างนี้ครับ
Private Sub cmdShowData_Click()
Dim db As Database
Dim QD As QueryDef
Dim where As String
Dim strAnd As String
Set db = CurrentDb
where = ""
If Me.cboGender <> "" Then
If Me.cboGender = "Male" Then
where = " [Title] = 'Mr.'"
Else
where = " [Title] <> 'Mr.'"
End If
End If
If Me.cboMaritalStatus <> "" Then
If where <> "" Then
strAnd = " And "
Else
strAnd = ""
End If
If Me.cboMaritalStatus = "Single" Then
where = where & strAnd & " [Marital Status] = '1'"
ElseIf Me.cboMaritalStatus = "Married" Then
where = where & strAnd & " [Marital Status] = '2'"
ElseIf Me.cboMaritalStatus = "Divorced" Then
where = where & strAnd & " [Marital Status] = '3'"
ElseIf Me.cboMaritalStatus = "Widow" Then
where = where & strAnd & " [Marital Status] = '4'"
Else
where = where & strAnd & " [Marital Status] = '5'"
End If
End If
' ถ้ามีการพิมพ์ข้อความในช่องชื่อภาษาไทย
If Me.[FirstName (Thai)] <> "" Then
' ถ้ามีการเลือกให้มีการกรองในช่องที่อยู่ก่อนหน้านี้
' คือ Where <> ""
If where <> "" Then
If Left(Me![FirstName (Thai)], 1) = "*" Or Right(Me![FirstName (Thai)], 1) = "*" Then
' จะต้องให้ And เข้ามาช่วย เพื่อรวมเงื่อนไขตรงส่วนนี้กับ Where ที่ที่เก็บได้จากที่ผ่านมา
where = where & " AND [First Name (Thai)] Like '" + Me![FirstName (Thai)] + "'"
Else
where = where & " AND [First Name (Thai)]='" + Me![FirstName (Thai)] + "'"
End If
Else
' ถ้าไม่มีการเลือกเงื่อนไขก่อนหน้ามาก่อน ไม่ต้องใส่ And ลง
If Left(Me![FirstName (Thai)], 1) = "*" Or Right(Me![FirstName (Thai)], 1) = "*" Then
where = "[First Name (Thai)] Like '" + Me![FirstName (Thai)] + "'"
Else
where = "[First Name (Thai)]='" + Me![FirstName (Thai)] + "'"
End If
End If
End If
Debug.Print where
If Me.FieldOfStudy1 <> "" Then
If where <> "" Then
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = where & " AND [Field of Study] Like'" + Me![FieldOfStudy1] + "'"
Else
where = where & " AND[Field of Study] ='" + Me![FieldOfStudy1] + "'"
End If
Else
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Then
where = "[Field of Study] Like'" + Me![FieldOfStudy1] + "'"
Else
where = " [Field of Study] ='" + Me![FieldOfStudy1] + "'"
End If
End If
End If
If Me.FieldOfStudy2 <> "" Then
If where <> "" Then
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = where & " AND [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = where & " AND [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
Else
If Left(Me![FieldOfStudy1], 1) = "*" Or Right(Me![FieldOfStudy1], 1) = "*" Or Left(Me![FieldOfStudy2], 1) = "*" Or Right(Me![FieldOfStudy2], 1) = "*" Then
where = " [Field of Study] Like'" + Me![FieldOfStudy1] + "' or [Field of Study] Like'" + Me![FieldOfStudy2] + "'"
Else
where = " [Field of Study] ='" + Me![FieldOfStudy1] + "' or [Field of Study]='" + Me![FieldOfStudy2] + "'"
End If
End If
End If
If where <> "" Then
where = " Where " & where
End If
Set QD = db.QueryDefs("Query1")
QD.SQL = "Select * from qryEducationDetails" & where
'DoCmd.OpenQuery "Query1"
Me.sfrmSearch2.Form.RecordSource = "Query1"
End Sub
ลองเปรียบเทียบกับที่มีอยู่นะครับ
*** Edited by Supap Chaiya *** 2/5/2546 12:10:42
11 @R02672
ขอบคุณ อ.สุภาพมาก ๆ ครับ
ผมอยากขอ email address ของอาจารย์หน่อยนะครับ คือ
ผมอยากส่ง File ตัวจริงไปให้อาจารย์ดูนะครับ ซึ่งมีข้อมูลที่ไม่สามารถเปิดเผยต่อสาธารณะได้ครับ
ผมยังติดปัญหาเหมือนเดิมนะครับ
ขอความกรุณาด้วยครับ
ผมอยากขอ email address ของอาจารย์หน่อยนะครับ คือ
ผมอยากส่ง File ตัวจริงไปให้อาจารย์ดูนะครับ ซึ่งมีข้อมูลที่ไม่สามารถเปิดเผยต่อสาธารณะได้ครับ
ผมยังติดปัญหาเหมือนเดิมนะครับ
ขอความกรุณาด้วยครับ
Time: 0.1252s
Like '*" & Me![FieldOfStudy1] & "*'
และ
Like '*" & Me![FieldOfStudy2] & "*'
ไม่ต้องให้ผู้ใช้คีย์ * ลงไปในคำค้นก็ได้ครับ จะได้โค้ดที่สั้นกว่า
และควรจะตรวจทีละเงื่อนไข จะทำให้เข้าใจง่ายกว่าครับ
ส่วนที่บอกว่าไม่ได้ผล แล้วผลออกมาเป็นอย่างไรครับ ไม่มีอะไรแสดงออกมาเลย หรือ มีแต่ไม่ถูกต้องครับ