Reputation: 25
I'm updating my project And now the problem is sometimes ticket number Duplicates after update whats wrong with this code?
Or what would be the most elegant solution to allow me to
My code is
DECLARE @tbl_ID TABLE (nID int)
UPDATE tbl_Tickets
SET Ticket_Type = @Ticket_Type,
VehicleNo= @VehicleNo,
Customer=@Customer,
Job_Code=@Job_Code,
Material=@Material,
First_Weight=@First_Weight,
Second_Weight=@Second_Weight,
Net_Weight=@Net_Weight,
Add_Charges=@Add_Charges,
Deduction=@Deduction,
Ticket_Amount=@Ticket_Amount,
SOURCE=@Source,
Destination=@Destination,
OPERATOR=@Operator,
Out_Time=@Out_Time,
PC=@PC,
Unit_Price=@Unit_Price OUTPUT INSERTED.QS_Code INTO @tbl_ID (nID)
WHERE (VehicleNo=@VehicleNo)
AND (Second_Weight IS NULL)
AND (Ticket_Type <>'DELETED') IF @@ROWCOUNT=0 BEGIN
INSERT INTO tbl_Tickets (Ticket_Type, TicketNo, VehicleNo, nDate, Customer,Job_Code,Material, First_Weight, Second_Weight, Net_Weight, Unit_Price, Add_Charges, Deduction, Ticket_Amount,SOURCE, Destination,
OPERATOR, In_Time, PC)
VALUES (@Ticket_Type,
@TicketNo,
@VehicleNo,
@nDate,
@Customer,
@Job_Code,
@Material,
@First_Weight,
@Second_Weight,
@Net_Weight,
@Unit_Price,
@Add_Charges,
@Deduction,
@Ticket_Amount,
@Source,
@Destination,
@Operator,
@In_Time,
@PC)
SELECT IDENT_CURRENT('tbl_Tickets')
FROM tbl_Tickets
UPDATE tbl_TicketNumber
SET TicketNo = @TTicket,
PC= @TPC,
nDate= @TnDate WHERE (PC=@TPC) IF @@ROWCOUNT=0 BEGIN
INSERT INTO tbl_TicketNumber (TicketNo, PC, nDate)
VALUES (@TTicket,
@TPC,
@TnDate) END END
SELECT *
FROM @tbl_ID
Then I change it to
cm.CommandText = " DECLARE @tbl_ID TABLE (nID int) UPDATE tbl_Tickets " & _
" SET Ticket_Type = @Ticket_Type, TicketNo = @TicketNo, VehicleNo= @VehicleNo," & _
" nDate=@nDate, Customer=@Customer, Job_Code=@Job_Code, Material=@Material, " & _
" First_Weight=@First_Weight, Second_Weight=@Second_Weight, Net_Weight=@Net_Weight, " & _
" Add_Charges=@Add_Charges, Deduction=@Deduction, Ticket_Amount=@Ticket_Amount, " & _
" Source=@Source, Destination=@Destination, Operator=@Operator, Out_Time=@Out_Time, PC=@PC, Payment=@Payment,Unit_Price=@Unit_Price " & _
EditString & _
" OUTPUT INSERTED.QS_Code INTO @tbl_ID (nID) WHERE (VehicleNo=@VehicleNo) AND (Second_Weight IS NULL) AND (Ticket_Type <>'Weighbridge_VOID') AND (Ticket_Type <>'Cash_VOID') " & _
" IF @@ROWCOUNT=0 " & _
" BEGIN " & _
" INSERT INTO tbl_Tickets (Ticket_Type, TicketNo, VehicleNo, nDate, Customer,Job_Code,Material, " & _
" First_Weight, Second_Weight, Net_Weight, Unit_Price, Add_Charges, Deduction, Ticket_Amount,Source, " & _
" Destination, Operator, In_Time, PC, Payment " & _
AddString & " ) VALUES (@Ticket_Type, '00-00', @VehicleNo, @nDate, @Customer,@Job_Code,@Material, " & _
" @First_Weight, @Second_Weight, @Net_Weight, @Unit_Price, @Add_Charges, @Deduction, @Ticket_Amount,@Source, " & _
" @Destination, @Operator, @In_Time, @PC, @Payment " & _
AddStringVal & " ) SELECT IDENT_CURRENT('tbl_Tickets') FROM tbl_Tickets " & _
" END SELECT * From @tbl_ID" '
And add the TicketNumberUpdate sub after this update like this
cm.CommandText = " UPDATE tbl_TicketNumber " & _
" SET TicketNo = @TTicket, PC= @TPC, nDate= @TnDate" & _
" WHERE (PC=@TPC) " & _
" IF @@ROWCOUNT=0 " & _
" INSERT INTO tbl_TicketNumber (TicketNo, PC, nDate) VALUES (@TTicket,@TPC,@TnDate) "
Upvotes: 0
Views: 86
Reputation: 4900
It looks like you're ignoring the value of the IDENT_CURRENT Try changing
SELECT IDENT_CURRENT('tbl_Tickets')
FROM tbl_Tickets
UPDATE tbl_TicketNumber SET
TicketNo = @TTicket,
PC= @TPC,
nDate= @TnDate
WHERE (PC=@TPC)
to this
SET @TTicket = IDENT_CURRENT('tbl_Tickets')
UPDATE tbl_TicketNumber SET
TicketNo = @TTicket,
PC= @TPC,
nDate= @TnDate
WHERE (PC=@TPC)
Upvotes: 1