![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Внесение в базу данные2 [D4, D5, Paradox, ]
Anton Shestakov © (2002-01-19 02:10:00)Помогите. И если можно, то подробно.
У меня есть пустая таблица Paradox, созданная в
Database Desktop с шапкой Name и Date: а также ComboBox1,
где находиться список фамилий и DateTimePicker1 с текущей
датой. Мне надо, чтобы когда я выбираю из ComboBox1а и
DateTimePicker1а фамилию и текущую дату, мне надо чтобы
это данные заносились в таблицу. Может надо использовать
вместо ComboBox1а - DbComboBox1, или ещё что-нибудь.
Когда я создавал таблицу в Database Desktopе, то для Name
я выбрал - тип Alpha, а для Date - тип Date.
Может надо было сделать по другому.
Заранее благодарен.
Мне посоветовали:
В принципе и такая комбинация нормальная. (Если, конечно, имеется еще
и визуальный компонет для отображения таблицы. Плюс ,желательно,еще
и DBNavigator). Для работы достаточно:
1. Ввести таблицу в состояние редактирования текущей записи или добавление
новой нажатием нужной кнопки в DBNavigator или прямым вызовом Table.Edit
or Table.Insert (Append).
2. В обработчиках событий OnChange ComboBox и DTPicker присвоить нужному
полю введенное значение.
3. После завершения предыдущего, записать данные в таблицу либо прямым
вызовом Table.Post, либо нажав соответствующую кнопку на DBNavigator.
Я прописал:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
table1.append;
table1["Name"]:=combobox1.text;
table1.Post;
end;
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
table1.append;
table1["Date"]:=DateTimePicker1.Date;
table1.Post;
end;
В итоге данные с ComboBoxа вносятся нормально, а вот дата записывается сразу
в две ячейки, и ещё, после внесённых данных из ComboBoxа дата вносится не
напротив фамилии, а под ней, и тоже самое и с данными из ComboBoxа, данные
вносятся ниже, а не напротив.
User_OKA (2002-01-21 07:29:00) [1]Да, OnChange - неудачное решение. Лучше завести отдельную пипку и по OnClick на оной делать с базой все, что душе угодно.
SoftOne (2002-01-19 02:28:00) [2]2 Anton Shestakov
Лучше в подобных случаях сразу предьявлять код.
По существу. Ты в обработчиках событий OnChange сразу добавляешьновую строку в таблицу и сразу ее записываешьтуда же. Естественно следующий OnChange от другого компонента уже создает новую запись в таблице. Либо вызывай Append отдельно, либо проверяй свойство State DataSet"a. Но в обоих случаях вызывай Post, только тогда, когда нужно. Лучше всего не в обработчиках OnChange.