Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
NotBeginner
170 / 157 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
1

Как правильно сохранить данные в БД?

24.04.2014, 21:29. Просмотров 575. Ответов 17
Метки нет (Все метки)

помогите как правильно сохранить в бд
Таблица имеет внешний ключ - специальность
на форме есть комобобокс в котором формируется список специальностей
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
 
 setSelect.SQL.Text := 'SELECT id, name  FROM doctor' ;
  setSelect.Open();
  setSelect.First;
  while (not setSelect.Eof) do
  begin
   TStringList(aSL).AddObject(setSelect.FieldByName('name').AsString,
    TObject(setSelect.FieldByName('id').AsInteger));
   setSelect.Next();
  end;
   finally
  setSelect.Free();
Сохраняю-
Delphi
1
2
3
...
 setInsert.Parameters.ParamByName('IdSpec').Value := ComboBox2.ItemIndex;
setInsert.ExecSQL;
Но запись вставляется пустой
в общем как правильно вставить.. ведь id не совпадает с ItemIndex
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2014, 21:29
Ответы с готовыми решениями:

Как сохранить данные значение в Edit.Text
У меня несколько Edit.Text и в каждом стоит какоето число. как можно после...

Как сохранить в word-файл данные с 4-х форм?
Подскажите, как в одной процедуре, предназначенной для кнопки 'Сохранить',...

Как можно сохранить данные в файле из TMemo в кодировке ASCII?
Как можно сохранить данные в файле из TMemo в кодировке ASCII, для просмотра с...

Как при переходе на другую строку ListBox сохранить данные в Memo
Короче у меня есть ListBox. И в нем строк 10. И есть массивы a и a где a:array...

Как правильно получить данные от потока TThread?
Есть N потоков одного класса (потомок TThread), которые генерируют строку...

17
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.04.2014, 21:36 2
Каким боком ComboBox2 касается aSL ?
0
NotBeginner
170 / 157 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
24.04.2014, 21:43  [ТС] 3
а сорри не весь код предоставил.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure fillStringListForTable(aTableName : string; aConncetion : TADOConnection; aSL : TComboBox;
 aListField : string = 'name'; aIdField : string = 'id');
var
 setSelect : TADOQuery;
begin
 setSelect := TADOQuery.Create(nil);
 try
  setSelect.Connection := aConncetion;
  setSelect.SQL.Text := 'SELECT ' + aIdField + ',' + aListField + ' FROM ' + aTableName;
  setSelect.Open();
  setSelect.First;
  while (not setSelect.Eof) do
  begin
   TStringList(aSL).AddObject(setSelect.FieldByName(aListField ).AsString,
    TObject(setSelect.FieldByName(aIdField ).AsInteger));
   setSelect.Next();
  end;
   finally
  setSelect.Free();
 end;
end;
 
procedure TForm9.FormShow(Sender: TObject);
begin
  ComboBox2.Items.Clear;
  FillStringListForTable('specialty', form1.ADOConnection1, ComboBox2, 'name', 'id');
end;
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.04.2014, 21:55 4
Ну и как это отвечает на вопрос в [1] ?

Тем более что процедура fillStringListForTable даже скомпилирована быть не может ..
0
NotBeginner
170 / 157 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
24.04.2014, 22:00  [ТС] 5
Цитата Сообщение от NotBeginner Посмотреть сообщение
FillStringListForTable('specialty', form1.ADOConnection1, ComboBox2, 'name', 'id');
вот тут ComboBox2 относится к aSL

Добавлено через 3 минуты
в общем как правильно такое сохранение сделать?
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.04.2014, 22:04 6
А.. вру, упустил что items у TComboBox дифолтное свойство

ну тогда
ParamByName('IdSpec').Value := ComboBox2.ItemIndex; Integer(Pointer(TStringList(ComboBox2).Objects[ComboBox2.ItemIndex]))
0
NotBeginner
170 / 157 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
24.04.2014, 22:09  [ТС] 7
тоже не работает(
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.04.2014, 22:12 8
к
Цитата Сообщение от NotBeginner Посмотреть сообщение
ведь id не совпадает с ItemIndex
это никаким боком не относится
0
NotBeginner
170 / 157 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
24.04.2014, 22:21  [ТС] 9
а есть еще варианты как сохранить?
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.04.2014, 22:23 10
есть - написать правильный insert-запрос
0
NotBeginner
170 / 157 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
24.04.2014, 22:24  [ТС] 11
Delphi
1
integer(ComboBox2.Items.Objects[ComboBox2.ItemIndex]);
вот так работает..

Добавлено через 28 секунд
Цитата Сообщение от mss Посмотреть сообщение
есть - написать правильный insert-запрос
а правильный insert как будет выглядеть??
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.04.2014, 22:29 12
Это зависит от таблицы, куда требуется осуществить вставку.
0
NotBeginner
170 / 157 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
24.04.2014, 22:50  [ТС] 13
например, вот такая
id name specid
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.04.2014, 22:53 14
insert into table(name, specid) values('blabla', :id)
0
NotBeginner
170 / 157 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
24.04.2014, 22:56  [ТС] 15
ну и вот этот Id - как брать?
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.04.2014, 23:01 16
точнее будет так:
insert into table(name, specid) values('blabla', :SpecId)

значение :SpecId автоматически будет взято из значения параметра 'SpecId',
которое ты устанавливаешь в строке setInsert.Parameters.ParamByName('IdSpec').Value := blabla
0
NotBeginner
170 / 157 / 71
Регистрация: 22.02.2013
Сообщений: 1,770
Записей в блоге: 2
24.04.2014, 23:16  [ТС] 17
Цитата Сообщение от mss Посмотреть сообщение
blabla
= integer(ComboBox2.Items.Objects[ComboBox2.ItemIndex]);
0
mss
2632 / 2257 / 275
Регистрация: 24.12.2010
Сообщений: 13,725
24.04.2014, 23:17 18
угу
1
24.04.2014, 23:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 23:17

DateTimePicker, как правильно вставить данные в базу данных
Доброго времени суток. Нужно из DateTimePicker вывести только годы. Это решил и...

Как сохранить данные из Edit1 в Edit2, чтобы после перезагрузки программы сохраненное в Edit2 не удалялось?
Мир всем и привет ! Как сохранить данные из Edit1 в Edit2, чтобы после...

Сохранить данные stringgrid в массив
Дана такая задача: есть stringgrid размером 2 на 10. Необходимо найти...


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

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

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