Форум: "Базы";
Поиск по всему сайту: 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.73 MB
Время: 0.036 c
14-42872          Atrem                 2001-12-24 18:02  2002.02.14  
Срочно нужен Турбо Паскаль 7.0


6-42821           SemFLY                2001-11-15 02:17  2002.02.14  
Можно ли в приложение сервер ?


14-42857          artur                 2001-12-26 14:32  2002.02.14  
delphi для windows 2000 server


7-42880           Jazzy$                2001-11-10 23:16  2002.02.14  
Фокус ввода


14-42848          Незарегистированный   2001-12-24 17:44  2002.02.14  
Обязательная регистрация