 |
|
[VB.NET] Basic VS Access แสดงและเพิ่มข้อมูล ติดปัญหาข้อมูลไม่แสดง |
|
 |
|
|
 |
 |
|
ปกติผมใช้ VB เขียนเชื่อมต่อกับ Access
แต่พอหันมาลอง VB.NET 2010 ต่างกันอย่างสิ้นเชิง
โดยการที่ผมศึกษาจากเว็บ ThaiCreate ส่วนมาก จะเป็น Windows Form C#
แต่ที่ผมใช้ คือ

เหมือนจะสับสนทางด้าน โค๊ดที่ใช้งานไม่เหมือนกัน ระหว่าง basic กับ c#
ผมลองเขียน แค่ แสดงผลใน textbox1 และกดปุ่ม Button เพื่อ แสดงผล
จาก โค๊ด
Code (VB.NET)
Public Class Form1
Dim dbProvider As String
Dim dbSource As String
Dim con As New OleDb.OleDbConnection
Dim sql As String = "SELECT * FORM tb1"
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim i As Integer
Dim len As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.Load
dbProvider = "PROVIDER=Microsoft.jet.OLEDB.4.0;"
dbSource = "Data Source = C:\student.mdb"
con.ConnectionString = dbProvider & dbSource
con.Open()
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "student")
len = da.Fill(ds, "student")
End Sub
Private Sub nav()
TextBox1.Text = ds.Tables("tb1").Rows(i).Item(1)
TextBox2.Text = ds.Tables("tb1").Rows(i).Item(2)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
i = 0
nav()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If (i = 0) Then
MsgBox("This is First")
Else
i = i - 1
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If (i = len - 1) Then
MsgBox("This is Last")
Else
i = i + 1
End If
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
i = len - 1
nav()
End Sub
End Class
แต่ก็ยังติด Error
Code (VB.NET)
Private Sub nav()
TextBox1.Text = ds.Tables("tb1").Rows(i).Item(1)
TextBox2.Text = ds.Tables("tb1").Rows(i).Item(2)
End Sub
ช่วยหน่อยนะครับ ต้องแก้ตรงไหน
Tag : .NET, Ms Access, VB.NET
|
|
 |
 |
 |
 |
Date :
2013-02-15 18:56:58 |
By :
TRIBIIZ |
View :
960 |
Reply :
7 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Error ว่าอะไรครับ มันไม่มี Rows หรือเปล่าครับ
|
 |
 |
 |
 |
Date :
2013-02-16 06:44:32 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ผม PM ไปให้นะครับ ลองส่ง access ของคุณมา ผมให้เมล์ไปแล้วครับ
|
 |
 |
 |
 |
Date :
2013-02-16 18:26:55 |
By :
คนงานตัดอ้อย |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ส่วมมากที่ผมเจอก็มักจะเป็น dataset ไม่มีแถวที่จะแสดงข้อมูลอยู่หรือไม่สร้างขึ้นมาที่ อะไรประมาณนี้ ลองเอา dataset ไปใส่ใน datagridview ดูก่อนว่ามีข้อมูลอะไรมั้ง
|
 |
 |
 |
 |
Date :
2013-02-16 19:33:17 |
By :
thon1900 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอนนี้ ผมลองเปลี่ยนมาใช้ Datagridview แล้ว
Code (VB.NET)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim conn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\student.mdb")
Dim Cat As New OleDb.OleDbDataAdapter("Select * from tb1", conn)
Dim Emplo As New OleDb.OleDbDataAdapter("Select id,code,name", conn)
Cat.Fill(Dset, "Showcat")
Emplo.Fill(Dset, "ShowEmplo")
End Sub
Code (VB.NET)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
DataGridView1.DataSource = Dset.Tables("ShowCat")
End Sub
แสดงข้อมูลได้ปกติ
ผมสงสัยว่า Cat.Fill(Dset, "Showcat") ไอ้ Showcat มันมาจากไหน
|
 |
 |
 |
 |
Date :
2013-02-16 19:58:22 |
By :
TRIBIIZ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
งั้นลองไรลำดับการรับโค๊ตดู คุณอาจจะเอา nav() ไปไว้ก่อนที่จะ fill ข้อมูลมา อีกอย่าง showcat มันเป็นชื่อที่สมมติขึ้นมาจาก fill ข้อมูลมา
ถึงแม้ access จะชื่อ tb1 แต่คุณประกาศให้มันfill ใน dset.tables("showcat") นี้คือ dataset ที่คุณฟิวมาจาก table ใน access
ลอง ใช้ Dset.tables("showcat") แทน ds.tables("tb1")
|
ประวัติการแก้ไข 2013-02-16 20:55:29 2013-02-16 20:56:56
 |
 |
 |
 |
Date :
2013-02-16 20:50:56 |
By :
thon1900 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|