cccstudent
cccstudent

Reputation: 15

VB.Net execute stored procedure error message

Note: Thanks to the feedback here is my corrected/working code: I am working in Visual Studio VB.NET executing a SQL Server stored procedure that should take my form's text fields and add the information into the database.

The error message I am getting states

Procedure spVehicleAddNew has no parameters and arguments were supplied.

Below is the code for both my stored procedure as well as the visual basic code. I am new to executing stored procedures and would appreciating any help figuring out this error message. Thanks!

Private Sub btnAddToInventory_Click(sender As Object, e As EventArgs) Handles btnAddToInventory.Click
        Try
            Dim sqlConnection1 As New SqlConnection("Data Source=GALE-PC1\SQLEXPRESS2012;Initial Catalog=VehicleCheckout;Integrated Security=True")
            Dim cmd As New SqlCommand
            cmd.Parameters.Clear()
            cmd.CommandText = "spVehicleAddNew"
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Connection = sqlConnection1
            cmd.Parameters.AddWithValue("@VehicleTagNo", txtVehicleTagNo.Text)
            cmd.Parameters.AddWithValue("@VehicleVIN", txtVehicleVIN.Text)
            cmd.Parameters.AddWithValue("@VehicleLicense", txtVehicleLicense.Text)
            cmd.Parameters.AddWithValue("@Make", txtMake.Text)
            cmd.Parameters.AddWithValue("@Model", txtModel.Text)
            cmd.Parameters.AddWithValue("@VehicleYear", txtYear.Text)
            cmd.Parameters.AddWithValue("@Color", txtColor.Text)
            cmd.Parameters.AddWithValue("@Seats", txtSeats.Text)
            cmd.Parameters.AddWithValue("@Available", ckbAvailable.Text)
            cmd.Parameters.AddWithValue("@VehicleComments", txtAvailableComments.Text)
            cmd.Parameters.AddWithValue("@VehicleNotes", txtVehicleNotes.Text)
            cmd.Parameters.AddWithValue("@CurrentMileage", txtCurrentMileage.Text)
            cmd.Parameters.AddWithValue("@NextServiceMileage", txtNextServiceMileage.Text)
            cmd.Parameters.AddWithValue("@Scrap", ckbScrap.Text)
            cmd.Parameters.AddWithValue("@GPS", ckbGPS.Text)
            cmd.Parameters.AddWithValue("@CassettePlayer", ckbCassettePlayer.Text)
            cmd.Parameters.AddWithValue("@CDPlayer", ckbCDPlayer.Text)
            cmd.Parameters.AddWithValue("@DVDPlayer", ckbDVDPlayer.Text)
            cmd.Parameters.AddWithValue("@Convertible", ckbConvertible.Text)
            sqlConnection1.Open()
            cmd.ExecuteNonQuery()
            sqlConnection1.Close()
        Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        End Try
    End Sub

Stored procedure:

Create PROC spVehicleAddNew
    @VehicleTagNo varchar(30),
    @VehicleVIN varchar(100),
    @VehicleLicense varchar(50),
    @Make varchar(30),
    @Model varchar(30),
    @VehicleYear int,
    @Color varchar(20),
    @Seats int,
    @Available bit,
    @AvailableComments varchar(1000),
    @VehicleNotes varchar(1050),
    @CurrentMileage int,
    @NextServiceMileage int,
    @Scrap bit,
    @GPS bit,
    @CassettePlayer bit,
    @CDPlayer bit,
    @DVDPlayer bit,
    @Convertible bit,
    @VehicleID int
   AS   
   BEGIN TRY
    BEGIN TRAN;
        INSERT Vehicle
        (VehicleTagNo, VehicleVIN, VehicleLicense, Make, Model, VehicleYear, Color, Seats, Available, AvailableComments, VehicleNotes, CurrentMileage, NextServiceMileage, Scrap)
        VALUES(@VehicleTagNo, @VehicleVIN, @VehicleLicense, @Make, @Model, @VehicleYear, @Color, @Seats, @Available, @AvailableComments, @VehicleNotes, @CurrentMileage, @NextServiceMileage, @Scrap);
        SET @VehicleID = @@IDENTITY;
        INSERT Amenities
        (GPS, CassettePlayer, CDPlayer, DVDPlayer, Convertible, VehicleID)
        VALUES(@GPS, @CassettePlayer,@CDPlayer,@DVDPlayer,@Convertible, @VehicleID);
            COMMIT TRAN;
END TRY
BEGIN CATCH
    ROLLBACK TRAN;
END CATCH;`

Upvotes: 0

Views: 510

Answers (1)

Abhinav
Abhinav

Reputation: 36

Your stored procedure does not contain any parameter ... You have mistakenly declared them as variables inside the procedure instead ... Also, you don't need to define VehicleId as a parameter, as you are using it as an identity column inside your procedure ... It should be rather defined as

Create PROC spVehicleAddNew(
    @VehicleTagNo varchar(30),
    @VehicleVIN varchar(100),
    @VehicleLicense varchar(50),
    @Make varchar(30),
    @Model varchar(30),
    @VehicleYear int,
    @Color varchar(20),
    @Seats int,
    @Available bit,
    @AvailableComments varchar(1000),
    @VehicleNotes varchar(1050),
    @CurrentMileage int,
    @NextServiceMileage int,
    @Scrap bit,
    @GPS bit,
    @CassettePlayer bit,
    @CDPlayer bit,
    @DVDPlayer bit,
    @Convertible bit)
as
    BEGIN TRY
Declare @VehicleID int

    BEGIN TRAN;
        INSERT Vehicle
        (VehicleTagNo, VehicleVIN, VehicleLicense, Make, Model, VehicleYear, Color, Seats, Available, AvailableComments, VehicleNotes, CurrentMileage, NextServiceMileage, Scrap)
        VALUES(@VehicleTagNo, @VehicleVIN, @VehicleLicense, @Make, @Model, @VehicleYear, @Color, @Seats, @Available, @AvailableComments, @VehicleNotes, @CurrentMileage, @NextServiceMileage, @Scrap);
        SET @VehicleID = @@IDENTITY;
        INSERT Amenities
        (GPS, CassettePlayer, CDPlayer, DVDPlayer, Convertible, VehicleID)
        VALUES(@GPS, @CassettePlayer,@CDPlayer,@DVDPlayer,@Convertible, @VehicleID);
            COMMIT TRAN;
END TRY
BEGIN CATCH
    ROLLBACK TRAN;
END CATCH;

Upvotes: 1

Related Questions