Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.12.2010, 16:32
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
Вопрос Как в DBGrid добавить данные из Edit

Здравствуйте!
Подскажите пожалуйста, как в DBGrid добавить данные из Edit?
Есть Form1, на которой расположены ADOConnection, ADOQuery, DataSource и DBGrid.
База подключена из SQL Server.
На Form2 расположены пустые Edit-ы для заполнения.
И нужно чтоб при нажатии на Form2 кнопки "Добавить" в Form1.DBGrid добавлялась новая строка с данными из Edit-ов в соответствующие столбцы.
Ответить с цитированием
  #2  
Старый 10.12.2010, 19:02
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А вы уверены, что вам нужны Edit может лучше DBEdit использовать?
Но если все-же нужны именно Edit то придется добавление записи реализовать ручками:
Код:
procedure TForm12.Button1Click(Sender: TObject);
begin
 ADOQuery1.AppendRecord([null,Edit1.Text,Edit2.Text,Edit3.Text]);
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
VinexN (22.12.2016)
  #3  
Старый 10.12.2010, 22:38
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

спасибо )
А через DBEdit как? Я просто не знала о таком...
Ответить с цитированием
  #4  
Старый 10.12.2010, 23:57
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Цитата:
Сообщение от Bloo
спасибо )
А через DBEdit как? Я просто не знала о таком...

Ставишь на форму DBEdit в DataSource выбираешь базу, в DataField выбираешь нужное поле и т.д.
Ответить с цитированием
  #5  
Старый 11.12.2010, 14:03
Аватар для Bloo
Bloo Bloo вне форума
Новичок
 
Регистрация: 04.11.2010
Сообщения: 54
Репутация: 10
По умолчанию

Спасибо , а какой нибудь код к процедуре нажатия кнопки не надо написать? Надо ведь, чтоб мы заполнили поля DBEdit, нажали "Добавить" и в таблицу другой формы добавляются соответствующие данные.
И в DBEdit у меня почему-то нельзя вписать никакой текст О_о
Ответить с цитированием
  #6  
Старый 16.12.2010, 15:56
Alana Alana вне форума
Прохожий
 
Регистрация: 25.08.2010
Сообщения: 3
Репутация: 10
По умолчанию

Чтобы в DBEdit вводить текст, сперва нужно таблицу перевести в режим добавления новой записи или же редактирования. Можно, к примеру, прописать при открытии формы код ADOQuery.Insert (режим добавления записи). Вводишь в DBEdit какие-то данные, предварительно не забыв настроить компонент на нужный столбец таблицы. На кнопке "Добавить" код ADOQuery.Post (сохраняет запись). И еще бы я посоветовала при закрытии Form2 прописать код ADOQuery.Cancel, чтобы никакие данные не сохранились. Да и кнопку "Отмена" тоже можно сделать и прописать такой же код. Вообще, я бы ручками добавляла данные в базу из обычных Edit-ов

И не забудь написать команду, чтобы обновить таблицу и чтобы новые введенные данные отобразились в DBGrid:
Код:
ADOQuery.Active:=false;
ADOQuery.Active:=true;

Последний раз редактировалось Alana, 16.12.2010 в 15:59.
Ответить с цитированием
  #7  
Старый 16.12.2010, 16:13
Аватар для Delphist
Delphist Delphist вне форума
Новичок
 
Регистрация: 10.12.2010
Адрес: Курган
Сообщения: 68
Репутация: 6002
По умолчанию

Цитата:
Сообщение от Alana
И еще бы я посоветовала при закрытии Form2 прописать код ADOQuery.Cancel, чтобы никакие данные не сохранились. Да и кнопку "Отмена" тоже можно сделать и прописать такой же код. Вообще, я бы ручками добавляла данные в базу из обычных Edit-ов
И не забудь написать команду, чтобы обновить таблицу и чтобы новые введенные данные отобразились в DBGrid:
Код:
ADOQuery.Active:=false;
ADOQuery.Active:=true;

Что то Я сколько писал программ для баз данных ни разу не сталкивался с тем, что если не выполнена команда POST, что то сохранилась. И зачем отключатся от базы снова Подключаться? DBGrid и так прекрасно все видит? ИЛИ Я ТУПЛЮ?
Ответить с цитированием
  #8  
Старый 16.12.2010, 16:53
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Цитата:
И зачем отключатся от базы снова Подключаться? DBGrid и так прекрасно все видит?
DBGrid не видит вообще ничего он просто средство отображения Датасета.
а вот кверик с запросом не селект к таблице не увидит обновленные записи, т.к. набор данных был получен раньше вносимых изменений, поэтому и необходимо переоткрыть запрос.
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #9  
Старый 16.12.2010, 19:12
Tekkonkinkreet Tekkonkinkreet вне форума
Прохожий
 
Регистрация: 16.12.2010
Сообщения: 1
Репутация: 10
По умолчанию

Скажите пожалуйста, если сделать как описано выше, то можно менять только первую строку, а новую добавить не получается, как быть?
Ответить с цитированием
  #10  
Старый 16.12.2010, 20:46
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Он как раз и добавит строку а не отредактирует.

Хотя лично я предпочитаю использовать запросы Insert/Update/Delete
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #11  
Старый 17.12.2010, 08:26
Alana Alana вне форума
Прохожий
 
Регистрация: 25.08.2010
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Delphist
Что то Я сколько писал программ для баз данных ни разу не сталкивался с тем, что если не выполнена команда POST, что то сохранилась. И зачем отключатся от базы снова Подключаться? DBGrid и так прекрасно все видит? ИЛИ Я ТУПЛЮ?
Не, ну можно не отменять, просто таблица так и останется в режиме добавления. А так надежнее, знаешь, что ничего лишнего не добавится. Мало ли как глюкануть может.

А DBGrid не увидит изменений, если не обновить таблицу, к которой он привязан. Если вы сколько писали программ, работающих с базой, то должны были заметить все подобные тонкости. Даже в универе по поводу обновления таблицы после вставки говорили.

Последний раз редактировалось Alana, 17.12.2010 в 08:28.
Ответить с цитированием
  #12  
Старый 17.12.2010, 08:51
Аватар для Delphist
Delphist Delphist вне форума
Новичок
 
Регистрация: 10.12.2010
Адрес: Курган
Сообщения: 68
Репутация: 6002
По умолчанию

Цитата:
Сообщение от Alana
Не, ну можно не отменять, просто таблица так и останется в режиме добавления. А так надежнее, знаешь, что ничего лишнего не добавится. Мало ли как глюкануть может.

А DBGrid не увидит изменений, если не обновить таблицу, к которой он привязан. Если вы сколько писали программ, работающих с базой, то должны были заметить все подобные тонкости. Даже в универе по поводу обновления таблицы после вставки говорили.

В данный момент пишу программу автоматизация такси, почти дописана версия 1.1, 1.0 уже работает. Конечно я отключаю и включаю таблицу, НО дело в том что её используют 10 диспетчеров(И без этого они тупа не увидят друг друга), а если на одного пользователя у меня и так все прекрасно работает, Просто надо отслеживать Были ли изменения, если Да то сохранить, если нет то и ни каких клюков не будет.
Ответить с цитированием
  #13  
Старый 17.12.2010, 09:24
Black Raider Black Raider вне форума
Местный
 
Регистрация: 31.05.2010
Адрес: Москва
Сообщения: 466
Версия Delphi: 7
Репутация: 40
По умолчанию

Цитата:
а если на одного пользователя у меня и так все прекрасно работает,

Очевидно для доступа вы используете Table ?
и интересно база на чем?Paradox?
__________________
Новый вирус - "БОМЖ"! Он просто роется в Корзине...и спит под ярлычком "Сетевое окружение"
Ответить с цитированием
  #14  
Старый 17.12.2010, 09:30
Аватар для Delphist
Delphist Delphist вне форума
Новичок
 
Регистрация: 10.12.2010
Адрес: Курган
Сообщения: 68
Репутация: 6002
По умолчанию

SQLServer2005 Компоненты ADOTable,ADOQuery,ADODataSource.
Смотря что выполнить.
Ответить с цитированием
  #15  
Старый 17.12.2010, 09:31
Alana Alana вне форума
Прохожий
 
Регистрация: 25.08.2010
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от Delphist
Просто надо отслеживать Были ли изменения, если Да то сохранить, если нет то и ни каких клюков не будет.
У меня в свое время были проблемы с отслеживанием изменений. По первости все работало, а потом при внесении изменений все переставало работать, короче муть была полнейшая. Поэтому от такого способа отказалась. Для меня проще написать ADOTable.Cancel. Спокойнее буду спать
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter