ใครเขียนโปรแกรม VB.net ช่วยสอนหน่อยครับ

เริ่มโดย workshop, 05 มีนาคม 2010, 10:02:02

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

workshop

    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

เล่มเดียวกันเปล่า : Quick Start VB.NET 20008 ผู้แต่ง: ธนพล

workshop

คู่มือ Visual Basic 2005 ฉบับสมบูรณ์ครับ
ของ DevBook

workshop


pbeer

ผมไม่รู้ว่าคุณ 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 มาจ้าา

capsoon

คุณ pbeer อธิบายได้ชัดเจนมากๆครับ ^^
:wanwan017: ติดต่อสอบถามเรียนสร้างเกมส์จากเกมส์ดังได้ที่ 084-360-5145 ครับ  :wanwan017: :wanwan017:

workshop

+1 คุณ pbeer ก่อนนะครับ

ผมยังไม่ได้อ่านรายละเอียดทั้งหมด (เดี๋ยวเย็นๆ เลิกงานจะลองทำครับ อาจจะรบกวนอีกครั้ง)

พื้นฐานผมน้อยครับ ผมโม VB ได้ อ่าน code ได้ เขียน UI ได้
แต่ผมไม่เคยเขียนให้ติดต่อ database สำเร็จเลย
ผมลองเขียนตามหนังสือให้ใส่ข้อมูลเข้า data binding ได้
แต่พอจะมาประยุกต์เป็นให้่เอามาใส่ textbox ผมกลับทำไม่ได้ :'(
จริงๆ ผมใส่ comment หลายๆบรรทัด เข้าไป เพื่อจะถามว่า ตรงนั้นควรจะใส่เป็นอะไร แต่ผมลืมเขียนในคำถาม :P


รบกวนใครทราบ พอจะอธิบาย บรรทัดพวกนี้อีกหน่อยไหมครับ ว่าทำไมต้องใช้ 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

เหตุผลที่ต้องใช้ table(0) เพราะได้ทำการ query ข้อมูล ออกมาแค่ 1 table หน่ะครับ มันจะเริ่มนับ index ที่ 0 หน่ะครับ

ผมแนะนำให้ใช้ ชื่อ table แทน table(0) ดีกว่าครับ จะได้ไม่งงว่า 0 หน่ะคือ Table อะไร

เช่น table("customer")  สู้ๆครับ ^^
:wanwan017: ติดต่อสอบถามเรียนสร้างเกมส์จากเกมส์ดังได้ที่ 084-360-5145 ครับ  :wanwan017: :wanwan017:

capsoon

ว่าแต่หนังสือ VB 2008 พูดถึง LINQ หรือยังครับ

ผมแนะนำให้ลองศึกษาพวก Linq ดูนะครับ ใช้ง่ายกว่า DataSet เยอะเลย

ตามไปดู Sample ที่นี้ได้ครับ http://msdn.microsoft.com/en-us/vbasic/bb688088.aspx
:wanwan017: ติดต่อสอบถามเรียนสร้างเกมส์จากเกมส์ดังได้ที่ 084-360-5145 ครับ  :wanwan017: :wanwan017:

pbeer

อ้างถึง
รบกวนใครทราบ พอจะอธิบาย บรรทัดพวกนี้อีกหน่อยไหมครับ ว่าทำไมต้องใช้ 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

การเขียนโปรแกรม .net ที่ดี ควรจะ bind datasource ลง textbox ครับ
ขาย สคริป 25satang 20000.- bath สคริป ประมูล
ขายระบบรับตัดบัตรทรูมันนี่

รับเขียนโปรแกรมตัดบัตรทรู,ไอเทมมอล,เวปส่ง sms ,เวปคลิปวีดีโอ,บอดพิคโพส,ออโต้โพส และอื่นๆ
ภาษาที่เขียน php,vb.net,asp.net,c#.net,delphi
http://www.goto69.com ผลงานของทีมทางด้านโปรแกรมเมอ

เบอร์โทร 0853941973  อีเมล์ [email protected]

workshop

+ thank
คุณ capsoon
คุณ pbeer
คุณ planetteam
ครับ
ขอศึกษาิีิีอีกนิด มีปัญหาจะรบกวนอีกที

capsoon

:wanwan017: ติดต่อสอบถามเรียนสร้างเกมส์จากเกมส์ดังได้ที่ 084-360-5145 ครับ  :wanwan017: :wanwan017:

workshop

งงอีกแล้วครับ ขอขุดอีกที
ผมเขียน 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

PrintPreviewControl1.Show()

ลองดูครับผมก็ยังไม่ได้ลองเขียนเทสดู แต่ botton ดูแล้วมันไม่ทำไรเลย

workshop

อ้างถึงจาก: Hikkie ใน 04 พฤศจิกายน 2010, 16:05:03
PrintPreviewControl1.Show()

ลองดูครับผมก็ยังไม่ได้ลองเขียนเทสดู แต่ botton ดูแล้วมันไม่ทำไรเลย

ไม่ได้ผลครับ แต่ก็ขอบคุณมากๆ ครับ

workshop


Google Banned Team


ดีครับ ศึกษา VB.NET , C#.NET และ C++.NET เพราะเป็นภาษาของ Microsoft และเราก็ใช้ระบบปฏิบัติการ Windows SQL ใน VB.NET ผู้พัฒนาทุกคนต้องเรียนรู้ครับ

:wanwan044:

workshop

อ้างถึงจาก: Google Banned Team ใน 04 พฤศจิกายน 2010, 19:02:26

ดีครับ ศึกษา VB.NET , C#.NET และ C++.NET เพราะเป็นภาษาของ Microsoft และเราก็ใช้ระบบปฏิบัติการ Windows SQL ใน VB.NET ผู้พัฒนาทุกคนต้องเรียนรู้ครับ

:wanwan044:

ขอบคุณครับ

workshop

ขอขุดหน่อยครับ มีใครพอจะช่วยได้บ้างไหม