Hallo, ich habe dieses SP.Konvertieren von Nvarchar-Typ zu numerischen SQL in gespeicherten Prozedur
USE [Invoice]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[uspInvoiceLines]
(@InInvoiceNbr int
,@InLinesPerPage int
)
AS
DECLARE @TotalRows int
DECLARE @Remainder int
DECLARE @NumPages int
DECLARE @NextPageRows int
set @TotalRows= 0
SELECT
ROW_NUMBER() OVER(ORDER BY CONVERT(INT, InvProduct))as InvoiceRow,
CoID,
InvNo,
InvProduct,
InvDesc,
InvQuantity,
InvUOM,
InvUnitPrice,
InvAmt
into #tempInvoice
FROM Invoice_Products
SET @TotalRows= @@ROWCOUNT
IF @TotalRows=0
BEGIN
WHILE @TotalRows < @InLinesPerPage -- Add Blank Rows will generate blank invoice.
BEGIN
SET @TotalRows= @TotalRows+1
INSERT #tempInvoice
(InvoiceRow,
CoID,
InvNo,
InvProduct,
InvDesc,
InvQuantity,
InvUOM,
InvUnitPrice,
InvAmt
)
VALUES
(@TotalRows
,@InInvoiceNbr
,''
,''
,0
,0
,0
,''
,0
,0)
END
END
ELSE
BEGIN
SET @Remainder = @TotalRows%@InLinesPerPage -- get remainder
IF @Remainder !=0
BEGIN
-- Get the current page increase by 1 becasue we have a remainder.
SET @NumPages = @TotalRows/@InLinesPerPage +1
SET @NextPageRows = @NumPages * @InLinesPerPage
WHILE @TotalRows < @NextPageRows -- Add Blank Rows
BEGIN
SET @TotalRows= @TotalRows+1
INSERT #tempInvoice
(InvoiceRow,
CoID,
InvNo,
InvProduct,
InvDesc,
InvQuantity,
InvUOM,
InvUnitPrice,
InvAmt
)
VALUES
(@TotalRows
,@InInvoiceNbr
,''
,''
,0
,0
,0
,''
,0,
0)
END
END
END
SELECT * from #tempInvoice order by InvoiceRow asc
return
Das Problem ist, dass, wenn die Zeilennummer der Berechnung InvProduct nvarchar Datentyp ist. Also, ich habe einen Fehler, wenn ich dies in der RDL-Datei verwende. Kann ich eine Idee/einen Einblick haben, wie ich das lösen kann?
P. S Ich habe diesen SP verwenden, um durch folgende diese Rechnungsart Bericht anzuzeigen: https://www.intertech.com/Blog/use-sql-server-reporting-services-to-generate-an-invoice-document/
Was ist in ** InvProduct **? Kann es in * int * umgewandelt werden? – Stephen
@Stephen InvProduct ist nvarchar type – 4stars
ja, aber da Sie es konvertieren * INT * enthält es ganzzahlige Werte oder ist es eine Zeichenfolge? Offensichtlich, wenn es String-Werte sind, können Sie CONVERT nicht für INT verwenden. Warum versuchen Sie ein VARCHAR-Feld in INT zu konvertieren? – Stephen