Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
1

Как передать значение id в Textbox?

06.02.2019, 09:36. Просмотров 1358. Ответов 20

Уважаемые друзья . Очень нужна Ваша помощь .
Суть вопроса такова.

Есть две таблицы Access
одна POL с полями KOD, NAME. где соответственно 1 это мужчина 2 это женщина
другая таблица называется PROTOKOL_UZD куда первая таблица POL передаёт свой id через поле POL_KOD.

А теперь сам вопрос . Как мне сделать так чтобы в текстбокс txt_Gender , который находится на форме Form1 подтягивалось значение мужчина или женщина а не 1 или 2 ?
(Form1 открывается посредством двойного клика на датагрид Grid_1 из формы Form4 )

Очень прошу помогите решить эту задачу.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2019, 09:36
Ответы с готовыми решениями:

Передать значение textBox как параметр для SQL запроса
Как textBox сделать параметром запроса к БД MS SQL?

Как мне передать значения в Parameters через TextBox?
Здравствуйте у меня такой вопрос, у меня есть запрос к БД: public void AddRecord() { ...

Как передать значение в сериализованный Dictionary
В общем есть класс для сериализации (нашел в просторах инета) И есть элемент Dictionary<string,...

Как передать значение из combobox в связанную таблицу?
Есть форма с combobox + две таблицы A_Table (ID, Имя, ID.B_Table) и B_Table (ID, Фамилия) в базе...

Как передать значение из одной статичной функции другой
Есть две статичные функции, мне нужно передать значение переменной из одной функции другой функции...

20
AndreyVorobey
302 / 200 / 106
Регистрация: 14.04.2015
Сообщений: 867
06.02.2019, 11:14 2
задайте себе привычкой и код выкладывать, чтобы было понятно, что происходит.
решить Вашу проблему можно разными способами: добавить поле в выборку, и передавать значение в текстбокс, кейсами изменить значение в запросе, или конструкцией if-else перед выводом в текстбокс
0
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
06.02.2019, 11:27  [ТС] 3
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
ты же запрос формируешь перед заполнением грида ?
а нельзя сделать типа такого?
А можно как-то по подробнее ? Честно - ничего не понял.
Да запрос формируется перед заполнением

C#
1
2
3
4
5
string dbf = "SELECT * FROM PROTOKOL_UZD";
                OleDbDataAdapter adapter = new OleDbDataAdapter(dbf, con);
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                con.Close();
Так я заполняю грид
0
AndreyVorobey
302 / 200 / 106
Регистрация: 14.04.2015
Сообщений: 867
06.02.2019, 11:38 4
как в текстбокс передаешь значение?
0
06.02.2019, 11:38
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
06.02.2019, 12:08  [ТС] 5
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
как в текстбокс передаешь значение?
Вот так.
C#
1
2
3
4
5
6
7
private void Grid_1_Change_DoubleClick(object sender, EventArgs e)
        {
            
            Form1 f1 = new Form1();
           
 
            f1.txt_Gender.Text = this.Grid_1.CurrentRow.Cells[8].Value.ToString();
0
Andreyip
213 / 148 / 56
Регистрация: 17.08.2014
Сообщений: 590
06.02.2019, 12:22 6
осспаде опять закатывание солнца руками с подпиранием овна костылями и дырявыми досками.
C#
1
f1.txt_Gender.Text = this.Grid_1.CurrentRow.Cells[8].Value.ToString()
у грида есть свойство datasource который принимает на вход BindingSource
у BindingSource так же есть свойство DataSource которое принимает на вход тот же List
так же у BindingSource есть свойство Current который выдает текущий объект.
делайте свой класс, указывайте для типа BindingSource, сам BindingSource привязываете к гриду. далее передаете лист или массив ваших классов в свойство DataSource у вас все отобразиться. далее в нужном месте дергаете свойство Current и получаете полностью ваш объект с Id именами и всем чем нужно. сохраняете его и отображаете на форме любым способом. кстати textbox тоже можно прибиндить к BindingSource и тогда вообще не нужно будет таких костылей.
0
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
06.02.2019, 12:33  [ТС] 7
Цитата Сообщение от Andreyip Посмотреть сообщение
у грида есть свойство datasource который принимает на вход BindingSource
у BindingSource так же есть свойство DataSource которое принимает на вход тотже ...
А можна пример кода.
Честно я только начинающий и в создании своего класса пока не силён.
0
Andreyip
213 / 148 / 56
Регистрация: 17.08.2014
Сообщений: 590
06.02.2019, 13:03 8
shadow_2,
классы примерно так. заполнять можно либо через fill либо через Reader но в любом случае запрос нужно редактировать.
C#
1
2
3
4
5
6
7
8
9
10
11
12
Public class POL
{
public int KOD {get;set;} 
public string NAME {get;set;}
 
}
 
public class PROTOKOL_UZD
{
public  POL Pol {get;set;}
 
}
1
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
06.02.2019, 14:16  [ТС] 9
Цитата Сообщение от Andreyip Посмотреть сообщение
классы примерно так. заполнять можно либо через fill
А как нибудь по другому , может с помощью запроса , чтоб без создания классов никак нельзя ?
0
Andreyip
213 / 148 / 56
Регистрация: 17.08.2014
Сообщений: 590
06.02.2019, 14:42 10
Цитата Сообщение от shadow_2 Посмотреть сообщение
чтоб без создания классов никак нельзя
Можете говнокодить как хотите, хоть в строку все выводите. И вытаскивайте ваш пол как вам угодно.
0
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
06.02.2019, 17:54  [ТС] 11
А как вообще эта тема называется ? Даже не-знаю как правильно в поиск задать ?
0
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
07.02.2019, 14:43  [ТС] 12
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
добавить поле в выборку
Скажите пожалуйста а как это сделать если можна на примере

Добавлено через 5 часов 21 минуту
Неужели в проектах такие задачи очень редко встречаются ? Хоть ссылки киньте что почитать.
Очень нужно проект стоит.
Вчера весь интернет обрыл . Очень мало инфы на эту тему.
0
AndreyVorobey
302 / 200 / 106
Регистрация: 14.04.2015
Сообщений: 867
08.02.2019, 09:25 13
Лучший ответ Сообщение было отмечено shadow_2 как решение

Решение

вот на примере этого можно сделать:
https://metanit.com/sharp/adonet/2.6.php
предварительно задать размерность гриду - добавть нужное кличество столбцов
только перед циклом
C#
1
  while (reader.Read())
надо написать что-то типа этого:
// здесь инициализируем список, в который будут попадать наши строки
C#
1
List<string[]> data = new List<string[]>();
string POL = ""; // объявляем переменную, в которую будет записываться наш пол
а внутри цикла:
C#
1
2
3
data.Add(new string[количество_столбцов])
data[data.Count -1][индекс_колонки] = reader[индекс_колонки].Tostring() // так добавляем колонки по их индексам
POL = reader[индекс_колонки_в_которой_будет_название_пола (мужской или женский)]
после цикла выводим все в грид, а в текстбокс название пола, типа так
C#
1
2
3
foreach(string[] row in data)
dgv1.Rows.Add(row);
tb1.Text = POL;
1
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
08.02.2019, 15:24  [ТС] 14
Спасибо AndreyVorobey . за пример буду разбирать.

Но у меня ещё один вопрос. Я тут пока ждал ответ подумал о другом варианте .

Допустим я вывожу все поля так

C#
1
2
3
4
5
if (reader.Read())
                {
                    textBox_OKPO.Text = reader[3].ToString();
                    textBox_DOP_KOD.Text = reader[4].ToString();
                    txt_Gender.Text = reader[8].ToString();

А можна сделать так чтобы


reader[8].ToString \\ индекс искомой колонки

передать в оператор if и создать условие если 1 то выводить мужчина если 2 то женщина

Типа вот так
C#
1
2
3
4
if (reader[8].ToString()  = 1)
                    {
                        label_A3.Text = "чоловік";
                    }
.Однако выдает ошибку. Что я делаю не так?
0
AndreyVorobey
302 / 200 / 106
Регистрация: 14.04.2015
Сообщений: 867
11.02.2019, 12:13 15
какая ошибка - не понятно.
зачем txt_Gender.Text, если значение reader[8].ToString() можно передавать сразу в переменную ?
и если они Int а не string, не обязательно их конвертить.


попробуй так:
C#
1
2
3
4
5
6
7
8
9
int Gender;
if (reader.Read())
{
Gender = reader[8];
}
if (Gender  ==  1)
                    {
                        label_A3.Text = "чоловік";
                    }
1
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
12.02.2019, 12:38  [ТС] 16
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
попробуй так:
Спасибо огромное . Всё получилось.
0
AndreyVorobey
302 / 200 / 106
Регистрация: 14.04.2015
Сообщений: 867
12.02.2019, 15:00 17
shadow_2, эт хорошо) но код не красивый, конечно, получился
0
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
12.02.2019, 15:32  [ТС] 18
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
но код не красивый, конечно, получился
А как написать так чтобы красиво было ?
0
AndreyVorobey
302 / 200 / 106
Регистрация: 14.04.2015
Сообщений: 867
12.02.2019, 15:54 19
shadow_2, Нужно долго наращивать и совершенствовать свои знания и навыки, тогда и красиво будет)
0
shadow_2
1 / 1 / 0
Регистрация: 15.10.2018
Сообщений: 97
12.02.2019, 16:07  [ТС] 20
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
Нужно долго наращивать и совершенствовать свои знания и навыки, тогда и красиво будет)
В таком случае может быть посоветуете что почитать ?
0
12.02.2019, 16:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2019, 16:07

Как передать из combobox одно значение (id), отображая другое (name)?
Задаю отображаемое значение в DisplayMember и фактическое в ValueMember. Обращаюсь, для получения...

Как передать строковое значение типа enum в javascript?
Здравствуйте, public enum ApplicationType { Synkra = 0, ...

Как получить значение определенной строки из бд в textbox?
Как получить значение определенной строки из бд в textbox? Желательно при помощи linq


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru