Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка convert from 'ref string' to 'ref decimal', Не работает FillBy 
:(
    Опции темы
vinograd2008
Дата 18.4.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 7.12.2008

Репутация: нет
Всего: нет



Здравстуйте подскажите пожалуйста почему возникает ошибка cannot convert from 'ref string' to 'ref decimal'?
Как её исправить? Помогите пожалуйста исправить эту ошибку.

Код на C#:

Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Turfirma
{
    public partial class Form7 : Form
    {
        public Form7()
        {
            InitializeComponent();
        }

        private void Form7_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'turfirmaDataSet.AllTuriPoCene' table. You can move, or remove it, as needed.
            this.allTuriPoCeneTableAdapter.Fill(this.turfirmaDataSet.AllTuriPoCene);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                string Cena = Convert.ToString(this.textBox1.Text);

                Form1.myConnection = new SqlConnection();
                Form1.myConnection.ConnectionString = "Data Source=(local);Initial Catalog=Turfirma;Integrated Security=true;User ID=" + Form1.login + ";Password=" + Form1.pass + ";";

                Form1.myConnection.Open();
                if (Cena == "")
                {
                    MessageBox.Show("Заполните текстовое поле Cena!!!");
                }
                else
                {
                    SqlCommand myCommand = Form1.myConnection.CreateCommand();
                    myCommand.CommandType = CommandType.StoredProcedure;
                    myCommand.CommandText = "[TuriPoCene]";
                    myCommand.Parameters.Add("@Cena", SqlDbType.Money);
                    myCommand.Parameters["@Cena"].Value = Cena;
                    myCommand.ExecuteNonQuery();
                  this.allTuriPoCeneTableAdapter.FillBy(this.turfirmaDataSet.AllTuriPoCene, ref Cena);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally
            {
                Form1.myConnection.Close();
            }
        }
    }
}


SQL код хранимой процедуры:

Код

CREATE PROCEDURE dbo.TuriPoCene
    (
    @Cena money OUTPUT
    )
AS

    SELECT     dbo.Putevki.ID_putevki, dbo.Putevki.ID_tura, dbo.Putevki.Tip_nomera, dbo.Putevki.Kvota, dbo.Putevki.Cena, dbo.Putevki.Den_zaezda, 
                      dbo.Putevki.Den_otezda, dbo.Turi.Tur, dbo.Turi.ID_napravleniya, dbo.Turi.Prodolgitelnost
FROM         dbo.Putevki LEFT OUTER JOIN
                      dbo.Turi ON dbo.Putevki.ID_tura = dbo.Turi.ID_tura
WHERE     dbo.Putevki.Cena = CONVERT(money, @Cena)
    RETURN

PM MAIL   Вверх
KuMa1104
Дата 18.4.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3



А где именно падает?
Оч плохо описана проблема((((
Это что?
 
Код

this.allTuriPoCeneTableAdapter.FillBy(this.turfirmaDataSet.AllTuriPoCene, ref Cena);


ИМХО!
Думаю что тип данных money  должен быть совместим с типом данных выходного параметра.
Т.е.  заменить string  на decimal.

Добавлено через 1 минуту и 49 секунд
Код

 string Cena = Convert.ToString(this.textBox1.Text);

По экспериментируйте!
замените на 
Код

 decimal Cena = Convert.ToDecimal(this.textBox1.Text);



--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
KelTron
Дата 18.4.2010, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 5
Всего: 38



У параметра тип decimal, а ты передаёшь string и удивляешься почему ошибка?

Вот эту очень хитрую строку
Код

string Cena = Convert.ToString(this.textBox1.Text);

и дальнейшую проверку
Код

if (Cena == "")
                {
                    MessageBox.Show("Заполните текстовое поле Cena!!!");
                }


нужно заменить на что то типа
Код

decimal Cena;
if (!decimal.TryParse(this.textBox1.Text, out Cena))
{
    MessageBox.Show("Введена некорректная цена");
    return;
}

...
далее основная логика



--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
KuMa1104
Дата 18.4.2010, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3



Ну вот. Уже 2 голоса за decimal))


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
KelTron
Дата 18.4.2010, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 745
Регистрация: 8.10.2006
Где: Красноярск

Репутация: 5
Всего: 38



Цитата(KuMa1104 @  18.4.2010,  18:12 Найти цитируемый пост)
Уже 2 голоса

Вообще то 3, первым был компилятор..)
Цитата(vinograd2008 @  18.4.2010,  17:07 Найти цитируемый пост)
cannot convert from 'ref string' to 'ref decimal




--------------------
Тысячами незримых нитей обвивает тебя Закон. Разрубишь одну - преступник. Десять - смертник. Все - Бог.
Эвенгар Салладорский, основатель Школы Тьмы.
PM MAIL   Вверх
KuMa1104
Дата 18.4.2010, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 541
Регистрация: 16.4.2009
Где: Ростов-на-Дону

Репутация: 1
Всего: 3



Точно smile  smile  smile   smile 


--------------------
Галактика – суровая штука. Чтобы в ней выжить, надо знать, где твое полотенце.

Время - штука относительная... а время обеда - ещё более относительная
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0431 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.