Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
2 / 2 / 0
Регистрация: 04.06.2017
Сообщений: 35

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

13.06.2018, 11:06. Показов 1194. Ответов 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
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 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
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 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
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 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
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 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
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 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
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 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
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru