Reputation: 657
Why my procedure insert just first character from string? I have dat query:
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
I try to insert into for more line but insert just first caracter from my string, if i have String "Modern" put into table just "M". BUT WHY?
My code for insertion in vb.net are:
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
Upvotes: 0
Views: 68
Reputation: 521178
You need to specify the width of your VARCHAR
variables. Currently you have:
@Idx varchar,
@Component varchar,
@DrawingNo varchar,
@PartNo varchar,
@BatchNoParts varchar,
@Amount varchar,
@Comments varchar
This specifies no numerical width, which defaults to a width of one character. Instead, specify a width in number of characters which you expect to reasonably fit all your data, e.g.:
@Idx varchar(55),
@Component varchar(55),
@DrawingNo varchar(55),
@PartNo varchar(55),
@BatchNoParts varchar(55),
@Amount varchar(55),
@Comments varchar(55)
This would give each VARCHAR
a width of 55 characters.
Upvotes: 2