台灣最大程式設計社群網站
線上人數
1157
 
會員總數:243311
討論主題:188091
歡迎您免費加入會員
討論區列表 >> VB.NET >> 資料表名稱用字串替代
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
資料表名稱用字串替代
價值 : 50 QP  點閱數:344 回應數:12

樓主

許愿嘉
門外漢
0 1
26 6
發送站內信


Private Sub Combo_Type_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Combo_Type.SelectedIndexChanged
Dim cn As OleDbConnection
Dim cnStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Exchanger.mdb"
cn = New OleDbConnection(cnStr)
Dim Compressor1 As Integer = Combo_Type.Text
Dim Compressor2 As String = ComboBox1.Text

cn.Open()

Dim C1 As New OleDbDataAdapter("SELECT * From Compressor1", cn)
Dim C2 As New OleDbDataAdapter("SELECT * From Compressor2", cn)

Dim ds1 As New DataSet
'Dim ds2 As New DataSet

C1.Fill(ds1, Compressor1)
'C2.Fill(ds2, "Combobox1.text")

'Combo_Series.DataSource = ds1
'Combo_Series.DisplayMember = "Compressor1.code"

'ComboBox1.DataSource = ds2
'ComboBox1.DisplayMember = "Combobox1.text.code"
TextBox2.Text = Compressor1
cn.Close()
End Sub
End Class

各位先進
小弟想請問一下
當我COMBO_TYPE.TEXT的選項改變時
程式碼應該怎樣修改才可以找到相對應的資料表
並取出以便應用

因為執行到 C1.Fill(ds1, Compressor1) 這一行時 都會出現錯誤說找不到 Compressor1 這一張資料表
煩請教導

謝謝



搜尋相關Tags的文章: [ 資料表 ] ,
本篇文章發表於2018-05-02 13:11
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Ader Chen
檢舉此回應

如果將
Dim C1 As New OleDbDataAdapter("SELECT * From Compressor1", cn)
Dim C2 As New OleDbDataAdapter("SELECT * From Compressor2", cn)
改為:
Dim C1 As New OleDbDataAdapter("SELECT * From " & Compressor1, cn)
Dim C2 As New OleDbDataAdapter("SELECT * From " & Compressor2, cn)
可以嗎?

本篇文章回覆於2018-05-02 21:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

許愿嘉
檢舉此回應
Ader Chen 大哥

試過了~~不行耶
本篇文章回覆於2018-05-03 13:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
您好像設錯了 ,不應該是 Integer

Dim Compressor1 As Integer
本篇文章回覆於2018-05-04 08:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

許愿嘉
檢舉此回應
感謝P陳大大的提醒

不過我改成 Dim Compressor1 As String 一樣不行

真不知道是哪邊出了問題
本篇文章回覆於2018-05-04 14:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Ader Chen
檢舉此回應

錯誤是說找不到資料表嗎,
請試試看, 在下行設中斷點,
Dim C1 As New OleDbDataAdapter("SELECT * From " & Compressor1, cn)
然後看看 Compressor1 的內容, 再確認資料庫中是否確定有此資料表?
例如若 Compressor1 的內容是 123,
檢查 c:\Exchanger.mdb 裡面是否有名稱為 123 的資料表.

或者把
Dim Compressor1 As String = Combo_Type.Text
改為
Dim Compressor1 As String = Combo_Type.SelectedItem
或是
Dim Compressor1 As String = Combo_Type.SelectedValue
或是
Dim Compressor1 As Integer = Combo_Type.SelectedIndex
要看 Combo_Type 是用什麼方式賦值而定.


本篇文章回覆於2018-05-04 14:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

許愿嘉
檢舉此回應
To Ader Chen 大哥

我有試著把 Compressor1 顯示出來看
確實會跟Combo_Type互做變動

好比說 Combo_Type.TEXT 為 RC2-A 而 Compressor1 也為 RC2-A
資料庫裡面也有 RC2-A 這個資料表

但是到 C1.Fill(ds1, Compressor1) 這一行
程式好像是判斷資料表名稱是 Compressor1 而不是 RC2-A
一直卡在這邊
本篇文章回覆於2018-05-04 14:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
不錯的參考

Ader Chen
檢舉此回應

若資料表名稱含 - 等字元, 要用 [] 框起來,
請試試看:
Dim C1 As New OleDbDataAdapter("SELECT * From [" & Compressor1 & "]", cn)
本篇文章回覆於2018-05-04 15:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

許愿嘉
檢舉此回應
To Ader Chen 大哥

這樣改了試過~~成功了~~

感謝大大的指導
本篇文章回覆於2018-05-04 15:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
最有價值解答

Ader Chen
檢舉此回應

幸好您 6樓有 po 出實際資料表名稱, 才能找到原因:
資料表名稱可以包含 - 或 空格等字元, 不過這種情況就需要用 [ 和 ] 將名稱框起來, 才不會捉錯名稱.
供參考.
本篇文章回覆於2018-05-04 15:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

許愿嘉
檢舉此回應
Dim Compressor1 As String = Combo_Type.SelectedItem
Dim Capacity As Double
'Dim Cycle As Integer
'Dim Cycle1 As Integer
'Dim Cycle2 As Integer
Dim I As Integer 'Partload 迴圈

Dim cn1 As New System.Data.OleDb.OleDbConnection
cn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Exchanger.mdb" '連線字串
Dim cmd1 As New OleDbCommand("select Part1,Part2,Part3,Part4,step from [" & Compressor1 & "] where code='" & Combo_Series.Text & "'") 'SQL語法
Dim cr1 As OleDbDataReader
Dim C1 As TC1

cmd1.Connection = cn1
cn1.Open()
cr1 = cmd1.ExecuteReader()
cr1.Read()
C1.Part1 = cr1.Item(0)
C1.Part2 = cr1.Item(1)
C1.Part3 = cr1.Item(2)
C1.Part4 = cr1.Item(3)
C1.Cycle1 = cr1.Item(4)
cr1.Close()
cn1.Close()

TextBox2.Text = C1.Part1
TextBox3.Text = C1.Part2
TextBox4.Text = C1.Part3
TextBox5.Text = C1.Part4
TextBox6.Text = C1.Cycle1

程式碼如上
但都會顯示如下圖的錯誤訊息
煩請先進們指導

謝謝
本篇文章回覆於2018-05-08 13:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
不錯的參考

Ader Chen
檢舉此回應

從錯誤訊息猜測, 或許 Code 不是字串而是數值?
改為下行試試看: (去掉單引號, 改數值)
Dim cmd1 As New OleDbCommand("select Part1,Part2,Part3,Part4,step from [" & Compressor1 & "] where code=" & Val(Combo_Series.Text))

以上猜測.
本篇文章回覆於2018-05-08 13:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

許愿嘉
檢舉此回應
Aden Chen 大哥

果然是字串跟數值的問題
謝謝大哥的指導
本篇文章回覆於2018-05-08 13:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.