积极答复者
vb.net问题

问题
-
Imports System.Data.OleDb
Public Class Form1Dim objComm As New OleDbCommand()Dim adapter As New OleDbDataAdapter(objComm)Dim tbl As New DataTablePrivate Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadDim objCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;")
Dim objComm As New OleDbCommand()objComm.CommandText = "SELECT * FROM serial" ' 這是一個QUERY STRING 來選取資料的objComm.Connection = objConDim adapter As New OleDbDataAdapter(objComm) '選取資料後可以用OleDbDataAdapter 把資料存到DATATABLE 裡Dim tbl As New DataTable ' 用來存資料, 等一會可以顯示到DATAGRIDVIEW中
TryobjCon.Open() ' 開啟 ACCESS CONNECTIONadapter.Fill(tbl) ' 把資料存到DATATABLE 裡DataGridView1.DataSource = tbl '之後 ASSIGN DATAGRIDVIEW 的DATA SOURCE E.G. 用剛剛取來的DATA TABLE
Catch ex As ExceptionMsgBox(ex.Message) '有問題ERROR 時 POP UP ERROR MESSAGE BOXFinallyadapter = Nothing '清理 data adapter objectobjComm = Nothing '清理 command objectobjCon.Close() '關掉連線objCon = Nothing '清理 connection objectEnd Tryloaddata()End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.ClickDim objCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;")
Dim objComm As New OleDbCommand()objComm.CommandText = "INSERT INTO serial (Application_Name) VALUES('" & Trim(TextBox1.Text) & "')"
'用 QUERY 來 加入資料 這次加入了 FIELD1 = 1 和 FIELD2 =2objComm.Connection = objCon
TryobjCon.Open()objComm.ExecuteNonQuery() '這次用 ExecuteNonQuery() 來執行這個QUERY 得動作DataGridView1.DataSource = tblLoadData() ' '' DATAGRIDVIEW 绑定数据库MsgBox("Adding data successful.", MsgBoxStyle.Information, "Add Data")
Catch ex As ExceptionMsgBox(ex.Message)Finally
objComm = NothingobjCon.Close()objCon = Nothing
End TryEnd Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.ClickDim conn As New OleDbConnection _("provider=microsoft.jet.oledb.4.0;data source=db1.mdb")Dim mydataset As New DataSet()Dim myadapter As New OleDbDataAdapter("select * from serial", conn)conn.Close()myadapter.Fill(mydataset, "serial")ComboBox2.DataSource = mydatasetComboBox2.DisplayMember = "serial.Application_Name"conn.Close()
End Sub
Private Sub LoadData() ' DATAGRIDVIEW 绑定数据库Dim objCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;")
Dim objComm As New OleDbCommand()objComm.CommandText = "SELECT * FROM serial" ' 這是一個QUERY STRING 來選取資料的objComm.Connection = objConDim adapter As New OleDbDataAdapter(objComm) '選取資料後可以用OleDbDataAdapter 把資料存到DATATABLE 裡Dim tbl As New DataTable ' 用來存資料, 等一會可以顯示到DATAGRIDVIEW中
TryobjCon.Open() ' 開啟 ACCESS CONNECTIONadapter.Fill(tbl) ' 把資料存到DATATABLE 裡DataGridView1.DataSource = tbl '之後 ASSIGN DATAGRIDVIEW 的DATA SOURCE E.G. 用剛剛取來的DATA TABLE
Catch ex As ExceptionMsgBox(ex.Message) '有問題ERROR 時 POP UP ERROR MESSAGE BOXFinallyadapter = Nothing '清理 data adapter objectobjComm = Nothing '清理 command objectobjCon.Close() '關掉連線objCon = Nothing '清理 connection objectEnd TryEnd Sub
Private Sub ComboBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox2.ClickLabel1.Text = ComboBox2.SelectedValue("Serial1")End SubEnd Class
感谢chiyau回答我的问题。但是还是无法完全解决我的问题。所以我把我的代码写出来,希望大大你能把我解决。感激不尽。。。。
1.数据库绑定问题,我已经增加loaddata。第一次按下button1就增加数据,但却没有立刻显示出来。2.为什么我按下combo2,然后选着数据。却没有立刻显示数据?需要再按一次才可以显示?我有两个fields在数据库(Application_Name,Serial1),combobox2会显示Application_Name的数据,然后根据Application_Name的数据名字,在Serial1寻找,然后label1显示出Serial1的数据。
答案
-
你好
這是我的部份的程式碼
##########################################
Imports System.Data.OleDb
Public Class Form1
Private ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Learning\Sample.mdb;"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = Form2.Label1.Text '這是用來回應你另個主題發問的問題的
LoadData()
End Sub
'這個功能是用來方便自己取資料的
'這可以被 DataGridView1.DataSource = RetrieveData()這一段CODE 取代
Public Sub LoadData()
Dim objCon As New OleDbConnection(ConStr)
Dim objComm As New OleDbCommand()
objComm.CommandText = "SELECT * FROM serial"
objComm.Connection = objCon
Dim adapter As New OleDbDataAdapter(objComm)
Dim tbl As New DataTable
Try
objCon.Open()
adapter.Fill(tbl)
DataGridView1.DataSource = tbl
Catch ex As Exception
MsgBox(ex.Message)
Finally
adapter = Nothing
objComm = Nothing
objCon.Close()
End Try
End Sub
'這個功能是用來方便自己取資料的
Public Function RetrieveData()
Dim objCon As New OleDbConnection(ConStr)
Dim objComm As New OleDbCommand()
objComm.CommandText = "SELECT * FROM serial"
objComm.Connection = objCon
Dim adapter As New OleDbDataAdapter(objComm)
Dim tbl As New DataTable
Try
objCon.Open()
adapter.Fill(tbl)
Catch ex As Exception
MsgBox(ex.Message)
Finally
adapter = Nothing
objComm = Nothing
objCon.Close()
End Try
Return tbl
End Function
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ComboBox2.DataSource = RetrieveData()
ComboBox2.DisplayMember = "Application_Name"
ComboBox2.ValueMember = "SerialNo" '用來綁定 VALUE MEMBER 的相對內容
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Learning\Sample.mdb;")
Dim objComm As New OleDbCommand()
objComm.CommandText = "INSERT INTO serial (Application_Name) VALUES('" & Trim(TextBox1.Text) & "')"
'用 QUERY 來 加入資料 這次加入了 FIELD1 = 1 和 FIELD2 =2
objComm.Connection = objCon
Try
objCon.Open()
objComm.ExecuteNonQuery() '這次用 ExecuteNonQuery() 來執行這個QUERY 得動作
' '' DATAGRIDVIEW 绑定数据库
MsgBox("Adding data successful.", MsgBoxStyle.Information, "Add Data")
Catch ex As Exception
MsgBox(ex.Message)
Finally
objComm = Nothing
objCon.Close()
objCon = Nothing
End Try
LoadData() '我把這個功能放到最後.這可以肯定當用戶加完資料後, 更新DATAGRIDVIEW1 時會出現所有資料
End Sub
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
Try
Label1.Text = ComboBox2.SelectedValue
Catch ex As Exception
'用 try and catch 是因為要避免 有錯誤發生, 因為在第一次绑定数据库 時可能會 TRIGGERED SelectedIndexChanged 事件的...
'這可能會出現錯誤()
End Try
End Sub
End Class
###########################
你可以到這裡DOWNLOAD 全部程式碼
我的電腦只有 VS2010 希望你能夠開到我的檔案
VB project
http://www.hongkongcu.net/isaac/MicrosoftExample/AccessAccessDatabaseExample.zip
Access Database File
http://www.hongkongcu.net/isaac/MicrosoftExample/Sample.mdb
2.为什么我按下combo2,然后选着数据。却没有立刻显示数据?需要再按一次才可以显示?我有两个fields在数据库(Application_Name,Serial1),combobox2会显示Application_Name的数据,然后根据 Application_Name的数据名字,在Serial1寻找,然后label1显示出Serial1的数据。
你的意思是你 有另一個表單... 當用戶使用你的APPLICATION 時, 按COMBOBOX2 時, 他有需要去查資料庫裡另一個表單 和這個APPLICATION_NAME 的數據相關的 資料嗎?
如果是的話, 你便要寫多一個功能來做查詢了
希望可以解決這個問題
Please correct me if my concept is wrong
Chi- 已标记为答案 ckjason 2010年8月11日 6:38
全部回复
-
你好
對不起我的理解能力和解釋能力不好
不知道會不會有幫助
或者你可以改變以下的CODE
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\db1.mdb;")
Dim objComm As New OleDbCommand()
objComm.CommandText = "INSERT INTO serial (Application_Name) VALUES('" & Trim(TextBox1.Text) & "')"
'用 QUERY 來 加入資料 這次加入了 FIELD1 = 1 和 FIELD2 =2
objComm.Connection = objCon
Try
objCon.Open()
objComm.ExecuteNonQuery() '這次用 ExecuteNonQuery() 來執行這個QUERY 得動作
DataGridView1.DataSource = tbl
'把LOAD DATA 放到最後面先執行
'待你的增加数据 的 資料庫完成才 用LOADDATA()
' LoadData() ' '' DATAGRIDVIEW 绑定数据库
MsgBox("Adding data successful.", MsgBoxStyle.Information, "Add Data")
Catch ex As Exception
MsgBox(ex.Message)
Finally
objComm = Nothing
objCon.Close()
objCon = Nothing
End Try
'把LOADDATA() 放在這裡
LoadData()
End Sub
如果還未能解決你的問題...或沒有其他高人回覆/解決這個問題的話
待我放工回家後嘗試模擬你的 APPLICATION 之後發程式碼給你參考, 大家一起研究研究這個問題
Please correct me if my concept is wrong
Chi -
你好
這是我的部份的程式碼
##########################################
Imports System.Data.OleDb
Public Class Form1
Private ConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Learning\Sample.mdb;"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Label1.Text = Form2.Label1.Text '這是用來回應你另個主題發問的問題的
LoadData()
End Sub
'這個功能是用來方便自己取資料的
'這可以被 DataGridView1.DataSource = RetrieveData()這一段CODE 取代
Public Sub LoadData()
Dim objCon As New OleDbConnection(ConStr)
Dim objComm As New OleDbCommand()
objComm.CommandText = "SELECT * FROM serial"
objComm.Connection = objCon
Dim adapter As New OleDbDataAdapter(objComm)
Dim tbl As New DataTable
Try
objCon.Open()
adapter.Fill(tbl)
DataGridView1.DataSource = tbl
Catch ex As Exception
MsgBox(ex.Message)
Finally
adapter = Nothing
objComm = Nothing
objCon.Close()
End Try
End Sub
'這個功能是用來方便自己取資料的
Public Function RetrieveData()
Dim objCon As New OleDbConnection(ConStr)
Dim objComm As New OleDbCommand()
objComm.CommandText = "SELECT * FROM serial"
objComm.Connection = objCon
Dim adapter As New OleDbDataAdapter(objComm)
Dim tbl As New DataTable
Try
objCon.Open()
adapter.Fill(tbl)
Catch ex As Exception
MsgBox(ex.Message)
Finally
adapter = Nothing
objComm = Nothing
objCon.Close()
End Try
Return tbl
End Function
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
ComboBox2.DataSource = RetrieveData()
ComboBox2.DisplayMember = "Application_Name"
ComboBox2.ValueMember = "SerialNo" '用來綁定 VALUE MEMBER 的相對內容
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim objCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\Learning\Sample.mdb;")
Dim objComm As New OleDbCommand()
objComm.CommandText = "INSERT INTO serial (Application_Name) VALUES('" & Trim(TextBox1.Text) & "')"
'用 QUERY 來 加入資料 這次加入了 FIELD1 = 1 和 FIELD2 =2
objComm.Connection = objCon
Try
objCon.Open()
objComm.ExecuteNonQuery() '這次用 ExecuteNonQuery() 來執行這個QUERY 得動作
' '' DATAGRIDVIEW 绑定数据库
MsgBox("Adding data successful.", MsgBoxStyle.Information, "Add Data")
Catch ex As Exception
MsgBox(ex.Message)
Finally
objComm = Nothing
objCon.Close()
objCon = Nothing
End Try
LoadData() '我把這個功能放到最後.這可以肯定當用戶加完資料後, 更新DATAGRIDVIEW1 時會出現所有資料
End Sub
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
Try
Label1.Text = ComboBox2.SelectedValue
Catch ex As Exception
'用 try and catch 是因為要避免 有錯誤發生, 因為在第一次绑定数据库 時可能會 TRIGGERED SelectedIndexChanged 事件的...
'這可能會出現錯誤()
End Try
End Sub
End Class
###########################
你可以到這裡DOWNLOAD 全部程式碼
我的電腦只有 VS2010 希望你能夠開到我的檔案
VB project
http://www.hongkongcu.net/isaac/MicrosoftExample/AccessAccessDatabaseExample.zip
Access Database File
http://www.hongkongcu.net/isaac/MicrosoftExample/Sample.mdb
2.为什么我按下combo2,然后选着数据。却没有立刻显示数据?需要再按一次才可以显示?我有两个fields在数据库(Application_Name,Serial1),combobox2会显示Application_Name的数据,然后根据 Application_Name的数据名字,在Serial1寻找,然后label1显示出Serial1的数据。
你的意思是你 有另一個表單... 當用戶使用你的APPLICATION 時, 按COMBOBOX2 時, 他有需要去查資料庫裡另一個表單 和這個APPLICATION_NAME 的數據相關的 資料嗎?
如果是的話, 你便要寫多一個功能來做查詢了
希望可以解決這個問題
Please correct me if my concept is wrong
Chi- 已标记为答案 ckjason 2010年8月11日 6:38