2016-07-15 47 views
0

爲什麼我的程序只插入字符串的第一個字符? 我有DAT查詢:爲什麼我的程序只從字符串插入第一個字符?

USE [TCO_Orders_SS] 
GO 
/****** Object: StoredProcedure [dbo].[InsertIroBOMParts] Script Date: 07/15/2016 08:28:57 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER PROCEDURE [dbo].[InsertIroBOMParts] 
@OrderID int, 
@OrderSelection int, 
@Idx varchar, 
@Component varchar, 
@DrawingNo varchar, 
@PartNo varchar, 
@BatchNoParts varchar, 
@Amount varchar, 
@Comments varchar 

AS 
BEGIN 
     SET NOCOUNT ON; 
     INSERT INTO Orders_IroBOMParts(OrderID,OrderSelection, idx,componenent,drawingno,partno,batchno,amount,comments) 

     VALUES (@OrderID,@OrderSelection, @Idx,@Component,@DrawingNo,@PartNo,@BatchNoParts,@Amount,@Comments) 
END 

我嘗試插入更多的行但是從我的字符串只插入第一卡拉科特,如果我有字符串「現代」投入表只是「M」。但爲什麼?

enter image description here

我對插入在vb.net代碼是:

For Each gvr As TableRow In TabelVerificari.Rows 

      For i = 1 To TabelVerificari.Rows.Count - 1 

       Idx = "P" & i 
       Dim Result1 As TextBox = gvr.FindControl("BOX_Component" & "_" & Col & i) 
       Dim Result2 As TextBox = gvr.FindControl("BOX_Drowing" & "_" & Col & i) 
       Dim Result3 As TextBox = gvr.FindControl("BOX_PartNo" & "_" & Col & i) 
       Dim Result4 As TextBox = gvr.FindControl("BOX_BatchNo" & "_" & Col & i) 
       Dim Result5 As TextBox = gvr.FindControl("BOX_Amount" & "_" & Col & i) 
       Dim Result6 As TextBox = gvr.FindControl("BOX_Comments" & "_" & Col & i) 

       Component = Result1.Text 
       Drawing = Result2.Text 
       PartNo = Result3.Text 
       batchNo = Result4.Text 
       Amount = Result5.Text 
       Comments = Result6.Text 

       Dim InsertBOM As SqlConnection = Nothing 
       InsertBOM = FunctionConnection() 
       Dim cmdBOM As SqlCommand = New SqlCommand() 

       Try 
        'Insert Function 
        cmdBOM.Connection = InsertBOM 
        cmdBOM.CommandTimeout = 50 
        cmdBOM.CommandType = System.Data.CommandType.StoredProcedure 
        cmdBOM.CommandText = "InsertIroBOMParts" 

        cmdBOM.Parameters.AddWithValue("@OrderID", OrderID) 
        cmdBOM.Parameters.AddWithValue("@OrderSelection", i) 
        cmdBOM.Parameters.AddWithValue("@Idx", Idx) 
        cmdBOM.Parameters.AddWithValue("@Component", Component) 
        cmdBOM.Parameters.AddWithValue("@DrawingNo", Drawing) 
        cmdBOM.Parameters.AddWithValue("@PartNo", PartNo) 
        cmdBOM.Parameters.AddWithValue("@BatchNoParts", batchNo) 
        cmdBOM.Parameters.AddWithValue("@Amount", Amount) 
        cmdBOM.Parameters.AddWithValue("@Comments", Comments) 

        InsertBOM.Open() 
        cmdBOM.ExecuteNonQuery() 

       Catch ex As Exception 
        LBL_Error.Text = "Please complete correctly boxes!" 
        Exit Sub 
       Finally 

        If InsertBOM.State = ConnectionState.Open Then 
         InsertBOM.Close() 
        End If 
        'Session("OrderNo") = OrderID 
        'Response.Redirect("MV_UpdateSample.aspx") 
       End Try 

      Next 
      Exit For 
     Next 
+0

[varchar(n | max)](https://msdn.microsoft.com/zh-cn/library/ms176089.aspx)當在數據定義或變量聲明語句中未指定* n *時,缺省值長度是'1' –

回答

2

你需要指定VARCHAR變量寬度。目前您擁有:

@Idx varchar, 
@Component varchar, 
@DrawingNo varchar, 
@PartNo varchar, 
@BatchNoParts varchar, 
@Amount varchar, 
@Comments varchar 

指定沒有數字寬度,默認寬度爲一個字符。相反,指定的字符數的寬度,你希望合理地滿足您的所有數據,例如:

@Idx varchar(55), 
@Component varchar(55), 
@DrawingNo varchar(55), 
@PartNo varchar(55), 
@BatchNoParts varchar(55), 
@Amount varchar(55), 
@Comments varchar(55) 

這將給予55個字符每個VARCHAR的寬度。

+0

是的,愚蠢的錯誤。謝謝 – Vladut

相關問題