2 / 2 / 0
Регистрация: 04.06.2017
Сообщений: 35

Занести код цеха в базу

13.06.2018, 11:06. Показов 1224. Ответов 14

Студворк — интернет-сервис помощи студентам
Добрый день! Помогите пожалуйста. Такая пробема. Есть компонент TValueListEditor. В нём отображается название цеха по его коду в базе. Мне нужно вычислить и сохранить код цеха в базе. В едиторе выводится только название. Вот часть кода как выводится в едиторе название:

Delphi
1
2
3
4
5
6
7
8
9
10
11
vid_pr := TStringList.Create;
  DM.QList.SQL.Clear;
  DM.QList.SQL.Add('select KOD, NAME from SPRAVOCHNIK where KODSPR = 18');
  DM.QList.Open;
   while not(DM.QList.Eof) do
    begin
     vid_pr.Add(trim(DM.QList.FieldByName('NAME').AsString));
 
 
VLE1.ItemProps['Вид пропуска'].PickList := vid_pr;
VLE1.ItemProps['Вид пропуска'].EditStyle := esPickList;
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.06.2018, 11:06
Ответы с готовыми решениями:

Спроектируйте базу данных «Организация ремонтной службы цеха механической обработки»
Привет Всем. Помогите создать базу данных «Организация ремонтной службы цеха механической обработки», как лучше распределить данные, какие...

Занести переменную в базу
Здравствуйте, есть код и он работает, но есть и ошибка. bindingNavigatorAddNewItem.PerformClick(); ...

Занести данные в базу
Мне уже неудобно просить помощь, но больше мне обратится не к кому. Нужно занести обновленные данные в таблицу. Делал вроде все по...

14
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
13.06.2018, 13:31
у TStrings есть функция хранения ссылок на к-нить объект для каждой строки
но по размеру ссылка и integer равны, поэтому можно под видом ссылки хранить там код
Delphi
1
 vid_pr.AddObject(trim(DM.QList.FieldByName('NAME').AsString), TObject(DM.QList.FieldByName('KOD').AsInteger));
...
чтобы получить код по номеру строки
Delphi
1
n := integer( vid_pr.Items.Objects[xxx] );
0
2 / 2 / 0
Регистрация: 04.06.2017
Сообщений: 35
13.06.2018, 14:15  [ТС]
А где вписать этот код?

Добавлено через 32 минуты
krapotkin, Где нужно прописать этот код или вместо чего???
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
13.06.2018, 14:20
думаю, в строке 17 самое то
0
2 / 2 / 0
Регистрация: 04.06.2017
Сообщений: 35
13.06.2018, 14:33  [ТС]
krapotkin, Именно в 17? Может в 7?
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
13.06.2018, 14:43
нет нет, я уверен, я вижу ваш код в своем хрустальном шаре и метвая сова нарисовала заячьей лапкой на кофейной гуще именно 17
0
2 / 2 / 0
Регистрация: 04.06.2017
Сообщений: 35
13.06.2018, 14:48  [ТС]
krapotkin, Всё это конечно весело ноя серьёзно. Ладно спасибо и на этом, и да vid_pr не имеет свойства items...
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
13.06.2018, 15:02
т.е. никаких других мыслей, почему я упоминаю хрустальный шар и ваш код в одном предложении, кроме как чисто поржать, у вас не появилось?
мда...
0
2 / 2 / 0
Регистрация: 04.06.2017
Сообщений: 35
13.06.2018, 15:13  [ТС]
krapotkin, Извините, что я не такой интелектуальный как вы. Если вам трудно просто помочь, то скажите сразу. Почему все программисты такие "правильные" неужели так трудно просто помочь человеку?

Если вам не понятно вот еще раз:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 vid_pr := TStringList.Create;
  DM.QList.SQL.Clear;
  DM.QList.SQL.Add('select KOD, NAME from SPRAVOCHNIK where KODSPR = 18');
  DM.QList.Open;
   while not(DM.QList.Eof) do
    begin
     vid_pr.Add(trim(DM.QList.FieldByName('NAME').AsString)); //Загрузка имя поля из базы
     vid_pr_k := DM.QList.FieldByName('KOD').AsString; //Пытался вычислить тот самый код цеха...
     DM.QList.Next
    end;
  DM.QList.Close;
 
 
VLE1.ItemProps['Вид пропуска'].PickList := vid_pr; //Вывод через переменную названия в поле "Вид пропуска"
VLE1.ItemProps['Вид пропуска'].EditStyle := esPickList;[DELPHI]

DM.QTrans_Ins.ParamByName('_kod_prop').V alue := StrToInt(vid_pr_k); //Инсерт в базу (пытался получить тот самый код цеха, но в базу заносится самое последнее значение кода цеха, а не код привязанный к названию цеха[/DELPHI]
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
13.06.2018, 16:17
Цитата Сообщение от SaneK_UA Посмотреть сообщение
Почему все программисты такие "правильные"
в автосервис машину свою сдайте и скажите "не едет"
и ждите. недолго.
вам доступным матерным языком объяснят, что пока не скажете, что конкретно не работает, что произошло, и где искать неисправность, будете чинить самостоятельно...

это кусок кода, я его видел. и что?
вы заполняете vid_pr:TStringList
потом в "Вид пропуска" подсовываете этот vid_pr в качестве pick_list
и хотите, чтобы кто-то за вас где-то сохранил еще и код
вы же сами выбрали этот TValueListEditor ?
Там про код вроде ничего нету.
Почему вы переваливаете на других ответственность за свой выбор??

от себя я предложил код добавлять в vid_pr в свойство objects
когда вы чего-то соберетесь писать в базу, вам нужно этот код оттуда достать, и я показал, как
- найти в vid_pr индекс выбранной строки, забрать из Objects для этой строки код
и этот код использовать при сохранении в БД

Откуда я знаю, в какой строке у вас сохранение в БД?????
Придумывать за вас я ничего не собираюсь.

вот этот пассаж совсем убил
Цитата Сообщение от SaneK_UA Посмотреть сообщение
пытался получить тот самый код цеха
Цитата Сообщение от SaneK_UA Посмотреть сообщение
while not(DM.QList.Eof) do
begin
vid_pr_k := DM.QList.FieldByName('KOD').AsString; //Пытался вычислить тот самый код цеха...
DM.QList.Next
вы каждый раз вы записываете в эту переменную новое значение
какое последнее записали, то там и лежит

еще раз на пальцах
Delphi
1
vid_pr.Add(trim(DM.QList.FieldByName('NAME').AsString));
добавляет строку в vid_pr
Delphi
1
vid_pr.AddObject(trim(DM.QList.FieldByName('NAME').AsString), TObject(DM.QList.FieldByName('KOD').AsInteger));
добавляет строку И ССЫЛКУ НА ОБЪЕКТ (вместо которой там просто значение поля код)

для записи кода в базу его нужно ПОЛУЧИТЬ. Получить его можно по номеру строки, к которой он привязан
номер строки получить поиском по vid_pr той строки которую вы выбрали
и тогда
Delphi
1
kod := integer( vid_pr.Objects[xxx] );
да. свойства items нет у стринглиста, но погуглить про stringlist и objects и AddObject не очень утомительно?
0
2 / 2 / 0
Регистрация: 04.06.2017
Сообщений: 35
13.06.2018, 16:36  [ТС]
krapotkin, Спасибо за ответ. Если бы это был мой код я бы не спрашивал. А так эту программу мне передали от другого человека во время его отсутствия. С таким компонентом ещё не работал. Вот и появилась масса вопросов, и собственно главный вопрос на тему "Как вытащить код цеха из ValueListEditor?"
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
13.06.2018, 16:52
ответ на этот вопрос самый простой - так как его туда никто не клал, то никак
0
2 / 2 / 0
Регистрация: 04.06.2017
Сообщений: 35
14.06.2018, 11:17  [ТС]
krapotkin, Пытаюсь найти номер строки, выдаёт ошибку, "List index out of bounds (243)" 243 это код но как правильно вообще записать это всё? И что ставить вместо ххх?

Мои жалкие попытки...

Delphi
1
2
3
4
5
6
7
8
9
10
11
 while not(DM.QList.Eof) do
    begin
    //vid_pr.Add(trim(DM.QList.FieldByName('NAME').AsString));
     vid_pr.AddObject(trim(DM.QList.FieldByName('NAME').AsString),
     TObject(DM.QList.FieldByName('KOD').AsInteger));
     vid_pr.IndexOf(TransForm.VLE1.Values['Вид пропуска']);
     vid_pr_k := integer(vid_pr.Objects[vid_pr_k]);
     //vid_pr_k := DM.QList.FieldByName('KOD').AsString;
     DM.QList.Next
    end;
  DM.QList.Close;
0
 Аватар для krapotkin
6851 / 4677 / 1465
Регистрация: 14.04.2014
Сообщений: 20,674
Записей в блоге: 21
14.06.2018, 13:33
Лучший ответ Сообщение было отмечено SaneK_UA как решение

Решение

концепция.
1. вы заполняете PickList для VLE1 из vid_pr
2. соответственно в VLE1 кода нет
3. когда что-то выбрали в VLE1, найти такое значение в источнике - в vid_pr
4. если нашли эту строку в vid_pr то взять по номеру строки код

вот это - ЗАПОЛНЕНИЕ списка
Delphi
1
2
3
4
5
6
7
8
DM.QList.Open;
while not(DM.QList.Eof) do
begin
     vid_pr.AddObject(trim(DM.QList.FieldByName('NAME').AsString),
                              TObject(DM.QList.FieldByName('KOD').AsInteger));
     DM.QList.Next
end;
DM.QList.Close;
все. тут - всё

теперь при записи. я не знаю, где вы записываете, но этот код нужен вам при записи
Delphi
1
2
ind:=vid_pr.IndexOf(VLE1.Values['Вид пропуска']);
vid_pr_k := integer(vid_pr.Objects[ind]);
код получен, пользуйтесь
1
2 / 2 / 0
Регистрация: 04.06.2017
Сообщений: 35
14.06.2018, 13:41  [ТС]
krapotkin, Спасибо вам огромное, очень выручили!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.06.2018, 13:41
Помогаю со студенческими работами здесь

Занести значение в базу
Есть код $name = $_FILES; $tmp_name = $_FILES; if (isset($name)) {if (!empty($name)) {$location = '../Doc/'; ...

Занести значение в базу
Доброго времени суток. У Меня возник вопрос как занести постоянное значение в таблицу при регистрации. Как занести из формы, когда...

Занести в базу дату
Привет, мир! Помогите решить проблему. Суть проблемы в том, что не получается занести в базу дату вот такого типа: 5 декабря 2013, 20 часов...

Разработать программу, которая по заданному названию цеха выдает список рабочих цеха
описати тип запису, який містить інформацію : про місячну заробітню плату робітників заводу . кожен запис має поля - прізвище робітника,...

Не получается занести значения в базу
Привет всем. У меня есть скрипт вот он $result = array(); if (isset($_POST) && is_array($_POST)) { $result = implode(',', $_POST); } ...


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

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

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru