台灣最大程式設計社群網站
線上人數
1256
 
會員總數:246133
討論主題:189712
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 迴圈方式寫入資料庫(錯誤訊息)
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
迴圈方式寫入資料庫(錯誤訊息)
價值 : 100 QP  點閱數:601 回應數:18
樓主

阿偉
門外漢
0 24
1369 99
發送站內信

請問,我想要用迴圈方式寫入資料庫裡,但錯誤訊息如下:
變數名稱 '@TB001' 已經宣告。變數名稱在一個查詢批次或預存程序內必須是唯一的。
請問要如何做修改?

還有第二個問題是,迴圈過程中如果遇到空白的textbox,就中斷寫入!
請各位前輩請教幫忙,謝謝。





搜尋相關Tags的文章: [ vb.net ] , [ textbox ] ,
本篇文章發表於2020-04-16 18:26
1樓
回應

MIS2000 Lab
檢舉此回應
您這段程式碼 SqlDataSource1.InsertParameters.Add("TB001", "TextBox" & i)
搭配您想做的「迴圈過程中如果遇到空白的textbox」
根本不會動吧??

看得出來,您想用一個迴圈,自動跑完畫面上多個TextBox
例如TextBox1 / 2 / 3 / 4 /..........一個一個檢查下去?

但您得先抓到 TextBox控制項,才能知道他是不是「空白的textbox」(沒有填寫數值)

我們先從簡單的來,您會抓 TextBox控制項的值 (.Text)嗎?
您會用 .FindControl()方法嗎?

還有一小段路要走喔

這裡有相關的範例,希望能幫上一點點小忙

FileUpload控制項「批次上傳 / 多檔案同時上傳」的範例--以「流水號」產生「變數名稱」
https://dotblogs.com.tw/mis2000lab/2013/08/19/multiple_fileupload_asp_net_20130819

本篇文章回覆於2020-04-16 19:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

阿偉
檢舉此回應
請問我在執行後出現

物件必須實作 IConvertible。

請問是哪裡需要做修改,謝謝。



本篇文章回覆於2020-04-17 14:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

MIS2000 Lab
檢舉此回應
cmd.Parameters.Add("@TB001", SqlDbType.NVarChar, 20).Value = CType(FindControl("TextBox" & i), TextBox)
您要把「Web控制項(TextBox)」寫入資料表的欄位嗎?

當然不是啊!您要填進去的是 TextBox的 "值"

例如 TextBox1.Text
我這樣說您聽得懂嗎?
本篇文章回覆於2020-04-17 14:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

想睡覺
檢舉此回應
試試
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click, Button1.DataBinding

Dim i As Integer
For i = 1 To 3

SqlDataSource1.InsertCommand = "insert into SDCOSTB (TB001,TB002)" & _
" VALUES (@TB001&i,@TB002&i) "
SqlDataSource1.InsertParameters.Add("TB001&i", "TextBox" & i)
SqlDataSource1.InsertParameters.Add("TB002&i", "TextBox" & i)

SqlDataSource1.Insert()
Next
End Sub
本篇文章回覆於2020-04-17 14:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

想睡覺
檢舉此回應
補充
變數名稱 '@TB001' 已經宣告。變數名稱在一個查詢批次或預存程序內必須是唯一的
會出現錯誤,是因為變數宣告的名稱 只能在迴圈中出現一次

因為你下 For i = 1 To 3
所以出錯是正常的
本篇文章回覆於2020-04-17 14:32
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

阿偉
檢舉此回應
回想睡覺 :
錯誤訊息
接近 '&' 之處的語法不正確。
必須宣告純量變數 "@TB001"。

MIS2000 Lab 哥

修改後出現下列錯誤,請問還須要往哪裡做修正,謝謝。
接近 ',' 之處的語法不正確。


本篇文章回覆於2020-04-17 15:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

MIS2000 Lab
檢舉此回應
我沒親自試過這一段,您參考一下

Dim TB1 As TextBox = CType(FindControl("TextBox" & i), TextBox)
-- 註:先抓到TextBox這個 Web控制項,ID是TextBox1 / 2 / 3.....流水號

cmd.Parameters.Add("@TB001", SqlDbType.NVarChar, 20).Value = TB1.Text
-- 註:把 TextBox控制項的"值",寫到資料表的欄位裡面


您要找時間補上 .FindControl()方法、Web控制項的屬性 ......因為這都是很基礎、很常用的


希望有幫上忙,謝謝您
本篇文章回覆於2020-04-17 16:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

阿偉
檢舉此回應
依然發生錯誤
錯誤訊息:
接近 ',' 之處的語法不正確。

我在想是
cmd.Parameters.Add("@TB001", SqlDbType.VarChar, 20).Value = TB1.Text
這句有問題,但我不知道如何解決,有確認資料庫型態是VARCHAR 20 ....謝謝







本篇文章回覆於2020-04-17 17:09
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
不錯的參考

想睡覺
檢舉此回應
不好意思 我放錯地方了
改這樣就可以了

SqlDataSource1.InsertParameters.Add("TB001" & i, "TextBox" & i)
SqlDataSource1.InsertParameters.Add("TB002" & i, "TextBox" & i)
本篇文章回覆於2020-04-17 17:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
不錯的參考

MIS2000 Lab
檢舉此回應
您的 SQL指令不知需不需要調整?
Dim cmd As SqlCommand = New SqlCommand("insert into SDCOSTB(TB001, TB002) VALUES(@TB001, @TB002)", Conn)

Dim TB1 As TextBox = CType(FindControl("TextBox" & i), TextBox)

有一種簡單的寫法,但效能差了點
cmd.Parameters.AddWithValue("@TB001", TB1.Text)

本篇文章回覆於2020-04-17 17:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

阿偉
檢舉此回應
回想睡覺
錯誤訊息還是一樣!!

LAB 大大
非常感謝!!
繼續努力中!!
本篇文章回覆於2020-04-17 18:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
多筆維護,如果透過【Dapper】,寫起來就會輕鬆愉快

首先,針對您的資料表,我建立相關的【類別】如下


接著,準備好DAO的程式


所以多筆資料就可以
把資料放到List的物件集合【oSCBs】,並且呼叫DAO來新增資料



這是小喵用Dapper多筆新增的版本
Dapper可以幫助我們,用很簡單的寫法,就可以處理多筆的資料
而且寫法很簡潔

提供您參考
^.^a
本篇文章回覆於2020-04-21 11:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
還有第二個問題是,迴圈過程中如果遇到空白的textbox,就中斷寫入!
請各位前輩請教幫忙,謝謝。



本篇文章回覆於2020-04-21 11:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

阿偉
檢舉此回應
謝謝小喵!!
但是我的檔案出現

"VB9 不支援 動實作的屬性 "

@@
是我版本太舊了吧 ...
本篇文章回覆於2020-04-22 11:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
不錯的參考

topcat
捐贈 VP 給 topcat 檢舉此回應
屬性的寫法可以用傳統的寫法,寫起來會稍微囉嗦一點


.NET的世界是物件堆積起來的
所以物件的概念與寫法,有機會要補起來

^.^a
本篇文章回覆於2020-04-22 12:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

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