workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« เมื่อ: 05 มีนาคม 2010, 10:02:02 » |
|
Private Sub CallData(Optional ByVal strQuery As String = "013043400") Dim strConn As String = "" Dim strSQL As String strConn = "Provider=Microsoft.Jet.OLEDB 4.0;Data Source=|DataDirectory|\BillPayment.mdb"
If ConnObj.State = ConnectionState.Open Then ConnObj.Close() ConnObj.ConnectionString = strConn ConnObj.Open()
Try strSQL = "SELECT tbUser.UserNo, tbUser.UserNickName, tbUser.UserName, tbUser.UserAddrress, tbUser.BillType, tbBill.BillMonth, tbBill.BillComment " & _ "FROM tbUser INNER JOIN tbBill ON tbUser.UserNo = tbBill.UserNo " & _ "WHERE (((tbUser.UserNo)=" & strQuery
DA = New OleDbDataAdapter(strSQL, ConnObj) DS.Clear() ' ' ' ' ' ' ' ' ' ' ' 'MessageBox.Show(DR("UserName"), "ผิดพลาด")
Catch ex As Exception MessageBox.Show(ex.ToString, "ผิดพลาด") End Try ConnObj.Close() End Sub ผมลองอ่านหนังสือ VB 2008 แล้วลองเขียนดู แต่ปรากฏว่าผมไม่เข้าใจในหนังสือเลย เลยอยากจะหาคนที่เขียนเป็นช่วยดูให้หน่อยครับ สมมุติว่าถ้าผมอยากจะเอาข้อมูล เช่น tbUser.UserName ใส่ใน Textbox1.text โดยใส่ค่า UserNo เข้าไป ผมจะต้องแก้ไขตรงไหนครับ  ขอบคุณครับ
|
|
|
บันทึกการเข้า
|
|
|
|
lupin
Newbie
พลังน้ำใจ: 5
ออฟไลน์
กระทู้: 41
|
 |
« ตอบ #1 เมื่อ: 05 มีนาคม 2010, 11:01:29 » |
|
เล่มเดียวกันเปล่า : Quick Start VB.NET 20008 ผู้แต่ง: ธนพล
|
|
|
บันทึกการเข้า
|
|
|
|
workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« ตอบ #2 เมื่อ: 05 มีนาคม 2010, 11:14:25 » |
|
คู่มือ Visual Basic 2005 ฉบับสมบูรณ์ครับ ของ DevBook
|
|
|
บันทึกการเข้า
|
|
|
|
workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« ตอบ #3 เมื่อ: 05 มีนาคม 2010, 12:14:15 » |
|
ขอขุดหน่อยครับ
|
|
|
บันทึกการเข้า
|
|
|
|
pbeer
ก๊วนเสียว
พลังน้ำใจ: 38
ออฟไลน์
กระทู้: 249
|
 |
« ตอบ #4 เมื่อ: 05 มีนาคม 2010, 13:12:04 » |
|
ผมไม่รู้ว่าคุณ workshop มีพื้นฐานการ Programming มากน้อยแค่ไหนนะครับ ผมขออธิบายเป็นบรรทัดๆ ไปละกันครับ ถ้าไม่เข้าใจค่อยมาขยายความละกันครับ Private Sub CallData(Optional ByVal strQuery As String = "013043400") อันนี้เป็นการสร้าง ฟังก์ชันขึ้นมาครับ โดยรับ พารามิเตอร์ ชื่อ strQuery (ซึ่งในทีนี้ก็ใช้เป็น UserNo ที่คุณต้องการก็ได้ครับ) โดยพารามิเตอร์ตัวนี้ไม่จำเป็นต้องส่งเข้ามาก็ได้ เนื่องจากมีการกำหนดเป็น "Optional" เอาไว้ครับ และมีค่า Default เป็น "013043400" Dim strConn As String = "" Dim strSQL As String อันนี้เป็นแค่การประกาศตัวแปรเฉยๆครับ ไม่มีอะไรมาก strConn = "Provider=Microsoft.Jet.OLEDB 4.0;Data Source=|DataDirectory|\BillPayment.mdb" อันนี้เป็นการกำหนด ConnectionString สำหรับการติดต่อกับ ดาต้าเบสครับ ถ้าดูจากโค้ดข้างบนแล้ว จะเป็นการใช้ Microsoft Access เป็นฐานข้อมูลนะครับ ส่วนสำคัญที่ต้องสังเกตุในบรรทัดนี้ก็คือ "Data Source=|DataDirectory|\BillPayment.mdb" คุณต้องกำหนด Path หลัง "Data Source=" ไปยังไฟล์ให้ถูกต้องนะครับ ถ้าติดปัญหาแนะนำไปดูได้ที่ http://www.connectionstrings.com If ConnObj.State = ConnectionState.Open Then ConnObj.Close() ConnObj.ConnectionString = strConn ConnObj.Open() ส่วนนี้เป็นการเริ่มต่อ ดาต้าเบส ด้วย connectionstring จากด้านบนครับ Try strSQL = "SELECT tbUser.UserNo, tbUser.UserNickName, tbUser.UserName, tbUser.UserAddrress, tbUser.BillType, tbBill.BillMonth, tbBill.BillComment " & _ "FROM tbUser INNER JOIN tbBill ON tbUser.UserNo = tbBill.UserNo " & _ "WHERE (((tbUser.UserNo)=" & strQuery
ส่วนนี้เป็นภาษา sql สำหรับกำหนดว่าจะคิวรีอะไรออกมาบ้างครับ เริ่มต้นอ่านข้อมูลจาก ดาต้าเบส DA = New OleDbDataAdapter(strSQL, ConnObj) DS.Clear() เท่าที่ดูเหมือนโค้ดยังไม่ครบนะครับ ด้านบนนี้เป็นแค่การ สร้าง DataAdapter เพื่อเตรียมอ่านข้อมูลจากดาต้าเบส ยังต้องเติมโค้ดตามนี้ครับ (ลองเอาไปปรับๆแก้ๆ ดูนะครับ ผมเขียนเอาสดๆเลย ไม่ได้ใช้ tool develop)DA.Fill(DS)
Dim t as new DataTable() t = DS.Tables(0)
TextBox1.Text = t.Rows(0)("UserName").ToString()
|
|
|
บันทึกการเข้า
|
ขายบัญชี Adsense For Web อายุ 7 ปี รับ PIN, รับเงินมาแล้วกว่า $20,000 สนใจ PM มาจ้าา
|
|
|
|
workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« ตอบ #6 เมื่อ: 05 มีนาคม 2010, 15:04:18 » |
|
+1 คุณ pbeer ก่อนนะครับ ผมยังไม่ได้อ่านรายละเอียดทั้งหมด (เดี๋ยวเย็นๆ เลิกงานจะลองทำครับ อาจจะรบกวนอีกครั้ง) พื้นฐานผมน้อยครับ ผมโม VB ได้ อ่าน code ได้ เขียน UI ได้ แต่ผมไม่เคยเขียนให้ติดต่อ database สำเร็จเลย ผมลองเขียนตามหนังสือให้ใส่ข้อมูลเข้า data binding ได้ แต่พอจะมาประยุกต์เป็นให้่เอามาใส่ textbox ผมกลับทำไม่ได้  จริงๆ ผมใส่ comment หลายๆบรรทัด เข้าไป เพื่อจะถามว่า ตรงนั้นควรจะใส่เป็นอะไร แต่ผมลืมเขียนในคำถาม  รบกวนใครทราบ พอจะอธิบาย บรรทัดพวกนี้อีกหน่อยไหมครับ ว่าทำไมต้องใช้ table(0) หรือใช้อะไรก็ได้ เช่น Table("Test" แล้วถ้าผมเขียนติดต่อหลายๆ table ผมจะต้องใส่ (1) ต่อไปหรือไม่ครับ DA.Fill(DS) Dim t as new DataTable() t = DS.Tables(0) TextBox1.Text = t.Rows(0)("UserName").ToString() ขอบคุณอีกครั้งครับ
|
|
|
บันทึกการเข้า
|
|
|
|
|
capsoon
Verified Seller
สมุนแก๊งเสียว
พลังน้ำใจ: 72
ออฟไลน์
กระทู้: 516
|
 |
« ตอบ #8 เมื่อ: 05 มีนาคม 2010, 16:00:52 » |
|
ว่าแต่หนังสือ VB 2008 พูดถึง LINQ หรือยังครับ ผมแนะนำให้ลองศึกษาพวก Linq ดูนะครับ ใช้ง่ายกว่า DataSet เยอะเลย ตามไปดู Sample ที่นี้ได้ครับ http://msdn.microsoft.com/en-us/vbasic/bb688088.aspx 
|
|
|
บันทึกการเข้า
|
ติดต่อสอบถามเรียนสร้างเกมส์จากเกมส์ดังได้ที่ 084-360-5145 ครับ
|
|
|
pbeer
ก๊วนเสียว
พลังน้ำใจ: 38
ออฟไลน์
กระทู้: 249
|
 |
« ตอบ #9 เมื่อ: 05 มีนาคม 2010, 16:06:34 » |
|
รบกวนใครทราบ พอจะอธิบาย บรรทัดพวกนี้อีกหน่อยไหมครับ ว่าทำไมต้องใช้ table(0) หรือใช้อะไรก็ได้ เช่น Table("Test") ใช้ได้ทั้งสองแบบครับ ถ้าเป็น table(0) เป็นการเรียกเอา Table แรก ที่อยู่ใน DataSet ออกมาครับ ส่วนอีกแบบนึงที่ส่งพารามิเตอร์เป็น String นั้น เป็นการเรียกเอา Table ที่มีชื่อตามที่ส่งไปออกมาใช้ครับ ข้อดีข้อเสียต่างกันนิดหน่อยครับ - แบบส่งเป็นตัวเลขก็คือเน้นสะดวกครับ กรณีที่ทำงานกับ Table เดียวก็ไม่ต้องไปตั้งชื่อไร
- แบบส่งเป็นชื่อก็เน้นความแม่นยำครับ กรณีที่ทำงานกับ Table หลายๆ Table ใน DataSet ตัวเดียวกัน จะได้เรียกไม่ผิดตัวครับ แต่ถ้าจะใช้วิธีนี้ตอนใส่ข้อมูลให้ DataSet ต้องใส่พารามิเตอร์เพิ่มดังนี้ครับ
เปลี่ยนจาก DA.Fill(DS) เป็น DA.Fill(DS, "TableName")
- แล้วเวลาเรียกก็ใช้ชื่อตามที่ใส่เข้าไป แทน เลข 0 ครับ
แล้วถ้าผมเขียนติดต่อหลายๆ table ผมจะต้องใส่ (1) ต่อไปหรือไม่ครับ ใช่ครับ แต่ถ้าจะติดต่อหลายๆ Table แนะนำให้ใช้วิธี ตั้งชื่อเอาดีกว่าครับ
DA.Fill(DS) บรรทัดนี้คือการสั่ง DataAdapter ยัดข้อมูลเข้า DataSet ครับ
Dim t as new DataTable() t = DS.Tables(0) TextBox1.Text = t.Rows(0)("UserName").ToString() ส่วนนี้คือการสร้าง DataTable มารับข้อมูลไปใส่ให้ TextBox ตรงนี้จริงๆแล้วสามารถเขียนได้อีกแบบนึงคือ ไม่ต้องสร้าง DataTable ก็ได้ครับ เรียกใช้จาก DataSet เอาเลยก็ได้
เปลี่ยน 3 บรรทัดด้านบน เป็นด้านล่างนี้ครับ
TextBox1.Text = DS.Tables(0).Rows(0)("UserName").ToString()
|
|
|
บันทึกการเข้า
|
ขายบัญชี Adsense For Web อายุ 7 ปี รับ PIN, รับเงินมาแล้วกว่า $20,000 สนใจ PM มาจ้าา
|
|
|
planetteam
ก๊วนเสียว
พลังน้ำใจ: 12
ออฟไลน์
กระทู้: 324
|
 |
« ตอบ #10 เมื่อ: 06 มีนาคม 2010, 13:10:41 » |
|
การเขียนโปรแกรม .net ที่ดี ควรจะ bind datasource ลง textbox ครับ
|
|
|
บันทึกการเข้า
|
|
|
|
workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« ตอบ #11 เมื่อ: 08 มีนาคม 2010, 10:09:29 » |
|
+ thank คุณ capsoon คุณ pbeer คุณ planetteam ครับ ขอศึกษาิีิีอีกนิด มีปัญหาจะรบกวนอีกที
|
|
|
บันทึกการเข้า
|
|
|
|
|
workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« ตอบ #13 เมื่อ: 04 พฤศจิกายน 2010, 15:48:20 » |
|
งงอีกแล้วครับ ขอขุดอีกที ผมเขียน code ง่ายๆ นี้เพื่อทดลอง ผมอยากจะใช้ PrintPreviewControl ผมกดที่ Button1 ยังไงก็ไม่แสดงเลยครับ แต่กด button2 มันทำงานได้ ใครพอจะทราบบ้างไหมครับ ว่าแก้ไขตรงไหน ขอบคุณทุกท่านครับ Public Class Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click PrintPreviewControl1.Document = PrintDocument1
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage e.Graphics.DrawRectangle(Pens.Blue, 10, 10, 100, 100) End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click PrintPreviewDialog1.Document = PrintDocument1 PrintPreviewDialog1.Show() End Sub End Class 
|
|
|
บันทึกการเข้า
|
|
|
|
Hikkie
ก๊วนเสียว
พลังน้ำใจ: 16
ออฟไลน์
กระทู้: 325
|
 |
« ตอบ #14 เมื่อ: 04 พฤศจิกายน 2010, 16:05:03 » |
|
PrintPreviewControl1.Show()
ลองดูครับผมก็ยังไม่ได้ลองเขียนเทสดู แต่ botton ดูแล้วมันไม่ทำไรเลย
|
|
|
บันทึกการเข้า
|
|
|
|
workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« ตอบ #15 เมื่อ: 04 พฤศจิกายน 2010, 16:08:54 » |
|
PrintPreviewControl1.Show()
ลองดูครับผมก็ยังไม่ได้ลองเขียนเทสดู แต่ botton ดูแล้วมันไม่ทำไรเลย
ไม่ได้ผลครับ แต่ก็ขอบคุณมากๆ ครับ
|
|
|
บันทึกการเข้า
|
|
|
|
workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« ตอบ #16 เมื่อ: 04 พฤศจิกายน 2010, 18:57:05 » |
|
ขอขุดอีกทีครับ 
|
|
|
บันทึกการเข้า
|
|
|
|
Google Banned Team
Newbie
พลังน้ำใจ: 8
ออฟไลน์
กระทู้: 44
|
 |
« ตอบ #17 เมื่อ: 04 พฤศจิกายน 2010, 19:02:26 » |
|
ดีครับ ศึกษา VB.NET , C#.NET และ C++.NET เพราะเป็นภาษาของ Microsoft และเราก็ใช้ระบบปฏิบัติการ Windows SQL ใน VB.NET ผู้พัฒนาทุกคนต้องเรียนรู้ครับ 
|
|
|
บันทึกการเข้า
|
|
|
|
workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« ตอบ #18 เมื่อ: 04 พฤศจิกายน 2010, 20:30:56 » |
|
ดีครับ ศึกษา VB.NET , C#.NET และ C++.NET เพราะเป็นภาษาของ Microsoft และเราก็ใช้ระบบปฏิบัติการ Windows SQL ใน VB.NET ผู้พัฒนาทุกคนต้องเรียนรู้ครับ  ขอบคุณครับ
|
|
|
บันทึกการเข้า
|
|
|
|
workshop
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 68
ออฟไลน์
กระทู้: 1,131
|
 |
« ตอบ #19 เมื่อ: 05 พฤศจิกายน 2010, 17:28:22 » |
|
ขอขุดหน่อยครับ มีใครพอจะช่วยได้บ้างไหม
|
|
|
บันทึกการเข้า
|
|
|
|
|