с указанием значения параметра умолчанию

голоса
1

При выполнении этого хранимая процедура на vb.net и оставив покупки текстовое поле пустым, чтобы сделать его недействительным при обновлении. но он возвращает ошибку говоря строка не была признана в качестве действительного DateTime. Любые предложения, чтобы сделать код работы будет высоко ценится.

  CREATE PROCEDURE UpdateEquipmentProfile

    (
    @OE_ID          varchar(11) =   NULL,
    @OE_Category        char(3)     =   NULL,
    @OE_SubCategory     char(3)     =   NULL,
    @OE_Name            varchar(35) =   NULL,
    @OE_User            varchar(35) =   NULL,
    @OE_Brand           varchar(15) =   NULL,
    @OE_Model           varchar(35) =   NULL,
    @OE_Specs           varchar(1000)   =   NULL,
    @OE_SerialNo        varchar(35) =   NULL,
    @OE_PropertyNo      varchar(35) =   NULL,
    @OE_MacAddress      varchar(100)    =   NULL,
    @OE_Static_IP       varchar(15) =   NULL,
    @OE_Vendor          varchar(35) =   NULL,
    @OE_PurchaseDate        smalldatetime   =   NULL,
    @OE_WarrantyInclusiveYear   int     =   NULL,
    @OE_WarrantyStatus      char(2)     =   NULL,
    @OE_Status          varchar(15) =   NULL,
    @OE_Dept_Code       char(3)     =   NULL,
    @OE_Location_Code       char(8)     =   NULL,
    @OE_Remarks         varchar(1000)   =   NULL
    )

    AS

    IF EXISTS(SELECT * FROM tblOfficeEquipmentProfile WHERE [email protected]_ID)

    UPDATE tblOfficeEquipmentProfile    SET
    OE_Category         [email protected]_Category,
    OE_SubCategory      [email protected]_SubCategory,
    OE_Name         [email protected]_Name,
    OE_User         [email protected]_User,
    OE_Brand            [email protected]_Brand,
    OE_Model            [email protected]_Model,
    OE_Specs            [email protected]_Specs,
    OE_SerialNo         [email protected]_SerialNo,
    OE_PropertyNo       [email protected]_PropertyNo,
    OE_MacAddress       [email protected]_MacAddress,
    OE_Static_IP        [email protected]_Static_IP,
    OE_Vendor           [email protected]_Vendor,
    OE_PurchaseDate     [email protected]_PurchaseDate,
    OE_WarrantyInclusiveYear    [email protected]_WarrantyInclusiveYear,
    OE_WarrantyStatus       [email protected]_WarrantyStatus,
    OE_Status           [email protected]_Status,
    OE_Dept_Code        [email protected]_Dept_Code,
    OE_Location_Code        [email protected]_Location_Code,
    OE_Remarks          [email protected]_Remarks

    WHERE [email protected]_ID
    GO

VB.NET КОД

    Dim cmd As SqlCommand = sqlconn.CreateCommand
    sqlconn.Open()
    cmd.CommandType = CommandType.StoredProcedure
    cmd.CommandText = UpdateEquipmentProfile

    cmd.Parameters.Add(@OE_ID, SqlDbType.VarChar, 11, oeq-su-999)
    cmd.Parameters.Add(@OE_Category, SqlDbType.Char, 3, COM)
    cmd.Parameters.Add(@OE_SubCategory, SqlDbType.Char, 3, SU)
    cmd.Parameters.Add(@OE_Name, SqlDbType.VarChar, 35, adminpmis01)
    cmd.Parameters.Add(@OE_User, SqlDbType.VarChar, 35, Ivan)
    cmd.Parameters.Add(@OE_Brand, SqlDbType.VarChar, 15, DELL)
    cmd.Parameters.Add(@OE_Model, SqlDbType.VarChar, 35, optiplex)
    cmd.Parameters.Add(@OE_Specs, SqlDbType.VarChar, 1000, dualcore)
    cmd.Parameters.Add(@OE_SerialNo, SqlDbType.VarChar, 35, sgh5960)
    cmd.Parameters.Add(@OE_PropertyNo, SqlDbType.VarChar, 35, j7h7h6g6f2)
    cmd.Parameters.Add(@OE_MacAddress, SqlDbType.VarChar, 100, j7h7:h6g6f2)
    cmd.Parameters.Add(@OE_Static_IP, SqlDbType.VarChar, 15, 192.168.1.5)
    cmd.Parameters.Add(@OE_Vendor, SqlDbType.VarChar, 35, ADWAYS)
    cmd.Parameters.Add(@OE_PurchaseDate, SqlDbType.SmallDateTime)
    cmd.Parameters.Add(@OE_WarrantyInclusiveYear, SqlDbType.Int)
    cmd.Parameters.Add(@OE_WarrantyStatus, SqlDbType.Char, 2, IN)
    cmd.Parameters.Add(@OE_Status, SqlDbType.VarChar, 15, Good)
    cmd.Parameters.Add(@OE_Dept_Code, SqlDbType.Char, 3, ADM)
    cmd.Parameters.Add(@OE_Location_Code, SqlDbType.Char, 8, ADM_OFC)
    cmd.Parameters.Add(@OE_Remarks, SqlDbType.VarChar, 1000, ACTIVE)
    cmd.Parameters(@OE_ID).Value = txtOEID.Text
    cmd.Parameters(@OE_Category).Value = cmbCategory.Text
    cmd.Parameters(@OE_SubCategory).Value = cmbSubCategory.Text
    cmd.Parameters(@OE_Name).Value = txtName.Text
    cmd.Parameters(@OE_User).Value = txtUser.Text
    cmd.Parameters(@OE_Brand).Value = cmbBrand.Text
    cmd.Parameters(@OE_Model).Value = cmbModel.Text
    cmd.Parameters(@OE_Specs).Value = txtSpecs.Text
    cmd.Parameters(@OE_SerialNo).Value = txtSerialNo.Text
    cmd.Parameters(@OE_PropertyNo).Value = txtPropertyNo.Text
    cmd.Parameters(@OE_MacAddress).Value = txtMacAddress.Text
    cmd.Parameters(@OE_Static_IP).Value = txtStaticIp.Text
    cmd.Parameters(@OE_Vendor).Value = txtVendor.Text
    cmd.Parameters(@OE_PurchaseDate).Value = txtPurchaseDate.Text
    cmd.Parameters(@OE_WarrantyInclusiveYear).Value = txtWarrantyInclusiveYear.Text
    cmd.Parameters(@OE_WarrantyStatus).Value = txtWarrantyStatus.Text
    cmd.Parameters(@OE_Status).Value = txtStatus.Text
    cmd.Parameters(@OE_Dept_Code).Value = cmbDeptCode.Text
    cmd.Parameters(@OE_Location_Code).Value = cmbLocationCode.Text
    cmd.Parameters(@OE_Remarks).Value = txtRemarks.Text
    cmd.ExecuteNonQuery()
    MsgBox(Successfully Updated Equipment Profile)
    sqlconn.Close()
Задан 30/04/2013 в 05:25
пользователем
На других языках...                            


2 ответов

голоса
0
Dim d as DateTime
DateTime.TryParse(txtPurchaseDate.Text, d)

Затем перейдите dк вашему сохраненному вызову Proc.

cmd.Parameters("@OE_PurchaseDate").Value = d
Ответил 30/04/2013 в 05:35
источник пользователем

голоса
1

Поскольку параметр имеет значение по умолчанию NULL:

 @OE_PurchaseDate        smalldatetime   =   NULL,

Вы не обязаны передавать значение, если не существует никакого значения для передачи в

Например:

if txtPurchaseDate.Text <> "" then
    cmd.Parameters("@OE_PurchaseDate").Value = txtPurchaseDate.Text
Ответил 30/04/2013 в 05:53
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more