Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 107,407

HOME > .NET Framework > Forum > ช่วยคิดวิธี Search ข้อมูลหน่อยครับ คือเวลาพิมพ์ค้นหาโดยเฉพาะยิงบาร์โค้ด 1 ตัวอักษรมันก็เอาไป Query ตลอด





 

ช่วยคิดวิธี Search ข้อมูลหน่อยครับ คือเวลาพิมพ์ค้นหาโดยเฉพาะยิงบาร์โค้ด 1 ตัวอักษรมันก็เอาไป Query ตลอด

 



Topic : 129786



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์




ช่วยคิดวิธี Search ข้อมูลหน่อยครับ คือเวลาพิมพ์ค้นหาโดยเฉพาะยิงบาร์โค้ด 1 ตัวอักษรมันก็เอาไป Query ตลอด อยากให้โปรแกรมเริ่ม Query ตอนเราพิมพ์เสร็จ หรือพอจะมีวิธีแนวคิดเงื่อนไขอื่นไหมครับ

สิ่งที่จะค้นหามีดังนี้
1.Barcode บาร์โค้ดจะมีเฉพาะตัวเลข(ได้มาจากโรงงาน)
และตัวอักษร+ตัวเลข(ตั้งขึ้นเองเพราะสินค้าไม่มีบาร์โค้ดมาให้) เช่น ATT0000010 ที่เอาตัวอักษรมาเกี่ยวข้องด้วยเพราะกลัวตั้งเฉพาะตัวเลขจะไปชนบาร์โค้ดที่มาจากโรงงาน หรือใครมีวิธีตั้งบาร์โค้ดเองช่วยแนะนำด้วยครับ (ค้นหาแบบ LIKE text%)
2.Code รหัสสินค้า จะเป็นรูปแบบ 30-01120, 21-00123 คือมีขีดขั้นตัวอักษรที่ 3 (ค้นหาแบบ LIKE text%)
3.Name ชื่อสินค้า ก็จะมีทั้งตัวอักษรและตัวเลข (ค้นหาแบบ LIKE %text%)

ตอนนี้แก้ปัญหาโดยสร้าง checkbox ให้ผู้ใช้งาน (กดติ๊กออก)เมื่อต้องการค้นหาด้วย รหัส และชื่อสินค้า เพราะส่วนมากจะใช้ยิงบาร์โค้ดเลยตั้ง default ให้ติ๊กไว้ ยิงเสร็จจะเด้งมาติ๊กที่ checkbox เหมือนเดิมเพื่อรอการค้นหาด้วยบาร์โค้ดครั้งต่อไป

แต่ทีนี้ผู้ใช้บ่นๆว่า ทำไมไม่ทำให้ค้นหาได้ทั้งหมดเลยไม่ต้องมากดติ๊กเข้าติ๊กออก เสียจังหวะเสียเวลา



Tag : .NET, Ms SQL Server 2008, C#, VS 2012 (.NET 4.x)









ประวัติการแก้ไข
2017-12-25 12:34:16
2017-12-25 12:35:19
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-12-25 12:33:43 By : nPointXer View : 538 Reply : 22
 

 

No. 1



โพสกระทู้ ( 73,922 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ใช้การหน่วงเวลาครับ เชน หลังจากคีย์ไปแล้วหยุดประมาณ 3 วินาที ให้มีค่อยมีการเรียก Function ในการ Query ข้อมูลครับ แต่ในระหว่าง 3 วินาธี ถ้ามีการคีย์ซ้ำๆ ก็ให้ Reset เวลานับถอยหลังใหม่ครับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 13:52:15 By : mr.win
 


 

No. 2



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2017-12-25 13:52:15
รายละเอียดของการตอบ ::
พี่วินพอจะมีตัวอย่างไหมครับ ผมทำแล้วติดยิงบาร์โค้ดแล้วมัน Enter มันจะมองว่ายังไม่มีข้อมูลใน dataGridView1 เพราะติดตัวดีเลย์ที่เราทำไว้อยู่ เพราะถ้าเรา Enter มันจะไปเข้า Event _KeyDown ครับ

คือถ้า Enter มันจะไม่เข้าไปดีเลย์ด้วย ผมอาจจะอธิบายไม่ค่อยเข้าใจนะครับ มึนๆ ตอนนี้ก็ลองๆไปหลายๆวิธีอยู่ครับ

w

Code (C#)
 private void handleTypingTimerTimeout(object sender, EventArgs e)
        {
            var timer = sender as Timer;
            if (timer == null)
            {
                return;
            }
//เอาคำที่พิมพ์ค้นหาไป Query แล้วนำข้อมูลลง dataGridView1 เป็น dropdownlist ครับตรงนี้ จะเป็นหน้าต่างให้เลือกสินค้า
timer.Stop();
}

private void txtitem_TextChanged(object sender, EventArgs e)
        {
            if (_typingTimer == null)
            {
                _typingTimer = new Timer();
                _typingTimer.Interval = 300;

                _typingTimer.Tick += new EventHandler(this.handleTypingTimerTimeout);
            }

            _typingTimer.Stop(); // Resets the timer
            _typingTimer.Tag = (sender as TextBox).Text;
            _typingTimer.Start(); 
        }

private void txtitem_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control & e.KeyValue == 86)
            {
                e.Handled = true;
                e.SuppressKeyPress = true;
            }

            if (e.KeyCode == Keys.Enter)
            {
                //นำแถวที่เลือกใน  dataGridView1 ไป Query ลง Item_dataGridView (นึกภาพโปรแกรมขายสินค้าครับ) เลือกเสร็จลงตารางด้านล่าง
            }

if (Item_dataGridView.Visible == true && Item_dataGridView.Rows.Count > 0)
            {
                if (e.KeyCode.Equals(Keys.Up))
                {
                    itemselectUpRow();
                }
                if (e.KeyCode.Equals(Keys.Down))
                {
                    itemselectDownRow();
                }
                e.Handled = true;
            }//end if
        }






ประวัติการแก้ไข
2017-12-25 16:03:26
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 15:48:54 By : nPointXer
 

 

No. 3



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ขั้นตอนการทำงาน
1. พิมพ์ค้นหา โปรแกรมจะนำคำที่พิมพ์ ไปค้นหาคำใกล้เคียงไปลง dataGridview1
2. เลือกสินค้าที่ต้องการใน dataGridview1 เสร็จกด Enter
3. มันจะเอารหัสสินค้า บาร์โค้ด ชื่อสินค้า ที่ได้จากการเลือกในข้อ 2 ไปไว้ที่ txtitem เช่น 10-02123 8851515604557 Billberry ทุกอันขั้นด้วยเว้นวรรค เพื่อจะนำไปค้นหาในฐานข้อมูลแล้วนำลง Item_dataGridView

ใช้งานก็ประมาณนี้ Code (C#)
txtItem.Text = '10-02123 8851515604557 Billberry';
string ckitem = txtItem.Text;
string[] ckcode = ckitem.Split(' ');
//เอา รหัสสินค้า = ckcode[0] และ บาร์โค้ด = ckcode[1] ไปใช้งาน

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 16:12:08 By : nPointXer
 


 

No. 4

Guest


จะเอา dataGridView1 ไปค้น หรือว่าเอา txtitem ไปค้นกันรึครับ

อ่านแล้วก็ยังงงๆ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 16:12:33 By : Dr.K
 


 

No. 5



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : Dr.K เมื่อวันที่ 2017-12-25 16:12:33
รายละเอียดของการตอบ ::
ฮ่าๆ สงสัยถามได้ครับ

ตอนแรกเราเอาคำที่พิมพ์ค้นหาใน txtitem ไปค้นคำใกล้เคียงแล้วเอาใส่ dataGridView1 ที่เราทำเป็น dropdownlist
เช่นพิมพ์ "berry" มันก็จะขึ้นสินค้าที่มีคำว่า "berry" ในคำ ก็เอามาใส่ dataGridView1


ทีนี้เราเลือกโดยกดลูกศรขึ้นลง แล้วก็กด Enter (ถ้าสินค้าไหนมีตัวเดียวมันก็จะขึ้นอันเดียว)
/

โปรแกรมก็จะเอาข้อมูลแถวที่เราเลือกมาแก้ไข textbox ที่ชื่อ txtitem ครับ
จาก "berry" เป็น "20-00066 8851515604557 NB Billberry 30T"

หลังจากนั้นมันจะเด้งไปที่ช่องจำนวน คือใส่จำนวนสินค้าแล้วกด Enter อีกรอบถึงจะลงไป Item_dataGridView ด้านล่างครับ
โดยโปรแกรมก็จะเอาเฉพาะ Code และ BarCode ไปคิวรี่เอาข้อมูลมาลง Item_dataGridView ครับ
แยกข้อมูลใน txtitem โดยวิธีในคอมเม้น No.3 ครับผม

ขอโทษนะครับ ตอนแรกผมไม่รู้จะอธิบายยังไง เริ่มยังไงดี สงสัยตรงไหนถามได้อีกครับ


เครื่องยิงบาร์โค้ดตั้งไว้เวลายิงเสร็จ Enter ครับ ปัญหาอยู่ที่ Enter อันสุดท้ายนี่แหละ
โปรแกรมมันมองว่า txtitem มีตัวอักษรก็จริง แต่ dataGridView1 ยังไม่มีข้อมูล เพราะอยู่ระหว่างดีเลย์
แต่การ Enter มันจะเข้าไป _KeyDown เลยครับมันไม่มีดีเลย์ ดีเลย์อยู่แต่ใน _TextChanged


ประวัติการแก้ไข
2017-12-25 16:35:37
2017-12-25 16:54:14
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 16:33:02 By : nPointXer
 


 

No. 6

Guest


อาจจะทำได้แบบนี้ครับ

Code
ตอนแรกเราเอาคำที่พิมพ์ค้นหาใน txtitem ไปค้นคำใกล้เคียงแล้วเอาใส่ dataGridView1 ที่เราทำเป็น dropdownlist เช่นพิมพ์ "berry" มันก็จะขึ้นสินค้าที่มีคำว่า "berry" ในคำ ก็เอามาใส่ dataGridView1


ตัดทั้ง handleTypingTimerTimeout และ txtitem_TextChanged ซึ่งมันเกี่ยวเนื่องกันออกไปก่อน
พูดง่ายๆคือไม่ควร ค้น ผ่าน txtitem_TextChanged นั่นเอง
เหลือแค่ txtitem_KeyDown

Code (C#)
private void txtitem_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                //(ค้นหาแบบ LIKE %text%) โดยเพิ่ม รูปแบบการค้นหาประมาณนี้
               // select * from tatble where รหัสคินค้า LIKE %text% OR บาร์โค้ด LIKE %text% OR ชื่อสินค้า LIKE %text% OR
               // แบบนี้ User สามารถค้นได้ทั้ง รหัสคินค้า บาร์โค้ด  หรือ ชื่อสินค้า  ก็ได้
               //ค้นเสร็จก็จัดการ ลงใน datagrid เป็นอันจบ
            }

        }


Code
โปรแกรมก็จะเอาข้อมูลแถวที่เราเลือกมาแก้ไข textbox ที่ชื่อ txtitem ครับ จาก "berry" เป็น "20-00066 8851515604557 NB Billberry 30T"


ให้เขียนในรูปแบบประมาณนี้
Code (C#)
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            txtitem.Text = dataGridView1[0, e.RowIndex].Value + " " + dataGridView1[1, e.RowIndex].Value + " " + dataGridView1[2, e.RowIndex].Value;
        }

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 17:05:22 By : Dr.K
 


 

No. 7



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 6 เขียนโดย : Dr.K เมื่อวันที่ 2017-12-25 17:05:22
รายละเอียดของการตอบ ::
พูดถึงอันแรกนะครับ
แสดงว่า dataGridView1 จะแสดงรายการใกล้เคียงก็ต่อเมื่อเราต้องกด Enter ใช่ไหมครับ
= ถ้าผมอยากให้พิมพ์แล้วขึ้นแสดงคำใกล้เคียงเลย ต้องทำอย่างไรครับ ขอแค่ให้หน่วงเวลาให้เราพิมพ์เสร็จก่อนค่อยเอาไปค้นหา เพราะตอนนี้ยิงบาร์โค้ดมันเอาไปค้นหาทีละตัวเลย หน่วงเวลาทั้ง Enter ด้วยครับ

ยิงบาร์โค้ด 8851515604557 ยิงเสร็จขึ้นคำใกล้เคียงที่ dataGridView1 แล้ว Enter ตามปิดท้าย เป็น Step เลยครับ

ส่วนอันที่ 2 ใช้เหมือนที่ผมใช้อยู่ครับ ขอบคุณครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 17:28:43 By : nPointXer
 


 

No. 8

Guest


ตอบความคิดเห็นที่ : 7 เขียนโดย : nPointXer เมื่อวันที่ 2017-12-25 17:28:43
รายละเอียดของการตอบ ::
แบบนั้นคงต้องใช้ TextChanged แล้วใช้การหน่วงเวลา ครับ

Code (C#)
private void txtitem_TextChanged(object sender, EventArgs e)
{
              System.Threading.Thread.Sleep(5000) // หน่วงซัก 5 วิ 

               //(ค้นหาแบบ LIKE %text%) โดยเพิ่ม รูปแบบการค้นหาประมาณนี้
               // select * from tatble where รหัสคินค้า LIKE %text% OR บาร์โค้ด LIKE %text% OR ชื่อสินค้า LIKE %text% OR
               // แบบนี้ User สามารถค้นได้ทั้ง รหัสคินค้า บาร์โค้ด  หรือ ชื่อสินค้า  ก็ได้
               //ค้นเสร็จก็จัดการ ลงใน datagrid เป็นอันจบ
}




แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 17:46:19 By : Dr.K
 


 

No. 9



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : Dr.K เมื่อวันที่ 2017-12-25 17:46:19
รายละเอียดของการตอบ ::
ถ้าใช้แบบนี้มันจะหน่วยทุกๆตัวอักษรที่พิมพ์ลงไปเลยครับ เช่น 8 (5วิ) 8 (5วิ) 5 (5วิ) 1 (5วิ) .... พิมพ์เสร็จเกือบนาทีเลย เพราะเป็น _TextChanged

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 17:55:15 By : nPointXer
 


 

No. 10

Guest


ตอบความคิดเห็นที่ : 9 เขียนโดย : nPointXer เมื่อวันที่ 2017-12-25 17:55:15
รายละเอียดของการตอบ ::
ใช้แล้วครับ
ถึงได้บอกว่า มันไม่ค่อยเหมาะ เมื่อเทียบกับ การกด Enter ครับ
และอีกแบบคือ Leave แต่ก้ไม่เหมาะเหมือนกันครับ




แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 18:18:28 By : Dr.K
 


 

No. 11



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : Dr.K เมื่อวันที่ 2017-12-25 18:18:28
รายละเอียดของการตอบ ::
การเอื้อมมือไปกด Enter ตอนถือสินค้าไปยิงบาร์โค้ด มันก็ทุลักทุเลหน่อย การใช้เวลาก็พอๆกับค้นหาทีละตัวอักษรครับ ยิงทีใช้ 3-4 วินาที กว่าจะแสดงผล แต่ถ้าเอื้อมมือมากด Enter ก็คิดว่าน่าจะประมาณนี้เหมือนกัน เดี๋ยวผมลองๆหาวิธีหน่วงเวลาแบบอื่นๆใน Internet อยู่ครับ ถ้าได้ยังไงจะมาบอกความคืบหน้าครับ


ใครมีวิธีอื่นๆแนะนำบอกได้ครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-25 18:46:49 By : nPointXer
 


 

No. 12



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอน Where เอาทุก field มา concat กัน แล้ว like %% ดูครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 08:55:47 By : adminliver
 


 

No. 13



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 12 เขียนโดย : adminliver เมื่อวันที่ 2017-12-26 08:55:47
รายละเอียดของการตอบ ::

คือปัญหาอยู่ที่ เวลายิงบาร์โค้ดแล้วมันเอาแต่ละตัวที่เพิ่มเข้าไปใน textbox ไปค้นหาครับ ผมอยากให้พิมพ์เสร็จก่อนค่อยเอาไปค้นหา สมมุติบาร์โค้ด 8851342
8 มันก็เอา 8 ไปค้นหา
88 มันก็เอา 88 ไปค้นหา
885 มันก็เอา 885 ไปค้นหา
8851 มันก็เอา 8851 ไปค้นหา
88513 มันก็เอา 88513 ไปค้นหา
885134 มันก็เอา 885134 ไปค้นหา
8851342 มันก็เอา 8851342 ไปค้นหา
เอาจริงๆบาร์โค้ดยาวกว่านี้นะครับ ลองคิดดูเราเสียเวลาไปกี่วินาทีกับการค้นหาแต่ละตัวอักษร ผมนับได้ 2-4 วินาที อาจจะไม่นานมากแต่ถ้าเราทำหลายสินค้ามันก็เสียเวลาไม่ใช่น้อย

ทีนี้ผมก็ทำตามคำแนะนำ No. 1 คือหน่วงเวลา ผมตั้งไว้ 300ms ซึ่งก็ใช้ได้เลย แต่มาติดปัญหาอีกครั้งตอนมัน Enter สุดท้ายนี่แหละ (เพราะบาร์โค้ดยิงเสร็จมันจะขึ้นบรรทัดใหม่ใช่ไหมละ) พอมัน Enter แต่ข้อมูลยังไม่ได้ Query เพราะติดหน่วงเวลาอยู่

ดูตามภาพนะครับ ถ้าสมมุติเราพิมพ์เสร็จรอ 300ms มันจะเอาข้อมูลที่ใกล้เคียงมาแสดงใน dataGridView1
w

สมมุติการพิมพ์ค้นหาเนาะ พิมพ์ว่า berry มันก็จะขึ้นแบบภาพด้านล่างนี้ คือแสดงข้อมูลสินค้าที่มีคำว่า berry ใน dataGridView1
ถ้ายิงบาร์โค้ดแน่นอนมันจะขึ้นสินค้าเดียว แล้วตัวเครื่องยิงบาร์โค้ดมัน Enter เมื่อไร ก็เป็นการเลือกสินค้า พอเข้าใจเนาะ
/

มาต่อที่การยิงบาร์โค้ดครับ ใน dataGridView1 ยังว่างเปล่า เพราะติดหน่วงเวลาที่ผมตั้งไว้ 300ms แล้วมีการกด Enter ก่อนที่มีข้อมูลบน dataGridView1 มันก็จะไปเข้าเงื่อนไขว่า ไม่พบสินค้า "8851342" เพราะไม่พบอะไรใน dataGridView1

จริงๆมันอาจจะรอ..ประมวลผลอยู่ 300ms หลังจากขึ้นข้อความไม่พบสินค้าแล้ว ..ใน dataGridView1 ก็แสดงข้อมูลสินค้าบาร์โค้ด 8851342 ขึ้นมา เพราะหมดเวลาหน่วงแล้ว

อ่าวทีนี้ผมก็เลยเจอกับปัญหาใหม่ที่ว่าทำยังไงให้ Enter มันหน่วงด้วยกับเขา เพราะการกด Enter มันเข้า Event _KeyDown แต่การพิมพ์ตัวอักษรมันเข้า Event _TextChanged งื้อ.. .ช่วยคิดหน่อยครับ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 13:37:05 By : nPointXer
 


 

No. 14



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 13 เขียนโดย : nPointXer เมื่อวันที่ 2017-12-26 13:37:05
รายละเอียดของการตอบ ::
If e.KeyData = Keys.Enter Then
System.Threading.Thread.Sleep(5000)
MessageBox.Show("OK")
End If

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 14:23:58 By : adminliver
 


 

No. 15



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 14 เขียนโดย : adminliver เมื่อวันที่ 2017-12-26 14:23:58
รายละเอียดของการตอบ ::
ทำแบบนั้นไม่ได้ครับ เพราะทั้งโปรแกรมจะหยุดการทำงานไป ไม่ใช่แค่เพราะ Enter นะครับ รวมถึงการคิวรี่ข้อมูลของรหัสบาร์โค้ดด้วยครับ ผลออกมาคือ รอ..5วินาที แล้วทุกอย่างก็เกิดปัญหาเหมือนเดิม ... No.8 No.9 ผมทำไปแล้วครับ



แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 14:53:35 By : nPointXer
 


 

No. 16



โพสกระทู้ ( 3,939 )
บทความ ( 23 )



สถานะออฟไลน์
Facebook

ลองเพิ่มปุ่มค้นหาดีไม๊ครับ

555
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 15:04:14 By : lamaka.tor
 


 

No. 17



โพสกระทู้ ( 280 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 15 เขียนโดย : nPointXer เมื่อวันที่ 2017-12-26 14:53:35
รายละเอียดของการตอบ ::
ลอง timer เป็น step ดูยังครับ
time1
query
timer2
query
time3
query
.
.
.
***ถ้าเจอข้อมูลที่ใช้ก็ Exit sub ออกไปเลย



ประวัติการแก้ไข
2017-12-26 15:14:10
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 15:10:02 By : adminliver
 


 

No. 18



โพสกระทู้ ( 316 )
บทความ ( 0 )



สถานะออฟไลน์


ถ้าเป็นผม ผมน่าจะแยกช่องสำหรับบาร์โค้ดอันหนึ่ง และ สำหรับการค้นหาอันหนึ่งคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 15:12:30 By : OOP
 


 

No. 19



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 16 เขียนโดย : lamaka.tor เมื่อวันที่ 2017-12-26 15:04:14
รายละเอียดของการตอบ ::
ถ้าทำแบบนี้ น่าจะเหมือนวิธีที่ Query เมื่อกดปุ่ม Enter ครับ แต่ผู้ใช้ไม่อยากได้ ผู้ใช้บอกอยากให้การทำงานเหมือน Google ครับ


ตอบความคิดเห็นที่ : 17 เขียนโดย : adminliver เมื่อวันที่ 2017-12-26 15:10:02
รายละเอียดของการตอบ ::
ไม่เข้าใจคำอธิบายครับ ขอคำแนะนำอีกนิดนึงครับ ><


ตอบความคิดเห็นที่ : 18 เขียนโดย : OOP เมื่อวันที่ 2017-12-26 15:12:30
รายละเอียดของการตอบ ::
วิธีนี้ผู้ใช้ต้องจับเมาส์เลือกช่องที่จะค้นหาครับ น่าจะเสียเวลานิดนึงแต่การค้นหาก็จะไวขึ้นมากอยู่
คล้ายๆกับวิธีที่ผมทำช่องติ๊กถูกครับ ประหยัดเนื้อที่กว่า


ถ้าไม่มีจริงๆก็น่าจะใช้วิธีที่ผมกล่าวไว้ข้างต้น

Quote:
สร้าง checkbox ให้ผู้ใช้งาน (กดติ๊กออก)เมื่อต้องการค้นหาด้วย รหัส และชื่อสินค้า เพราะส่วนมากจะใช้ยิงบาร์โค้ดเลยตั้ง default ให้ติ๊กไว้ ยิงเสร็จจะเด้งมาติ๊กที่ checkbox เหมือนเดิมเพื่อรอการค้นหาด้วยบาร์โค้ดครั้งต่อไป

ถ้าติ๊กถูกจะค้นหาแบบบาร์โค้ด แบบ BarCode = '8851515604557' แบบนี้เลย จะไม่ใช้ BarCode Like % เหมือนการค้นหาสินค้าแล้ว เพราะบาร์โค้ดไม่มีซ้ำอยู่แล้ว มีก็ขึ้น ไม่มีก็บอกไม่พบไปเลย

แต่ก็เสียเวลาผู้ใช้มากดติ๊กเข้าติ๊กออกอยู่ดีครับ ถึงจะทำคีย์ลัดในการติ๊ก checkbox ออกก็เถอะ การใช้งานจริงก็ยังมีเสียจังหวะอยู่

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 15:35:11 By : nPointXer
 


 

No. 20



โพสกระทู้ ( 316 )
บทความ ( 0 )



สถานะออฟไลน์


แบบนี้ไม่ได้เหรอ ง่ายๆเลยไม่ต้องคิดไรมาก ถ้าจาก Barcode มันจะ Enter ให้อยู่แล้ว เข้า IF ส่วนค้นหาธรรมดาเข้า ELSE
Code (C#)
 private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                //ค้นหาแบบ textBox1.Text=Barcode
            }
            else
            {
                //ค้นหาแบบ  Column LIKE textBox1.Text
            }
        }



ประวัติการแก้ไข
2017-12-26 15:58:53
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 15:56:49 By : OOP
 


 

No. 21



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 20 เขียนโดย : OOP เมื่อวันที่ 2017-12-26 15:56:49
รายละเอียดของการตอบ ::
สักครู่นะครับ ขอลองดูก่อน.. เหมือนจะคิดอะไรออกนิดหน่อย



ประวัติการแก้ไข
2017-12-26 16:03:36
2017-12-26 16:05:20
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 16:02:47 By : nPointXer
 


 

No. 22



โพสกระทู้ ( 228 )
บทความ ( 0 )



สถานะออฟไลน์


ผมแก้ปัญหาโดยทำให้ _KeyDown ทำงานหลังจาก _TextChanged ประมวลผลเสร็จครับ
_KeyDown เฉพาะการทำงาน e.KeyCode == Keys.Enter นะครับ ได้ตามนี้

Code (C#)
        private bool tryagain = true;

        private void handleTypingTimerTimeout(object sender, EventArgs e)
        {
            var timer = sender as System.Windows.Forms.Timer;
            if (timer == null)
            {
                return;
            }

            //ค้นหาคำใกล้เคียงไปลง dataGridview1

            timer.Stop();
            tryagain = false; //เปลี่ยนสถานะให้ KeyDown Enter ทำงาน
        }

        private void txtitem_TextChanged(object sender, EventArgs e)
        {
            tryagain = true;
            if (_typingTimer == null)
            {
                _typingTimer = new System.Windows.Forms.Timer();
                _typingTimer.Interval = 30;

                _typingTimer.Tick += new EventHandler(this.handleTypingTimerTimeout);
            }

            _typingTimer.Stop(); // Resets the timer
            _typingTimer.Tag = (sender as TextBox).Text;
            _typingTimer.Start();
        }

        private async void txtitem_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                while (tryagain) { await Task.Delay(10); } //ตรงนี้ก็วนรอจนกว่า tryagain ใน _TextChanged จะเปลี่ยนสถานะ หรือทำงานเสร็จแล้วนั่นเอง
                //นำสินค้าที่เลือกใน dataGridView1 ไปใช้งาน
            }//end if
        }


ขอบคุณทุกความเห็นนะครับ ช่วยกันเยอะเลยปลื้มๆ คำตอบแต่ละท่านทำให้ผมได้ทริควิธีการแก้ปัญหาเหล่านี้มา อาจเป็นการแก้ปัญหาที่ซับซ้อนไปหน่อย แต่แค่นี้ก็ใช้งานได้ละครับ ผมยังน้อยประสบการณ์ ฮ่า ๆ ๆ ;))
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-12-26 17:31:56 By : nPointXer
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ช่วยคิดวิธี Search ข้อมูลหน่อยครับ คือเวลาพิมพ์ค้นหาโดยเฉพาะยิงบาร์โค้ด 1 ตัวอักษรมันก็เอาไป Query ตลอด
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2019 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 , 08-9968-0655 อัตราราคา คลิกที่นี่