Hello,
I have a MySQL database connected to Visual Studio 2017 Community Edition software. I created two generated columns in MySQL database: - PlanProfit = PlanSales - PlanCost and PlanPercent = PlanSales/PlanCost * 100. PlanProfit is saved as Virtual Expression and PlanPercent is saved as a Stored procedure.
I am trying to INSERT data into the Plan table using parameters, but I received the following error message that @planprofit and @profitpercent are not allowed, once i add a new record and press the save button. The Exception Unhandled error message: -
Code:MySql.Data.MySqlClient.MySqlException: 'The value specified for generated column 'PlanProfit' in table 'plans' is not allowed.'
The vb.net code is shown below: -
I tried to create a stored procedure for the PlanProfit in Visual Studio, but I received an error message that a duplicate column name "PlanProfit" exists. The stored expression is:-Code:Private Sub BtnPlanSave_Click(sender As Object, e As EventArgs) Handles BtnPlanSave.Click InsertPlans() End Sub Public Sub InsertPlans() Dim sql As String = "INSERT INTO plans (`PlanID`, PlanCost`,`PlanSales,’PlanProfit,’PlanPercent’,’PlanNotes’) values (@planid,@plancost,@plansales,@planprofit,@planpercent,@plannotes)" con = New MySqlConnection("Server=localhost;Port=3306;Database=mydatabase;userid=root;password=,mypassword;persist security info=True") con.Open() Dim cmd = New MySqlCommand(sql, con) cmd.Parameters.AddWithValue("@planid", Me.txtPlanID.Text) cmd.Parameters.AddWithValue("@plancost", Me.txtPlanCost.Text) cmd.Parameters.AddWithValue("@plansales", Me.txtPlanSales.Text) cmd.Parameters.AddWithValue("@planprofit", “PlanSales – PlanCost”) cmd.Parameters.AddWithValue("@planpercent", “PlanSales /PlanCost * 100”) cmd.Parameters.AddWithValue("@plannotes", Me.txtPlanNotes.Text) cmd.ExecuteNonQuery() con.Close() End Sub
Any assistance to help me with the INSERT new data in the Plan table and save the new records in Visual Studio, will be greatly appreciated.Code:ALTER TABLE plans ADD COLUMN PlanProfit DOUBLE GENERATED ALWAYS AS (PlanSales-PlanCost) STORED;
Thanks




Reply With Quote
