Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2016, 16:03   #1
Betelgeuse7
 
Регистрация: 15.02.2014
Сообщений: 9
По умолчанию Не записывает полное название и выбирает не ту строку

Такая проблема. При записи Названия, Номера и Описания документа и сохранении инфы в БД, сохраняется только самый первый символ. И при выборе Корреспондента сохраняется Корреспондент, который находится на строчку выше от выбранного. С чем может быть связано?

Код:
private void btnSohr_Click(object sender, EventArgs e)
        {
            SqlCommand saveCommand = new SqlCommand();
            saveCommand.CommandType = CommandType.StoredProcedure;
 
            SqlParameter prm1 = null;
            SqlParameter prm2 = null;
            SqlParameter prm3 = null;
            SqlParameter prm4 = null;
            SqlParameter prm5 = null;
            SqlParameter prm6 = null;
            SqlParameter prm7 = null;
            SqlParameter prm8 = null;
            SqlParameter prm9 = null;
 
            prm1 = new SqlParameter("ID", SqlDbType.BigInt);
            prm1.Direction = ParameterDirection.InputOutput;
            prm1.Value = Int32.Parse(strID);
            saveCommand.Parameters.Add(prm1);
 
            prm2 = new SqlParameter("DocName", SqlDbType.VarChar);
            prm2.Direction = ParameterDirection.Input;
            prm2.Value = tbNazvanieSD.Text;
            prm2.Size = 200;
            saveCommand.Parameters.Add(prm2);
            
            prm3 = new SqlParameter("DocDate", SqlDbType.DateTime);
            prm3.Direction = ParameterDirection.Input;
            CultureInfo clt = CultureInfo.CreateSpecificCulture("en-US");
            if (tbDataRegistr.Text.Substring(0, 2) == "  ")
            {
                prm3.SqlValue = DBNull.Value;
            }
            else
            {
                System.DateTime dt1 = System.DateTime.Parse(tbDataRegistr.Text.Substring(3, 2) + "." + tbDataRegistr.Text.Substring(0, 2) 
                    + "." + tbDataRegistr.Text.Substring(6), clt);
                prm3.SqlValue = dt1;
            }
            saveCommand.Parameters.Add(prm3);
 
            prm4 = new SqlParameter("DocNum", SqlDbType.VarChar);
            prm4.Direction = ParameterDirection.Input;
            prm4.Value = tbNomer.Text;
            prm4.Size = 10;
            saveCommand.Parameters.Add(prm4);
 
            prm5 = new SqlParameter("DocDesc", SqlDbType.VarChar);
            prm5.Direction = ParameterDirection.Input;
            prm5.Value = tbOpisanieSD.Text;
            prm5.Size = 1000;
            saveCommand.Parameters.Add(prm5);
 
            prm6 = new SqlParameter("DvId", SqlDbType.Int);
            prm6.Direction = ParameterDirection.Input;
            if (cbVid.SelectedIndex == -1)
            {
                MessageBox.Show("Необходимо выбрать вид документа!");
                return;
            }
            prm6.Value = int.Parse(cbVid.SelectedValue.ToString());
            saveCommand.Parameters.Add(prm6);
 
            prm7 = new SqlParameter("DkId", SqlDbType.Int);
            prm7.Direction = ParameterDirection.Input;
            if (cbKorr.SelectedIndex == -1)
            {
                MessageBox.Show("Необходимо выбрать корреспондента!");
                return;
            }
            prm7.Value = int.Parse(cbKorr.SelectedIndex.ToString());
            saveCommand.Parameters.Add(prm7);
 
  
            saveCommand.CommandText = "UpdateDocum";
            using (SqlConnection cnt1 = new SqlConnection(DocsWorkflow.Settings_DocsWF.Default.canString))
            {
                cnt1.Open();
                saveCommand.Connection = cnt1;
                saveCommand.ExecuteNonQuery();
                strID = saveCommand.Parameters["ID"].Value.ToString();
            }
        
        }
______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.
Изображения
Тип файла: jpg 2016-04-10_15-42-49.jpg (21.2 Кб, 147 просмотров)
Тип файла: jpg 2016-04-10_15-43-31.jpg (20.1 Кб, 149 просмотров)

Последний раз редактировалось Alex11223; 10.04.2016 в 16:10.
Betelgeuse7 вне форума Ответить с цитированием
Старый 10.04.2016, 16:20   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В конструкторе SqlParameter после VarChar наверно надо указать его размер 3 параметром.

И видимо у вас в БД ID корреспондентов начинаются с 1, а в комбобоксе индексы идут с 0.
Вообще лучше как-нибудь отдельно хранить ID, а не просто использовать номер элемента в комбобоксе. https://www.google.com/search?q=winf...obox+key+value
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.04.2016, 17:25   #3
Betelgeuse7
 
Регистрация: 15.02.2014
Сообщений: 9
По умолчанию

А можно пример с VarChar, пожалуйста? Имеется в виду в скобках указать? Если да, то такое не прокатывает - просто выдает за ошибку.
Betelgeuse7 вне форума Ответить с цитированием
Старый 10.04.2016, 17:30   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
new SqlParameter("DocName", SqlDbType.VarChar, 50)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.04.2016, 17:43   #5
Betelgeuse7
 
Регистрация: 15.02.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Код:
new SqlParameter("DocName", SqlDbType.VarChar, 50)
Сделала так, не получилось. Все также сохраняется один символ(
Betelgeuse7 вне форума Ответить с цитированием
Старый 10.04.2016, 17:49   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Странно, а в UpdateDocum что?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 10.04.2016, 17:56   #7
Betelgeuse7
 
Регистрация: 15.02.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Странно, а в UpdateDocum что?
Совсем забыла про него
Сейчас добавила в скобках к varchar размер и все получилось))
Betelgeuse7 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать строку в название константу или её индификатор androidz Общие вопросы Delphi 10 27.02.2014 21:33
Расшифровка(полное название) тегов ts-alan HTML и CSS 1 25.02.2013 16:47
Абитура выбирает направление Alendorff Свободное общение 9 29.06.2011 11:49
Не правильно выбирает данные sasha_prof Microsoft Office Access 13 19.11.2010 17:25
select не выбирает записи Lokos БД в Delphi 17 06.10.2010 23:19