ขอสอบถามเรื่องค้นหาข้อมูลในฐานข้อมูลทีละหลายๆตัวในครั้งเดียว VB.Net ครับ
ถ้า SQL Server ทำเป็น Link Server ไว้ครับ จากนั้นจะใช้การสร้าง VIEW หรืออะไรก็ว่าไป โดยสามารถ JOIN / UNION ได้หลาย ๆ ตารางครับ
Date :
2015-04-21 14:51:08
By :
mr.win
พี่วิน
แบบว่าคือผมมีข้อมูลอยู่ในฐานข้อมูลแล้วผมต้องการจะค้นหาข้อมูลแต่ต้องการค้นหาทีละหลายๆตัวดังตัวอย่างผมใช้ DataGridView1
DataGridView1
เมือกดปุ่มค้นหาก็จะไปดึงข้อมูลจากฐานข้อมูลมาแสดงใน DataGridView2 ตามข้อมูลที่ค้นหาอ่ะครับ ผมเขียนด้วยภาษา VB 2010 ครับช่วยแนะนำหน่อยครับ
DataGridView2
ประมาณนี้พี่
ประวัติการแก้ไข 2015-04-21 15:51:21 2015-04-27 08:17:28
Date :
2015-04-21 15:49:59
By :
ืNew_User
จัดการที่ Query ครับ จะ JOIN หรือ UNION ก็ว่าไป
Date :
2015-04-22 09:55:28
By :
mr.win
พี่ครับครับคือ ผม JOIN SQL ไว้แล้วพี่ แต่ผมยังงงอยู่ว่าจะเขียน Code VB ออกมายังไงให้ไปดึงข้อมูลจากดาต้าเบสมาเช็คกับ DataGridView1 จากนั้นให้มาโชว์ใน DataGridView2 อ่ะครับ
ประวัติการแก้ไข 2015-04-24 13:23:58 2015-04-24 16:57:32 2015-04-25 08:11:34
Date :
2015-04-24 12:54:36
By :
New_User
คือผมใช้DataGridView1 เป็นตัวค้นหาแทน Textbox อ่ะครับเพราะ DataGridView มันค้นหาได้ทีละหลายตัว Textbox มันค้นได้ทีละตัวพอตัวอย่างไหมครับ
ประวัติการแก้ไข 2015-04-25 08:12:36
Date :
2015-04-25 08:11:52
By :
New_User
เงียบเลย
Date :
2015-04-25 17:04:55
By :
New_User
Code (VB.NET)
Private Sub Button6_Click(sender As System.Object, e As System.EventArgs) Handles Button6.Click
Dim fm As New Form2
If (fm.ShowDialog = Windows.Forms.DialogResult.OK) Then
Me.TextBox5.Text = fm.ListView1.SelectedItems(0).Text 'รับค่ากลับ
End If
End Sub
ดูเป็นแนวทางแล้วกันน่ะ ตัวอย่างใช้ ListView
ประวัติการแก้ไข 2015-04-25 18:27:55
Date :
2015-04-25 18:24:24
By :
ipstarone
ถ้าทำเป็น datagrid เพื่อให้เลือกได้หลายอันอย่างเช่นการทำ checkbox ไว้ในแต่ละแถว
จากนั้นเมื่อเราติ้กที่ checkbox ให้ datagrid2 ค้นหาข้อมูลมาแสดงโดยถึงค่าจาก row ของ datagrid1 ใช่ไหม
สมมุติว่า datagrid1 ดึงข้อมูลจากตาราง Order
และ datagrid2 ดึงข้อมูลจาก Order_Detail นะครับ
datagrid1 แสดงข้อมูลหลังจากค้นหามาแล้ว
Code (SQL)
select *
from dbo.OrderData o
where o.OrderId like '%aaaa%' --aaa คือตัวแปรสตริงที่รับจาก textbox หรือ input ต่างๆ
เมื่อเราดักการเปลี่ยนแปลงที่ตัว checkbox แล้วอัพเดท datagrid2 ต่อ
Code (SQL)
select *
from dbo.OrderData_Detail od
where od.OrderId in ('xxx','yyy') --xxx และ yyy คือ รหัสของ OrderData โดยรับค่าจาก datagrid1 ที่เลือกแล้วต่อสตริงเองใน vb ครับ
ถ้าอ่านโจทย์ไม่ผิด จขกท.ต้องการวิธีการดักอีเวนท์ตอนติ้ก checkbox ละมั้ง
พอจะช่วยได้แค่นี้แหละ -*-
ประวัติการแก้ไข 2015-04-25 18:59:51
Date :
2015-04-25 18:57:57
By :
deksoke
ความคิดเห็น No. 7 พี่ Progamon
ถ้าใช้ TextBox มันค้นหาทีละตัวอ่ะครับผมต้องการใช้ DataGridView ข้อมูลก็เหมือนตัวอย่าง
DataGridView
สมุติอยากรู้ว่าข้อมูล 5 ตัวนี้มีตัวไหนไม่มีในฐานข้อมูลบ้างต้องเอาข้อมูลใน DataGridView มาวนลูปอะไรยังไง ผมงง
Date :
2015-04-27 08:22:49
By :
New_User
ความคิดเห็น No. 8 พี่ Furikuri
ผมไม่ได้ต้องการจะเช็คอะไรเลยครับพี่ ผมต้องการใช้ DataGridView ข้อมูลก็เหมือนตัวอย่าง
DataGridView
สมุติอยากรู้ว่าข้อมูล 5 ตัวนี้มี พอกดค้นหาตัวไหนที่มีในฐานข้อมูล ก็ให้มาโชว์ที่ DataGridView2 ตัวไหนไม่มีก็แจ้งเตือนว่าไม่มีประมาณนี้ครับต้องเอาข้อมูลใน DataGridView มาวนลูปอะไรยังไง
ใช้DataGridView เป็นตัวค้นหาเพื่อโชว์ในDataGridView อีกอันอ่ะครับ
ผมงง VB ครับ
ประวัติการแก้ไข 2015-04-27 09:01:00 2015-04-27 09:02:12 2015-04-27 09:02:19
Date :
2015-04-27 08:27:47
By :
New_User
จากที่อ่านๆแบบงงๆๆๆ ประมาณว่าเหมือนมันไม่ใช่การค้นหานะครับ
แค่แสดงข้อมูลแบบบ้านๆ แล้วก็เช็คของแค่นั้นเอง
database มีจำนวนปะละครับ อย่าง หนังสือ มี 10 เก้าอี้มี 0 ไรมาณนี้
หรือมีวิธีบอกป่ะละครับว่าตัวไหนมีไม่มี
เพราะให้มาแค่นี้คงยากเหมือนกัน
Date :
2015-04-27 11:39:12
By :
lamaka.tor
ความคิดเห็น No. 11 พี่ TOR_CHEMISTRY
คือเป็นการค้นหาเฉยๆครับประเด็นคือผมต้องการค้นหาข้อมูลหลายตัวพร้อมกันเฉยๆผมเลยใช้DataGridView เป็นตัวกรอกข้อมูลที่จะค้นหาเพราะถ้าใช้ TextBox มันใส่ได้ทีละตัวถ้ามี 5 ข้อมูลก็ต้องค้นหา 5 ทีแต่ใช้DataGridView มันค้นหาทีเดียว 5 ตัวได้เลย
ผมเลยอยากจะรู้ว่าโค้ต VB มันจะเขียนออกมาแบบไหนผมก็งงอยู่(ยังมือใหม่หัดเขียนครับ)
จากตัวอย่าง
เมื่อเรากรอกประเภทที่จะค้นหาแล้วเมือกดค้นหาที่ใช้ DataGridView 1 ข้อมูลตัวไหนที่มีข้อมูลในฐานข้อมูลก็จะโชว์ที่ ใช้DataGridView 2 ครับ
ประวัติการแก้ไข 2015-04-27 12:53:26 2015-04-27 12:54:13
Date :
2015-04-27 12:50:51
By :
์New_User
หากคำถามคือจะค้นหาว่า ข้อมูฃลหลายๆตัวนั้นมีในตารางข้อมูลหรือเปล่า
มันหาได้หลายทาง ง่ายที่สุดก็วนลูปเอาทีละตัว
แต่ถ้าจะ check ทีเดียวหมดมันจะซับซ้อนอีกนิดหน่อย
เช่นสร้าง temporary table แล้ว insert ข้อมูลที่ต้องการตรวจลงไป
จากนั้นก็ join กัน ถ้าไม่มีจะมี field ของตารางหลักเป็น null
เคยๆ โพสกันหลายรอบหลายสมัยในบอร์ดนี้แล้วไปค้าดูนะครัช
Date :
2015-04-27 12:53:08
By :
DOG{B}
ปล.อย่าไปยึดติดกับ ui หรือ control อะไรมากมาย
หา main solution ของปัญหาให้ได้ก่อน ค่อยเอาให้ ui รับค่ามา
อย่าง textbox นั่นใส่ ; คั่นระหว่างข้อมูลมันก็หาทีละหลายๆตัวได้ครัช
เห็นชัดๆก้ช่องกรอก email นั่น เวลาจะส่งมันส่งทีเดียวได้หลาย email ชิมิ
Date :
2015-04-27 12:56:41
By :
DOG{B}
ถ้าผมใช้DataGridView เป็นตัวค้นหาผมจะเขียนคำสั่งให้มันวนลูปยังไงหรอครับ
หรือมีวิธีไหนบ้างที่จะค้นหาได้ทีละหลายๆตัวได้
ประวัติการแก้ไข 2015-04-27 13:00:16 2015-04-27 13:01:34
Date :
2015-04-27 12:58:38
By :
New_User
อ่านตั้งนานเพิ่งจะเข้าใจ ง่ายๆเลยจะยกตัวอย่างให้เห็นภาพที่สุดละกัน
เปรียบเสมือนคุณไปค้นหาสินค้าในเว็บขายของออนไลน์ มันจะแยกหมวดหมู่ว่า "โทรศัพท์", "รถยนต์", "เครื่องใช้ไฟฟ้า" ฯลฯ
คุณต้องการเลือกหมวดหลายๆหมวดแล้วพอกดค้นหาก็ให้สินค้าในหมวดที่เลือกแสดงขึ้นมาพร้อมกัน
อันดับแรก
คุณต้องวนลูปเก็บรหัสของหมวดหมู่ที่อยู่ใน DataGrid1 มาก่อนครับ
เมื่อ Datasource เป็น DataTable ก็วนลูปด้วย For หรือ For Each เช่น
Code (VB.NET)
dim simpleString as string = ""
For i as integer = 0 To dtGrid1.Rows.Count - 1
dim dr as datarow = dtGrid1.Rows(i)
simpleString &= dr("ID") & IIF(dtGrid1.Rows.Count -1 = i,"",",")
Next
'เมื่อวนลูปเสร็จแล้วจะได้ข้อมูลประมาณนี้
'simpleString = "2,5,65,121"
dim sqlQuery as string = "select * from Order_Detail od where od.OrderId in (" & simpleString ")"
'แล้วส่งคิวรีนี้ไปดึงข้อมูลจากฐานข้อมูลครับ
ให้ศึกษาพวก For Loop, While Loop ไว้ครับ
สบายแน่นอน
Date :
2015-04-27 14:38:30
By :
deksoke
ความคิดเห็น No. 16 พี่Furikuri
ใช่แล้วครับผมแค่ต้องการ อย่างนี้แหละเดี๋ยวผมลองทำก่อนนะครับได้ผลไงจะมารายงาน
ขอบคุณครับ
Date :
2015-04-28 08:22:14
By :
New_User
พี่ Furikuri
คือมันไม่ได้อ่ะครับมันError ตามตัวอย่างครับพอจะอธิบายได้ไหมครับผมไม่ค่อยจะเข้าใจเท่าไหร่เหมือนมันข้อมูลคนละประเภท หรือป่าวมั่วงง
ขอบคุณครับ
ประวัติการแก้ไข 2015-04-29 09:43:29 2015-04-29 09:46:18
Date :
2015-04-29 09:39:56
By :
New_User
Date :
2015-04-30 16:24:08
By :
New_User
มีไหมหน้อเงียบเลย
Date :
2015-05-02 08:12:04
By :
New_User
ช่วยทีครับมันขั้นแบบนี้แก้ยังไงครับมันไม่มีค่ามาให้แต่select ในฐานข้อมูลก็มีนะครับ
ประวัติการแก้ไข 2015-05-02 13:24:01
Date :
2015-05-02 10:00:12
By :
์New_User
ลืมมาให้คำตอบใช้แบบนี้ได้แน่นอนครับ
Code (VB.NET)
Dim simpleString As String = ""
simpleString &= "("
For r = 0 To dtGrid1.RowCount - 1
simpleString &= "'" & dtGrid1.Rows(r).Cells(0).Value & "'"
If r <> dtGrid1.RowCount - 1 Then
simpleString &= ","
End If
Next
simpleString &= ")"
Date :
2016-10-31 15:53:54
By :
ืNew_User
จาก #NO 23 ควรจะดักค่า DBNull.Value หรือ Nothing ด้วย
อันนี้เขียนให้ดูเล่นฯ (สำหรับผมง่ายพอฯกับหายใจเข้าและหายใจออก)
--- ครอบคลุมในทุกฯกรณี
Code (VB.NET)
Dim simpleString = "(" & String.Join("", (From r As DataGridViewRow In dtGrid1.Rows
Where Not r.IsNewRow
Select "'" & String.Format("{0}",r.Cells(0).Value).Trim() & "',")).TrimEnd(",") & ")"
+55555
Date :
2016-10-31 20:44:55
By :
หน้าฮี
string sql = "select F_Code,F_Name,CategoryFood_Tb.CF_CategoryFood,F_Price,F_image From (Food_Tb inner join CategoryFood_Tb on Food_Tb.[CF_Type]=CategoryFood_Tb.[CF_Type]) WHERE F_Code LIKE '" + txt_Fsearch.Text + "%' OR F_Name LIKE '" + txt_Fsearch.Text + "%'";
ดูตรงส่วน sql ใช้ คล้ายกัน ครับ ค้น หาตัวเลบ กับ ชื่อนำ น่า ได้สองอย่าง พร้อมกัน
SqlCommand cmd = new SqlCommand(sql, con);
con.Open();
DataTable dt = new DataTable();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
dataGridView1.DataSource = dt;
con.Close();
Date :
2016-11-19 16:31:23
By :
poonzacafe
Load balance : Server 04