System.FormatException: 'Не удалось преобразовать значение параметра из String в Boolean.' - PullRequest
0 голосов
/ 29 мая 2020

Этот код продолжает выводить:

Не удалось преобразовать значение параметра из String в Boolean.

    public void BindToData()
    {
        try
        {
            DataSet ds = new DataSet();
            string connString = @"Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=DesignSaoOsig1;Integrated Security=True";
            string strproc = "TestReport";
            using (SqlDataAdapter sda = new SqlDataAdapter(strproc, connString))
            {
                SqlCommand cmd = new SqlCommand();
                sda.SelectCommand.CommandType = CommandType.StoredProcedure;

                sda.SelectCommand.Parameters.Add("@Status", SqlDbType.Bit).Value = StatusId.SelectedValue;
                sda.SelectCommand.Parameters.Add("@OrgJed", SqlDbType.Int).Value = orgUnitId.SelectedValue;
                sda.Fill(ds);

                XtraReport report = new XtraReport();
                report.DataSource = ds;
            }
        }
        catch (Exception)
        {
            throw;
        }    
    }

Хранимая процедура

ALTER PROCEDURE [dbo].[TestReport]
(           
    @Status bit,
    @OrgJed int
) 
AS  
BEGIN    
    SELECT TOP 1 OrgUnitID
    FROM    tblZaposleni_AD 
    WHERE  Status =    @Status AND 
        OrgUnitID = @OrgJed  
END

Я искал повсюду, и были предложения сделать преобразование, но я просто не могу найти то, что именно я должен был преобразовать в этот код. Проблема здесь, я пробую все, но не получается.

sda.SelectCommand.Parameters.Add("@Status", SqlDbType.Bit).Value = StatusId.SelectedValue;
sda.SelectCommand.Parameters.Add("@OrgJed", SqlDbType.Int).Value = orgUnitId.SelectedValue;

Примечание. StatusId - это DropDownMenu, которое имеет 2 варианта: "0" или "1". OrgJed - это DropDownMenu со значениями от "1" до "10"

.

1 Ответ

0 голосов
/ 29 мая 2020

Вам необходимо преобразовать строки в DropDownList s в bool и int соответственно для использования в ваших параметрах, например,

sda.SelectCommand.Parameters.Add("@Status", SqlDbType.Bit).Value = StatusId.SelectedValue == "1" ? true : false;
sda.SelectCommand.Parameters.Add("@OrgJed", SqlDbType.Int).Value = Int32.Parse(orgUnitId.SelectedValue);

Примечание: для надежного кода вы действительно должны использовать Int32.TryParse(), но Я оставлю это вам в качестве упражнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...