Fråga : Sätt in inte arbetet inom en starta: Felet som konverterar data, skrivar varchar till numeriskt

Hälsningar förmiddagen för

I den har, besvärar att sätta in in i en bordlägga using en starta.  Det kusliga tinget är att det var den funktionsdugliga sena sist veckan.  Det enda tinget tillfogad I var ett index till bordlägga på InvoiceNumber, och LineItemNo_Int.

If som jag inaktiverar starta, datan, sätts in.  När jag möjliggör starta, jag får ett fel:

Msg 8114, jämnar 16, påstår 5, tillvägagångssätttrig_InvoiceLinesInsertCheck, fodrar 27
Error som konverterar datatyp som är varchar till numeric.

Table Def:
CREATE BORDLÄGGER [dboen]. SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] CustomerNo] [InvoiceLines] (den 1.1) INTE OGILTIGA IDENTITETEN för
[InvoiceLinesID] [int] (,
[[varchar] InvoiceNumber] (100) (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] LineItemNo] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[LineItemNo_Int] [int,], OGILTIGT,
[[varchar] PartNo] (100) SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] CustomerPartNo] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] antal] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] UnitOfMeasure] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] UnitPrice] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] rabatt] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] VAT_Tax] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] PONumber] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] PODate] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] OrderNumber] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[Varchar] PackingSlip] (100) SORTERAR OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] PlantNumber] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] DepartmentNumber] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] AccountNumber] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] CompanyWarehouse] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] SalesOrderCarrier] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] LineItemPONumber] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] LineItemReleaseNumber] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] MKPositionNumber] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] TrackingNumber] (100), SORTERA OGILTIG SQL_Latin1_General_CP1_CI_AS,
[[varchar] InvoiceFormat] (100), SORTERA SQL_Latin1_General_CP1_CI_AS NULL
) PÅ [PRIMÄR]


Trigger Def:

alter STARTAR [dboen]. [trig_InvoiceLinesInsertCheck] PÅ [dboen]. (Välj * från InvoiceLines var InvoiceNumber = @InvoiceNumber och OrderNumber = @OrderNumber och LineItemNo =, [InvoiceLines]
I STÄLLET FÖR on
för nocount för MELLANLÄGGS
AS
BEGIN
fastställd FÖRKLARAR varchar (100)
för @InvoiceNumber förklarar varchar (100)
för @OrderNumber förklarar att varchar (100)
för @PositionNumber FÖRKLARAR @InvoiceFormat för
för @InvoiceFormat varchar (100) fastställd = (valda InvoiceFormat från INSATT)
om @InvoiceFormat = 'ny FASTSTÄLLD @InvoiceNumber för Format'
BEGIN
= (valda InvoiceNumber från INSATT) fastställd @OrderNumber för
= (valda OrderNumber från INSATT) fastställd @PositionNumber för
= (valda LineItemNo från INSATT)

, OM FINNS borttagnings för
BEGIN
för @PositionNumber) från InvoiceLines var InvoiceNumber = @InvoiceNumber och OrderNumber = @OrderNumber och LineItemNo = mellanlägget för @PositionNumber
END
END
in i InvoiceLines
(InvoiceNumber, CustomerNo, LineItemNo, LineItemNo_Int, PartNo, CustomerPartNo, Quantity, UnitOfMeasure, UnitPrice, rabatten, VAT_Tax, PONumber, PODate, OrderNumber, PackingSlip, PlantNumber, DepartmentNumber, AccountNumber, CompanyWarehouse, SalesOrderCarrier, LineItemPONumber, LineItemReleaseNumber, MKPositionNumber, TrackingNumber, InvoiceFormat)
väljer
InvoiceNumber, CustomerNo, LineItemNo, LineItemNo_Int, PartNo, CustomerPartNo, Quantity, UnitOfMeasure, UnitPrice, Discount, VAT_Tax, PONumber, PODate, OrderNumber, PackingSlip, PlantNumber, DepartmentNumber, AccountNumber, CompanyWarehouse, SalesOrderCarrier, LineItemPONumber, LineItemReleaseNumber, MKPositionNumber, TrackingNumber, InvoiceFormat
från INSATT Query för
END


Insert:

insert in i InvoiceLines
(antalet för
InvoiceNumber, för
CustomerNo, för
LineItemNo, för
LineItemNo_Int, för
PartNo, för
CustomerPartNo, för
, rabatten för
UnitOfMeasure, för
UnitPrice, för
,
VAT_Tax,
PONumber,
PODate,
OrderNumber,
PackingSlip,
PlantNumber,
DepartmentNumber,
AccountNumber,
CompanyWarehouse,
SalesOrderCarrier,
LineItemPONumber,
LineItemReleaseNumber,
MKPositionNumber,
TrackingNumber,
InvoiceFormat
)
values
(
”31775ABC”,
            ”013608”,
”20”,
20,
”TESTPART”,
”TESTPART2”,
”2”,
'',
”26.70”,
'',
'',
”166TEST”,
'',
”31TEST”,
'',
'',
'',
'',
'',
”br/>)
för Format'< för
för UPAC-”, för
'', för
'', för
för
'', ”TESTTRACKINGNUM”, 'ny " klar "

Svar : Sätt in inte arbetet inom en starta: Felet som konverterar data, skrivar varchar till numeriskt

>dgmg: Applikationen, som kallar mellanläggsmeddelandet, har kontrollerar att ska låt endast en singel ror för att sättas in i sänder.

Stilla farligt, tack vare den globala naturen av en starta.  Du bör inte anta att ALLA ska uppdateringar påbörja ALLTID från den applikation.  Speciellt när det är riktigt, starta kodifiera tekniker är billig försäkring. : >)




>Några andra idéer?
Förminska mellanlägget till den första kolonnen endast.  Hopefully den fungerar. Tillfoga löpande några kolonner i sänder till fynd den kränkande kolonnen/datan.
Andra lösningar  
 
programming4us programming4us