Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Вниз

Внесение в базу данные2 


Anton Shestakov   (2002-01-19 02:10) [0]

Помогите. И если можно, то подробно.
У меня есть пустая таблица 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а, данные
вносятся ниже, а не напротив.



SoftOne   (2002-01-19 02:28) [1]

2 Anton Shestakov
Лучше в подобных случаях сразу предьявлять код.
По существу. Ты в обработчиках событий OnChange сразу добавляешь новую строку в таблицу и сразу ее записываешь туда же. Естественно следующий OnChange от другого компонента уже создает новую запись в таблице. Либо вызывай Append отдельно, либо проверяй свойство State DataSet"a. Но в обоих случаях вызывай Post, только тогда, когда нужно. Лучше всего не в обработчиках OnChange.



User_OKA   (2002-01-21 07:29) [2]

Да, OnChange - неудачное решение. Лучше завести отдельную пипку и по OnClick на оной делать с базой все, что душе угодно.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.055 c
14-42832          Polevi                2001-12-24 15:45  2002.02.14  
LOL


1-42717           Welder                2002-01-30 11:21  2002.02.14  
TdrawGrid


3-42705           FilSM                 2002-01-18 16:02  2002.02.14  
ADO глючит.


3-42656           Anton Shestakov       2002-01-19 02:10  2002.02.14  
Внесение в базу данные2


1-42778           Romul                 2002-01-29 10:24  2002.02.14  
Как изменить цвет заголовка окна?