none
請問以下vb.net 那裡有誤? RRS feed

  • 問題

  • 各位大大您好:

    各位大大請幫我看一下,以下vb.net 2008程式碼 請問那裡有誤?我輸入2013/07之前的月份(如2013/06...)都沒有錯,但輸入2013/08確出現錯誤.部份程式碼如下:

    SQLcmd2.CommandText = "select 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 訂單細目.料號,訂單細目.序號, " & _ "訂單.業務員,訂單細目.數量, 訂單細目.單價, 訂單.目前匯率, 訂單.訂單編號,訂單細目.折讓,客戶.公司名稱, 產品.品名, 員工.姓名, 產品區分.產品區分,客戶.關係人, 產品.規格 from 訂單 inner join 訂單細目 on 訂單.訂單編號 = 訂單細目.訂單編號 " & _ "inner join 客戶 on 訂單.客戶代號 = 客戶.客戶代號 INNER JOIN 產品 ON 訂單細目.料號 = 產品.料號 INNER JOIN 產品區分 on 產品.產品區分 = 產品區分.產品區分碼 INNER JOIN 員工 ON 訂單.業務員 = 員工.員工碼 " & _ " where left(訂單.訂單日期,7) = '" & Replace(TextBox1.Text, " ", "") & "' and 訂單.審核 = 'Y'" SQLreader2 = SQLcmd2.ExecuteReader(CommandBehavior.SingleResult) Do While SQLreader2.Read SQLcmd.CommandText = "insert into EIS_訂單出貨 values('" & SQLreader2(0) & "', '" & SQLreader2(1) & "' , " & _ " '" & SQLreader2(2) & "', '" & SQLreader2(11) & "', '" & SQLreader2(3) & "', '" & SQLreader2(12) & "', '" & SQLreader2(5) & "', " & _ " '" & SQLreader2(13) & "', '" & SQLreader2(6) & "', '" & SQLreader2(7) & "','" & (SQLreader2(6) * SQLreader2(7) * SQLreader2(8)) & "' , " & _ " 0,0,0,0, 0, 0, 0, 0, 0, 0, '" & SQLreader2(14) & "',0, '" & SQLreader2(15) & "', '" & SQLreader2(16) & "')"

    SQLcmd.ExecuteNonQuery()←錯誤訊息顯示:接近'3'之處語法不正確,遺漏字串中')'後的引號。


    感謝各位大大指教。




    • 已編輯 MichaelTsai10 2013年8月20日 上午 03:54 少掉錯誤訊息
    • 已編輯 AChangeModerator 2013年8月20日 上午 04:01 標題與內文描述相同, 修改適當標題, 原標題: 各位大大請幫我看一下,以下vb.net 那裡有誤?我輸入2013/07之前的月份都沒有錯,但輸入2013/08確出現錯誤
    2013年8月20日 上午 02:51

解答

  • 為什麼不用一句解決就好?

    SQLcmd.CommandText = "INSERT INTO EIS_訂單出貨 " & _
    "    SELECT 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 客戶.公司名稱, 訂單細目.料號,產品.品名," & _
    "        訂單.業務員, 員工.姓名, 訂單細目.數量, 訂單細目.單價, 訂單細目.數量 * 訂單細目.單價 * 訂單.目前匯率," & _
    "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0," & _
    "        產品區分.產品區分, 客戶.關係人, 產品.規格" & _
    "    FROM 訂單" & _
    "        INNER JOIN 訂單細目 ON 訂單.訂單編號 = 訂單細目.訂單編號" & _
    "        INNER JOIN 客戶 ON 訂單.客戶代號 = 客戶.客戶代號" & _
    "        INNER JOIN 產品 ON 訂單細目.料號 = 產品.料號" & _
    "        INNER JOIN 產品區分 ON 產品.產品區分 = 產品區分.產品區分碼" & _
    "        INNER JOIN 員工 ON 訂單.業務員 = 員工.員工碼" & _
    "    WHERE LEFT(訂單.訂單日期, 7) = @OrderDate_7 " & _
    "        AND 訂單.審核 = 'Y'"
    SQLcmd.Parameters.Add("@OrderDate_7", SqlDbType.NVarChar).Value = Replace(TextBox1.Text, " ", "")
    SQLcmd.ExecuteNonQuery()
    

    • 已提議為解答 亂馬客 2013年8月21日 上午 05:12
    • 已標示為解答 璉璉Moderator 2013年9月7日 上午 07:56
    2013年8月20日 上午 08:17

所有回覆

  • 要人家幫你看程式碼,先把程式碼利用編輯器裡的「程式碼區塊」排個版吧。

    理直氣和,切記。

    Blog: http://blog.kkbruce.net

    Book:《ASP.NET MVC 4 網站開發美學

    2013年8月20日 上午 03:32
  • 還有,你確定

    Replace(TextBox1.Text, " ", "") 
    這樣就不會有SQL Injection的問題。


    理直氣和,切記。

    Blog: http://blog.kkbruce.net

    Book:《ASP.NET MVC 4 網站開發美學

    2013年8月20日 上午 03:35
  • 您的錯誤訊息出現在SQLcmd.ExecuteNonQuery, 可是提供的程式碼卻是SQLcmd2.ExecuteReader的敘述?
    2013年8月20日 上午 03:37
  • 有沒有試過在 SQLcmd.ExecuteNonQuery 設中斷點,
    在該點中斷時檢查 SQLcmd.CommandText 的內容是否有誤?
    2013年8月20日 上午 03:58
  • 您好,
    應該是因為SQLreader2中的值造成insert script發生錯誤,比如說裡面如果有單引號的話,您的script就會發生錯誤哦!
    請改用參數化查詢的方式哦!

    http://msdn.microsoft.com/zh-tw/library/system.data.sqlclient.sqlparameter.aspx


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年8月20日 上午 04:35
  • 請問大大:

         我如果要使用參數化查詢 用insert 要怎麼寫呢?如果以我上面的寫法要如何改呢?

    thanks

    2013年8月20日 上午 05:46
  • 您好,

    如下,

    SQLcmd2.CommandText = "select 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 訂單細目.料號,訂單細目.序號, " & _
    "訂單.業務員,訂單細目.數量, 訂單細目.單價, 訂單.目前匯率, 訂單.訂單編號,訂單細目.折讓,客戶.公司名稱, 產品.品名, 員工.姓名, 產品區分.產品區分,客戶.關係人, 產品.規格 from 訂單 inner join 訂單細目 on 訂單.訂單編號 = 訂單細目.訂單編號 " & _
    "inner join 客戶 on 訂單.客戶代號 = 客戶.客戶代號 INNER JOIN 產品 ON 訂單細目.料號 = 產品.料號 INNER JOIN 產品區分 on 產品.產品區分 = 產品區分.產品區分碼 INNER JOIN 員工 ON 訂單.業務員 = 員工.員工碼 " & _
    " where left(訂單.訂單日期,7) = @OrderDate and 訂單.審核 = 'Y'"
    SQLcmd2.Parameters.Clear() 
    SQLcmd2.Parameters.AddWithValue("@OrderDate", TextBox1.Text) 
    SQLreader2 = SQLcmd2.ExecuteReader(CommandBehavior.SingleResult)

    詳細請參考msdn:設定參數和參數資料型別



    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年8月20日 上午 06:19
  • 您好,

    如下,

    SQLcmd2.CommandText = "select 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 訂單細目.料號,訂單細目.序號, " & _
    "訂單.業務員,訂單細目.數量, 訂單細目.單價, 訂單.目前匯率, 訂單.訂單編號,訂單細目.折讓,客戶.公司名稱, 產品.品名, 員工.姓名, 產品區分.產品區分,客戶.關係人, 產品.規格 from 訂單 inner join 訂單細目 on 訂單.訂單編號 = 訂單細目.訂單編號 " & _
    "inner join 客戶 on 訂單.客戶代號 = 客戶.客戶代號 INNER JOIN 產品 ON 訂單細目.料號 = 產品.料號 INNER JOIN 產品區分 on 產品.產品區分 = 產品區分.產品區分碼 INNER JOIN 員工 ON 訂單.業務員 = 員工.員工碼 " & _
    " where left(訂單.訂單日期,7) = @OrderDate and 訂單.審核 = 'Y'"
    SQLcmd2.Parameters.Clear() 
    SQLcmd2.Parameters.AddWithValue("@OrderDate", TextBox1.Text) 
    SQLreader2 = SQLcmd2.ExecuteReader(CommandBehavior.SingleResult)

    詳細請參考msdn:設定參數和參數資料型別



    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    請問大大是否改成如下這樣呢?

    SQLcmd2.Parameters.Clear()
    SQLcmd2.Parameters.AddWithValue("@a", SQLreader2(0)) '公司碼  <--從此處是要加到資料

                                                                                                                庫的Table
    SQLcmd2.Parameters.AddWithValue("@b", SQLreader2(1)) '訂單日期
    SQLcmd2.Parameters.AddWithValue("@c", SQLreader2(2)) '客戶代號
    SQLcmd2.Parameters.AddWithValue("@d", SQLreader2(11))'客戶名稱
    SQLcmd2.Parameters.AddWithValue("@e", SQLreader2(3)) '料號
    SQLcmd2.Parameters.AddWithValue("@f", SQLreader2(12))'品名
    SQLcmd2.Parameters.AddWithValue("@g", SQLreader2(5)) '業務員代號
    SQLcmd2.Parameters.AddWithValue("@h", SQLreader2(13))'員工姓名
    SQLcmd2.Parameters.AddWithValue("@i", SQLreader2(6)) '訂單數量
    SQLcmd2.Parameters.AddWithValue("@j", SQLreader2(7)) '單價
    SQLcmd2.Parameters.AddWithValue("@k", SQLreader2(6)*SQLreader2(7)*SQLreader2(8)) '數量*單價*匯率
    SQLcmd2.Parameters.AddWithValue("@l", 0)
    SQLcmd2.Parameters.AddWithValue("@m", 0)
    SQLcmd2.Parameters.AddWithValue("@n", 0)
    SQLcmd2.Parameters.AddWithValue("@o", 0)
    SQLcmd2.Parameters.AddWithValue("@p", 0)
    SQLcmd2.Parameters.AddWithValue("@q", 0)
    SQLcmd2.Parameters.AddWithValue("@r", 0)
    SQLcmd2.Parameters.AddWithValue("@s", 0)
    SQLcmd2.Parameters.AddWithValue("@t", 0)
    SQLcmd2.Parameters.AddWithValue("@u", 0)
    SQLcmd2.Parameters.AddWithValue("@v", SQLreader2(14)) '產品區分
    SQLcmd2.Parameters.AddWithValue("@w", 0)
    SQLcmd2.Parameters.AddWithValue("@x", SQLreader2(15)) '關係人
    SQLcmd2.Parameters.AddWithValue("@y", SQLreader2(16)) '產品規格
    SQLreader2 = SQLcmd2.ExecuteReader(CommandBehavior.SingleResult)

    如果有誤請各位指正  謝謝各位大大

    2013年8月20日 上午 07:19
  • 您好,
    建議您參考一下ADO.NET的相關文章!
    您的程式中有2個SqlCommand
    一個是SQLcmd2,查詢資料用,它的參數好像只有一個是 TextBox1.Text。
    一個是SQLcmd,新增資料用,它的參數就是Table的那些欄位,用的method是ExecuteNonQuery吧!
    另外,如果Table的參數值太多的話,您可以用SqlDataAdapter去整批新增也可以!

    Use DataTable to update table in Database



    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年8月20日 上午 07:48
  • 為什麼不用一句解決就好?

    SQLcmd.CommandText = "INSERT INTO EIS_訂單出貨 " & _
    "    SELECT 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 客戶.公司名稱, 訂單細目.料號,產品.品名," & _
    "        訂單.業務員, 員工.姓名, 訂單細目.數量, 訂單細目.單價, 訂單細目.數量 * 訂單細目.單價 * 訂單.目前匯率," & _
    "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0," & _
    "        產品區分.產品區分, 客戶.關係人, 產品.規格" & _
    "    FROM 訂單" & _
    "        INNER JOIN 訂單細目 ON 訂單.訂單編號 = 訂單細目.訂單編號" & _
    "        INNER JOIN 客戶 ON 訂單.客戶代號 = 客戶.客戶代號" & _
    "        INNER JOIN 產品 ON 訂單細目.料號 = 產品.料號" & _
    "        INNER JOIN 產品區分 ON 產品.產品區分 = 產品區分.產品區分碼" & _
    "        INNER JOIN 員工 ON 訂單.業務員 = 員工.員工碼" & _
    "    WHERE LEFT(訂單.訂單日期, 7) = @OrderDate_7 " & _
    "        AND 訂單.審核 = 'Y'"
    SQLcmd.Parameters.Add("@OrderDate_7", SqlDbType.NVarChar).Value = Replace(TextBox1.Text, " ", "")
    SQLcmd.ExecuteNonQuery()
    

    • 已提議為解答 亂馬客 2013年8月21日 上午 05:12
    • 已標示為解答 璉璉Moderator 2013年9月7日 上午 07:56
    2013年8月20日 上午 08:17
  • 還有,你確定

    Replace(TextBox1.Text, " ", "") 
    這樣就不會有SQL Injection的問題。


    理直氣和,切記。

    Blog: http://blog.kkbruce.net

    Book:《ASP.NET MVC 4 網站開發美學

    請問大大:

      如果是如下寫法如何避免sql  injection?我是寫vb.net AP  謝謝大大

    Replace(TextBox1.Text, " ", "") 
    2013年8月22日 上午 02:31
  • 哈…我以為是網頁,Sorry。@_@

    理直氣和,切記。

    Blog: http://blog.kkbruce.net

    Book:《ASP.NET MVC 4 網站開發美學

    2013年8月22日 上午 03:00
  • 為什麼不用一句解決就好?

    SQLcmd.CommandText = "INSERT INTO EIS_訂單出貨 " & _
    "    SELECT 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 客戶.公司名稱, 訂單細目.料號,產品.品名," & _
    "        訂單.業務員, 員工.姓名, 訂單細目.數量, 訂單細目.單價, 訂單細目.數量 * 訂單細目.單價 * 訂單.目前匯率," & _
    "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0," & _
    "        產品區分.產品區分, 客戶.關係人, 產品.規格" & _
    "    FROM 訂單" & _
    "        INNER JOIN 訂單細目 ON 訂單.訂單編號 = 訂單細目.訂單編號" & _
    "        INNER JOIN 客戶 ON 訂單.客戶代號 = 客戶.客戶代號" & _
    "        INNER JOIN 產品 ON 訂單細目.料號 = 產品.料號" & _
    "        INNER JOIN 產品區分 ON 產品.產品區分 = 產品區分.產品區分碼" & _
    "        INNER JOIN 員工 ON 訂單.業務員 = 員工.員工碼" & _
    "    WHERE LEFT(訂單.訂單日期, 7) = @OrderDate_7 " & _
    "        AND 訂單.審核 = 'Y'"
    SQLcmd.Parameters.Add("@OrderDate_7", SqlDbType.NVarChar).Value = Replace(TextBox1.Text, " ", "")
    SQLcmd.ExecuteNonQuery()

    親愛的大大;

          我依照您的寫法測試一下出現了"將資料類型從 varchar 轉換到 numeric 時發生錯誤。" 我的日期格式在資料庫是這種形式2013/05/08。如果我一開始把select 後的訂單.日期改為left(訂單.日期,7)並且把where LEFT(訂單.訂單日期, 7) 改為WHERE 訂單.訂單日期 = @OrderDate_7 就不會發生(料類型從 varchar 轉換到 numeric 時發生錯誤。) 但發現值並無插入到資料庫中。

    請問這該如何解呢?感謝大大


    • 已編輯 MichaelTsai10 2013年8月22日 上午 08:24 遺漏敘訴
    2013年8月22日 上午 08:18
  • 這應該是轉型的問題,請確認您的欄位的 Type

    假設 訂單.訂單日期 = 2013/08/22

    如果 『訂單.訂單日期』是 DateTime 的話,那麼就應該是  Left(訂單.訂單日期, 7) = '08 22 2'
    建議您先轉型:   LEFT(convert( varchar, 訂單.訂單日期, 111 ), 7)

    如果 『訂單.訂單日期』是 varchar 系列的話,那麼就應該是  Left(訂單.訂單日期, 7) = '2013/08'


    我也不曉得您的 TextBox1.Text 是輸入什麼? '2013/08/22' 或是 '2013/8/22' ?
    會不會因為這樣導致找不出資料?


    • 已編輯 Linka_ 2013年8月22日 上午 08:39
    2013年8月22日 上午 08:37
  • 親愛的大大

    我已經將剛剛轉換問題(將資料類型從 varchar 轉換到 numeric 時發生錯誤)解了。但值還是無法進資料庫。目前程式碼如下

    SQLcmd2.CommandText = "INSERT INTO EIS_訂單出貨T " & _
    "    SELECT 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 客戶.公司名稱, 訂單細目.料號,產品.品名," & _
    "        訂單.業務員, 員工.姓名, 訂單細目.數量, 訂單細目.單價, 訂單細目.數量 * 訂單細目.單價 * 訂單.目前匯率," & _
    "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0," & _
    "        產品區分.產品區分, 客戶.關係人,0, 產品.規格" & _
    "        FROM 訂單" & _
    "        INNER JOIN 訂單細目 ON 訂單.訂單編號 = 訂單細目.訂單編號" & _
    "        INNER JOIN 客戶 ON 訂單.客戶代號 = 客戶.客戶代號" & _
    "        INNER JOIN 產品 ON 訂單細目.料號 = 產品.料號" & _
    "        INNER JOIN 產品區分 ON 產品.產品區分 = 產品區分.產品區分碼" & _
    "        INNER JOIN 員工 ON 訂單.業務員 = 員工.員工碼" & _
    "       WHERE left(訂單.訂單日期,7) = @OrderDate_7 " & _
    "        AND 訂單.審核 = 'Y'"
            SQLcmd2.Parameters.Add("@OrderDate_7", SqlDbType.VarChar).Value = Replace(TextBox1.Text, " ", "")
            MessageBox.Show(Replace(TextBox1.Text, " ", ""))-->2013/07
            SQLcmd.ExecuteNonQuery()
            MessageBox.Show(SQLcmd.Parameters.Add("@OrderDate_7", SqlDbType.NVarChar).Value = Replace(TextBox1.Text, " ", ""))

    我用Messagebox.show去顯示SQLcmd.Parameters.Add("@OrderDate_7", SqlDbType.NVarChar).Value = Replace(TextBox1.Text, " ", "") 但出現false

    請教問題出現在哪呢?

    感謝大大

    2013年8月22日 上午 09:05
  • 請問您是要執行 SQLcmd 還是 SQLcmd2 呢?

    SQLcmd2.Parameters.Add("@OrderDate_7", SqlDbType.VarChar).Value = Replace(TextBox1.Text, " ", "")
    MessageBox.Show(Replace(TextBox1.Text, " ", ""))-->2013/07
    SQLcmd.ExecuteNonQuery()
    MessageBox.Show(SQLcmd.Parameters.Add("@OrderDate_7", SqlDbType.NVarChar).Value = Replace(TextBox1.Text, " ", ""))

    2013年8月22日 上午 09:28
  • 親愛的大大:

    我原程式是這樣:

    If SQLconn.State <> ConnectionState.Open Then SQLconn.Open()
    If SQLconn2.State <> ConnectionState.Open Then SQLconn2.Open()
    SQLcmd2.CommandText = "select 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 訂單細目.料號, 訂單細目.序號, " & _
    "訂單.業務員,訂單細目.數量, 訂單細目.單價, 訂單.目前匯率, 訂單.訂單編號, 訂單細目.折讓, 客戶.公司名稱, 產品.品名, 員工.姓名, 產品區分.產品區分, 客戶.關係人 from 訂單 inner join 訂單細目 on 訂單.訂單編號 = 訂單細目.訂單編號 " & _
    "inner join 客戶 on 訂單.客戶代號 = 客戶.客戶代號 INNER JOIN 產品 ON 訂單細目.料號 = 產品.料號 INNER JOIN 產品區分 on 產品.產品區分 = 產品區分.產品區分碼 INNER JOIN 員工 ON 訂單.業務員 = 員工.員工碼 " & _
    " where left(訂單.訂單日期,7) = '" & Replace(TextBox1.Text, " ", "") & "' and 訂單.審核 = 'Y'"
    SQLreader2 = SQLcmd2.ExecuteReader(CommandBehavior.SingleResult)
    Do While SQLreader2.Read
    SQLcmd.CommandText = "insert into EIS_訂單出貨 values('" & SQLreader2(0) & "', '" & SQLreader2(1) & "' , " & _
    " '" & SQLreader2(2) & "',  '" & SQLreader2(11) & "', '" & SQLreader2(3) & "', '" & SQLreader2(12) & "',  '" & SQLreader2(5) & "', " & _
    " '" & SQLreader2(13) & "', '" & SQLreader2(6) & "', '" & SQLreader2(7) & "', '" & (SQLreader2(6) * SQLreader2(7) * SQLreader2(8)) & "' , " & _
    " 0,0,0,0, 0, 0, 0, 0, 0, 0, '" & SQLreader2(14) & "',0, '" & SQLreader2(15) & "')"
    SQLcmd.CommandText = "insert into EIS_訂單出貨 values('" & SQLreader2(0) & "', '" & SQLreader2(1) & "' , " & _
        " '" & SQLreader2(2) & "',  '" & SQLreader2(11) & "', '" & SQLreader2(3) & "', '" & SQLreader2(12) & "',  '" & SQLreader2(5) & "', " & _
                '    " '" & SQLreader2(13) & "', '" & SQLreader2(6) & "', '" & SQLreader2(7) & "', '" & (SQLreader2(6) * SQLreader2(7) * SQLreader2(8)) & "' , " & _
                '   " 0,0,0,'" & (SQLreader3(6) * IIf(IsDBNull(SQLreader3(10)), 0, SQLreader3(10)) * SQLreader3(8)) & "', 0, 0, 0, 0, 0)"
    SQLcmd.ExecuteNonQuery()
    Loop
    SQLconn.Close()
    SQLconn2.Close()
    由SQLcmd2.CommandText讀取資料

    由SQLcmd.CommandText 插入資料

    但現在試用別的寫法(參數化)出現問題 參數化程式化程式如下

          SQLcmd.CommandText = "INSERT INTO EIS.dbo.EIS_訂單出貨T " & _
    "    SELECT 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 客戶.公司名稱, 訂單細目.料號,產品.品名," & _
    "        訂單.業務員, 員工.姓名, 訂單細目.數量, 訂單細目.單價, 訂單細目.數量 * 訂單細目.單價 * 訂單.目前匯率," & _
    "        0, 0, 0, 0, 0, 0, 0, 0, 0, 0," & _
    "        產品區分.產品區分, 客戶.關係人,0, 產品.規格" & _
    "        FROM ERP102.dbo.訂單" & _
    "        INNER JOIN ERP102.dbo.訂單細目 ON 訂單.訂單編號 = 訂單細目.訂單編號" & _
    "        INNER JOIN ERP102.dbo.客戶 ON 訂單.客戶代號 = 客戶.客戶代號" & _
    "        INNER JOIN ERP102.dbo.產品 ON 訂單細目.料號 = 產品.料號" & _
    "        INNER JOIN ERP102.dbo.產品區分 ON 產品.產品區分 = 產品區分.產品區分碼" & _
    "        INNER JOIN ERP102.dbo.員工 ON 訂單.業務員 = 員工.員工碼" & _
    "       WHERE left(ERP102.dbo.訂單.訂單日期,7) = @OrderDate_7 " & _
    "        AND 訂單.審核 = 'Y'"
            SQLcmd.Parameters.Add("@OrderDate_7", SqlDbType.VarChar).Value = Replace(TextBox1.Text, " ", "")
            'MessageBox.Show(Replace(TextBox1.Text, " ", ""))
    SQLcmd.ExecuteNonQuery()→這條老是出現將資料類型從 varchar 轉換到 numeric 時發生錯誤。我在TEXTBOX1.text 輸入為2013/07
     試的多次還是未解。請問大大該如何解呢?謝謝

    2013年8月23日 上午 02:22
  • 您好,
    請問在SSMS中執行以下的SQL會發生錯誤嗎?

    SELECT 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 客戶.公司名稱, 訂單細目.料號,產品.品名, 
            訂單.業務員, 員工.姓名, 訂單細目.數量, 訂單細目.單價, 訂單細目.數量 * 訂單細目.單價 * 訂單.目前匯率, 
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
            產品區分.產品區分, 客戶.關係人,0, 產品.規格 
            FROM ERP102.dbo.訂單 
            INNER JOIN ERP102.dbo.訂單細目 ON 訂單.訂單編號 = 訂單細目.訂單編號 
            INNER JOIN ERP102.dbo.客戶 ON 訂單.客戶代號 = 客戶.客戶代號 
            INNER JOIN ERP102.dbo.產品 ON 訂單細目.料號 = 產品.料號 
            INNER JOIN ERP102.dbo.產品區分 ON 產品.產品區分 = 產品區分.產品區分碼 
            INNER JOIN ERP102.dbo.員工 ON 訂單.業務員 = 員工.員工碼 
           WHERE left(ERP102.dbo.訂單.訂單日期,7) = '2013/07'

    如果不會的話,那執行以下的SQL會發生錯誤嗎?

    begin tran
    INSERT INTO EIS.dbo.EIS_訂單出貨T  
    SELECT 訂單.公司碼, 訂單.訂單日期, 訂單.客戶代號, 客戶.公司名稱, 訂單細目.料號,產品.品名, 
            訂單.業務員, 員工.姓名, 訂單細目.數量, 訂單細目.單價, 訂單細目.數量 * 訂單細目.單價 * 訂單.目前匯率, 
            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
            產品區分.產品區分, 客戶.關係人,0, 產品.規格 
            FROM ERP102.dbo.訂單 
            INNER JOIN ERP102.dbo.訂單細目 ON 訂單.訂單編號 = 訂單細目.訂單編號 
            INNER JOIN ERP102.dbo.客戶 ON 訂單.客戶代號 = 客戶.客戶代號 
            INNER JOIN ERP102.dbo.產品 ON 訂單細目.料號 = 產品.料號 
            INNER JOIN ERP102.dbo.產品區分 ON 產品.產品區分 = 產品區分.產品區分碼 
            INNER JOIN ERP102.dbo.員工 ON 訂單.業務員 = 員工.員工碼 
           WHERE left(ERP102.dbo.訂單.訂單日期,7) = '2013/07'
    rollback
    

    ps.
    如果是同一個DB的話,只需要開一個Connection即可!


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年8月23日 上午 02:50
  • Dear 大大:

    同一台主機不同的資料庫。我是從不同資料庫講資料擷取過來匯整。

    我用舊法就不會產生型態轉換問題 但參數化就會.所以請教大大該如何改呢?

    謝謝大大

    2013年8月23日 上午 03:03
  • Hi,

    請您執行的SQL有執行了嗎?

    是否有錯誤呢?


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2013年8月23日 上午 03:33