我错过了一些东西,但我找不到。以下是我收到的错误。大多数输入(例如票证编号,问题编号)来自会话变量。我输入的唯一输入是“分辨率” txtbox。其他字段是可选的
这是我的代码,可在出现错误时将其插入。
private void InsertResolution()
{
Int32 intRetValue;
intRetValue = clsDatabase.InsertResolution(Convert.ToInt32(chkNoCharge.Checked.ToString()),
Convert.ToInt32(lblTicketNo.Text.Trim().ToString()),
Convert.ToInt32(lblProblemNo.Text.Trim().ToString()),
Convert.ToInt32(lblResolutionEnt.Text.Trim().ToString()),
txtResolution.Text.Trim(), txtDateFixed.Text.Trim().ToString(),
txtDateOnsite.Text.Trim().ToString(),
Convert.ToInt32(drpTechnician.SelectedValue),
Convert.ToDecimal(txtHours.Text.Trim().ToString()),
Convert.ToDecimal(txtCostHours.Text.Trim().ToString()),
Convert.ToDecimal(txtMileage.Text.Trim().ToString()),
Convert.ToDecimal(txtCostMiles.Text.Trim().ToString()),
Convert.ToDecimal(txtSupplies.Text.Trim().ToString()),
Convert.ToDecimal(txtMisc.Text.Trim().ToString()));
if (intRetValue == 0)
{
lblError.Text = "New resolution INSERTED.";
lblResolutionEnt.Text = (int.Parse(lblResolutionEnt.Text) + 1).ToString();
}
else
{
lblError.Text = "Error inserting new resolution.";
}
}
这是我班上的代码
public static Int32 InsertResolution(Int32 intNocharge, Int32 intTicketID, Int32 intIncidentNo, Int32 intResNo, String strResDesc, String strDateFix, String strDateOnsite, Int32 intTechID, Decimal decHours, Decimal decCostHours, Decimal decMileage, Decimal decCostMiles, Decimal decSupplies, Decimal decMisc)
{
SqlConnection cnSQL;
SqlCommand cmdSQL;
Boolean blnErrorOccurred = false; //** set up to false assuming we don't get errors
Int32 intRetCode = 0;
cnSQL = AcquireConnection();
if (cnSQL == null)
{
blnErrorOccurred = true;
}
else
{
//**Build command to execute stored procedure
cmdSQL = new SqlCommand(); //**opening the SqlCommand
cmdSQL.Connection = cnSQL; //** opening the command connection
cmdSQL.CommandType = CommandType.StoredProcedure; //** accessing the stored procedure from the command window
cmdSQL.CommandText = "uspInsertResolution"; //** defining the stored procedure to run
//**taking the input from the string inputting to the database
cmdSQL.Parameters.Add(new SqlParameter("@NoCharge", SqlDbType.Int));
cmdSQL.Parameters["@NoCharge"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@NoCharge"].Value = intNocharge;
//***********************************************************************
cmdSQL.Parameters.Add(new SqlParameter("@TicketID", SqlDbType.Int));
cmdSQL.Parameters["@TicketID"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@TicketID"].Value = intTicketID;
//***********************************************************************
cmdSQL.Parameters.Add(new SqlParameter("@IncidentNo", SqlDbType.Int));
cmdSQL.Parameters["@IncidentNo"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@IncidentNo"].Value = intIncidentNo;
//***********************************************************************
cmdSQL.Parameters.Add(new SqlParameter("@ResNo", SqlDbType.Int));
cmdSQL.Parameters["@ResNo"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@ResNo"].Value = intResNo;
//************************************************************************
cmdSQL.Parameters.Add(new SqlParameter("@ResDesc", SqlDbType.NVarChar, 500));
cmdSQL.Parameters["@ResDesc"].Direction = ParameterDirection.Input;
cmdSQL.Parameters ["@ResDesc"].Value = strResDesc;
//************************************************************************
cmdSQL.Parameters.Add(new SqlParameter("@DateFix", SqlDbType.NVarChar));
cmdSQL.Parameters["@DateFix"].Direction = ParameterDirection.Input;
//**if the field is empty or null
if (String.IsNullOrWhiteSpace(strDateFix))
{
cmdSQL.Parameters["@DateFix"].Value = DBNull.Value;
}
else
{
cmdSQL.Parameters["@DateFix"].Value = Convert.ToDateTime(strDateFix);
}
cmdSQL.Parameters.Add(new SqlParameter("@DateOnsite", SqlDbType.NVarChar));
cmdSQL.Parameters["@DateOnsite"].Direction = ParameterDirection.Input;
//**if the field is empty or null
if (String.IsNullOrWhiteSpace(strDateOnsite))
{
cmdSQL.Parameters["@DateOnsite"].Value = DBNull.Value;
}
else
{
cmdSQL.Parameters["@DateOnsite"].Value = Convert.ToDateTime(strDateOnsite);
}
cmdSQL.Parameters.Add(new SqlParameter("@TechID", SqlDbType.Int));
cmdSQL.Parameters["@TechID"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@TechID"].Value = intTechID;
cmdSQL.Parameters.Add(new SqlParameter("@Hours", SqlDbType.Decimal));
cmdSQL.Parameters["@Hours"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@Hours"].Value = decHours;
cmdSQL.Parameters.Add(new SqlParameter("@Hours", SqlDbType.Decimal));
cmdSQL.Parameters["@Hours"].Direction = ParameterDirection.Input;
cmdSQL.Parameters["@Hours"].Value = decHours;
//********************************************************************
cmdSQL.Parameters.Add(new SqlParameter("@Mileage", SqlDbType.Decimal));
cmdSQL.Parameters["@Mileage"].Direction = ParameterDirection.Input;
if (decMileage.ToString() == null)
{
cmdSQL.Parameters["@Mileage"].Value = DBNull.Value;
}
else
{
cmdSQL.Parameters["@Mileage"].Value = decMileage;
}
//*********************************************************************
cmdSQL.Parameters.Add(new SqlParameter("@CostMiles", SqlDbType.Decimal));
cmdSQL.Parameters["@CostMiles"].Direction = ParameterDirection.Input;
if (decCostMiles.ToString() == null)
{
cmdSQL.Parameters["@CostMiles"].Value = DBNull.Value;
}
else
{
cmdSQL.Parameters["@CostMiles"].Value = decCostMiles;
}
//*********************************************************************
cmdSQL.Parameters.Add(new SqlParameter("@Supplies", SqlDbType.Decimal));
cmdSQL.Parameters["@Supplies"].Direction = ParameterDirection.Input;
if (decSupplies.ToString() == null)
{
cmdSQL.Parameters["@Supplies"].Value = DBNull.Value;
}
else
{
cmdSQL.Parameters["@Supplies"].Value = decSupplies;
}
//*********************************************************************
cmdSQL.Parameters.Add(new SqlParameter("@Misc", SqlDbType.Decimal));
cmdSQL.Parameters["@Misc"].Direction = ParameterDirection.Input;
if (decMisc.ToString() == null)
{
cmdSQL.Parameters["@Misc"].Value = DBNull.Value;
}
else
{
cmdSQL.Parameters["@Misc"].Value = decMisc;
}
//**return the value and display to the page
cmdSQL.Parameters.Add(new SqlParameter("@ErrCode", SqlDbType.Int));
cmdSQL.Parameters["@ErrCode"].Direction = ParameterDirection.ReturnValue;
try
{
intRetCode = cmdSQL.ExecuteNonQuery();
}
catch (Exception ex)
{
blnErrorOccurred = true;
}
finally
{
cmdSQL.Parameters.Clear();
cmdSQL.Dispose();
cnSQL.Close();
cnSQL.Dispose();
}
}
if (blnErrorOccurred)
{
//**if success
return -1;
}
else
{
return 0;
}
}
这是我从课堂上调用的存储过程。感谢您的投入。
CREATE PROCEDURE [dbo].[uspInsertResolution]
@TicketID int,
@IncidentNo int,
@ResNo int,
@ResDesc nvarchar(500),
@DateFix datetime,
@DateOnsite datetime,
@TechID int,
@Hours decimal(10,2),
@Mileage decimal(10,1),
@CostMiles money,
@Supplies money,
@Misc money,
@NoCharge int = 0
AS
--*********************************************************************
--** Add a resolution
--*********************************************************************
SET NOCOUNT ON;
DECLARE @ErrCode int;
IF @NoCharge = 1
INSERT INTO [dbo].[Resolutions] ([TicketID],[IncidentNo],[ResolutionNo],
[ResolutionDesc],[DateFixed],[DateOnsite],[TechnicianID],[Hours],
[CostHours],[Mileage],[CostMiles],[Supplies],[Misc])
VALUES (@TicketID, @IncidentNo, @ResNo, @ResDesc, @DateFix, @DateOnsite,
@TechID, @Hours, 0.0, @Mileage, @CostMiles, @Supplies, @Misc)
ELSE
INSERT INTO [dbo].[Resolutions] ([TicketID],[IncidentNo],[ResolutionNo],
[ResolutionDesc],[DateFixed],[DateOnsite],[TechnicianID],[Hours],
[CostHours],[Mileage],[CostMiles],[Supplies],[Misc])
SELECT @TicketID, @IncidentNo, @ResNo, @ResDesc, @DateFix, @DateOnsite,
@TechID, @Hours, [HRate], @Mileage, @CostMiles, @Supplies, @Misc
FROM [dbo].[Technicians]
WHERE [TechnicianID] = @TechID;
SET @ErrCode = @@ERROR;
SET NOCOUNT OFF;
RETURN @ErrCode;