Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi и базы данных

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 251, средняя оценка - 4.90
МАрковка
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 35
#1

Как добавить, изменить, удалить, посмотреть запись в DBGrid? - Delphi БД

06.03.2012, 08:41. Просмотров 35985. Ответов 73
Метки нет (Все метки)

Привет всем!
Помогите, пожааааааалуйста.
Дано:
1. на Form1 расположен DBGrid (2 колонки) и кнопки "добавить", "удалить", "посмотреть"
2. кнопка "добавить" открывает Form3
3. на Form3 расположены Edit1, Edit2, Edit3, Edit4, Edit5, Edit6, Edit7, а также кнопка "ОК"
Требуется:
1. При нажатии на кнопку "ОК" в колонки DBGrid'а попадали Edit1 и Edit4
2. При нажатии на кнопку "посмотреть" на конкретной строке открывалась Form3 без возможности редактирования плюс появлялась кнопка "изменить", при нажатии на которую можно было отредактировать и нажать "ОК"
3. При нажатии на кнопку "удалить" вся строка DBGrid'а удалялась
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2012, 08:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как добавить, изменить, удалить, посмотреть запись в DBGrid? (Delphi БД):

Как добавить запись в dbgrid - Delphi БД
Здравствуйте срочно нужна помощь делаю курсовую, не могу в dbgrid добавить запись. Хотел сделать через кнопку Table1.Insert; но учительница...

Как добавить текущую запись из DbGrid в StringGrid? - Delphi БД
Как добавить текущую запись из бд access которая отображается в DBgrid при клике мыши по ней или при нажатии на кнопку , в компонент...

Как добавить запись в нужную строку DBGrid? - Delphi БД
Нужно чтобы,по указанному в DateTimePicker времени,он добавлял запись в нужную строку.Вот скрин: Т.е. в пикере я указываю...

Как удалить запись в dbgrid? - Delphi БД
здравствуйте! есть виртуальный датасет MemTableEh, в него заполняются данные из DataSet. затем по каждой заполненой строке MemTableEh...

Добавить запись в два DbGrid-а - Delphi БД
Добрый день, подскажите как можно добавить запись сразу в 2 DBGrida? есть Form1 (DBGrid) Form2(DBgrid) Form3(форма для добавления...

DBGrid столбцы (добавить - удалить) - Delphi БД
Доброго времени суток. У меня такой вопрос: возможно ли у DBGrid сделать программное добавление/удаление столбцов, так чтобы в БД столбцы...

73
droider
Delphist, DataBase Dev
4176 / 2260 / 458
Регистрация: 04.10.2012
Сообщений: 8,100
03.10.2013, 09:13 #31
Цитата Сообщение от Shman Посмотреть сообщение
без дополнительной формы TownEditForm разве нельзя?
можно, но нежелательно

Добавлено через 2 минуты
Цитата Сообщение от Shman Посмотреть сообщение
в конце кода AddButton лучше добавить
автосохранение итак выполнится, без этой строчки
0
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
03.10.2013, 09:19 #32
droider, автосохранение выполниться если добавить город и тыкнуть в ячейку с другим городом, а если добавить город и тут же закрыть окно автосохранения не будет. Поэтому нужна строчка.
0
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
04.10.2013, 13:27 #33
Извините если вдруг спрашиваю не по теме.
В своей тестовые проект добавил MainMenu и пункты Запись и подпункты: добавить, изменить, удалить.
Добавил ImageList и загрузил 4 картинки. Связал их с MainMenu.
"Записи" в свойствах MainMenu присвоил ImageIndex 0.
Добавить - 1.
Изменить - 2.
Удалить - 3.

Все картинки отображаются исправно кроме пункта "Запись". Помню в Delphi 6 с отображением было все впорядке. Неужели в Delphi 2006 это убрали???
0
Вложения
Тип файла: zip TestBook.zip (466.3 Кб, 16 просмотров)
droider
Delphist, DataBase Dev
4176 / 2260 / 458
Регистрация: 04.10.2012
Сообщений: 8,100
04.10.2013, 15:18 #34
Цитата Сообщение от Shman Посмотреть сообщение
Неужели в Delphi 2006 это убрали???
Нет. Просто добавьте еще картинку в свойство Bitmap главного пункта меню.
Все работает
0
Миниатюры
Как добавить, изменить, удалить, посмотреть запись в DBGrid?  
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
06.10.2013, 07:24 #35
Захотел добавить в свой проект таблицу Контакты. Связал LinkKey1 в Контактах (KontaktyTable) с Key1 в таблице Люди (LudiTable), чтобы для каждого ФИО выводился свой номер телефона, мобильника и емайла, добавил DBGrid вывода контактов, сделал форму ввода (AddEditForm) для ввода данных (Коменда Запись --> Добавить). Как теперь можно сделать след. две вещи?
1. Когда я редактирую ФИО и нажимаю кнопку Сохранить все сохраняется при выходе из программы, но если я изменю контактные данные, нажму кнопку Сохранить и сразу закрою программу, изменения не сохранятся. Как это подправить
2. Допустим у Иванова два городских или два моб. телефона или две емайла или всё вместе. Как это начать вносить в базу при нажатии чекбокса “Ещё”? Вручную, непосредственно во время редактирования DBGrid эти данные получается внести. А как это сделать с помощью формы?

Проект вот: http://yadi.sk/d/I5WOct1SASqGa
0
Вложения
Тип файла: zip TestBook.zip (485.2 Кб, 18 просмотров)
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
06.10.2013, 07:35 #36
Скриншот
0
Миниатюры
Как добавить, изменить, удалить, посмотреть запись в DBGrid?  
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
06.10.2013, 17:42 #37
Чтобы решить 1-ую проблему нужно при нажатии кнопки Сохранить написать следующее:
Delphi
1
2
3
4
5
6
7
8
procedure TAddEditFormForm.SaveButtonClick(Sender: TObject);
begin
 if DataModule1.LudiTable.Modified then   // Если запись с людьми изменилась, тогда
    DataModule1.LudiTable.Post;   // сохранить
 if DataModule1.KontaktyTable.Modified then   // Если запись с контактами изменилась, тогда
    DataModule1.KontaktyTable.Post;   // сорханить
 Close;   // Закрыть форму ввода
end;


Думаю над 2-ой проблемой.
0
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
06.10.2013, 18:36 #38
Возникла еще одна проблема. Когда я добавляю запись почему-то при нажатии кнопки Сохранить в базу не добавляются контакты (хотя я их тоже пишу). В таблицу ЛЮДИ инфа добавляется, а в КОНТАКЫ нет . При этом кнопка редактирования работает нормально, т..е. если добавить запись, а потом ее отредактировать добавив контакты, они добавятся, а при создании новой записи никак.
Корректное удаление записи тоже не происходит, в БД Access из таблицы ЛЮДИ инфа удаляется, а КОНТАКТЫ остаются . В итоге база заполняется мусором.
Помогите найти ошибки.
0
Вложения
Тип файла: zip TestBook.zip (516.6 Кб, 7 просмотров)
FIL
Модератор
3375 / 2513 / 478
Регистрация: 19.09.2012
Сообщений: 7,845
06.10.2013, 18:49 #39
КОНТАКЫ добавляются, но не отображаются.
У тебя таблицы связываются через поле LinkKey1, ему надо задавать соотв. значение при добавлении записи.
0
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
06.10.2013, 19:35 #40
FIL, каким образом? Можно пример кода?
0
FIL
Модератор
3375 / 2513 / 478
Регистрация: 19.09.2012
Сообщений: 7,845
06.10.2013, 19:47 #41
У таблицы ЛЮДИ есть поле Key1, оно заполняется автоматически.
При добавлении записи в таблицу КОНТАКТЫ значение этого поля надо присвоить полю LinkKey1.
0
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
06.10.2013, 19:55 #42
FIL, код можно? Мне бы пример в виде кода, а по остальным таблицам я соображу.
0
FIL
Модератор
3375 / 2513 / 478
Регистрация: 19.09.2012
Сообщений: 7,845
06.10.2013, 21:01 #43
Delphi
1
  DataModule1.KontaktyTableLinkKey1.Value := DataModule1.LudiTableKey1.AsInteger;
0
Shman
3 / 3 / 2
Регистрация: 30.04.2012
Сообщений: 212
07.10.2013, 06:35 #44
FIL, я извиняюсь,. этот фрагмент кода надо вставлять в кнопку добавления записи или в кнопку Сохранить на форме ввода? Пробовал первое, не срабатывает:
Delphi
1
2
3
4
5
6
7
8
{НЕ РАБОТАЕТ}
procedure TMainForm.AddN2Click(Sender: TObject);
begin
 DataModule1.LudiTable.Insert;
 DataModule1.KontaktyTable.Insert;
 DataModule1.KontaktyTableLinkKey1.Value := DataModule1.LudiTableKey1.AsInteger;
 AddEditFormForm.ShowModal;
end;
0
FIL
Модератор
3375 / 2513 / 478
Регистрация: 19.09.2012
Сообщений: 7,845
07.10.2013, 09:09 #45
Можно так:
Delphi
1
2
3
4
5
6
7
procedure TMainForm.AddN2Click(Sender: TObject);
begin
 DataModule1.KontaktyTable.MasterSource := nil;
 DataModule1.LudiTable.Insert;
 DataModule1.KontaktyTable.Insert;
 AddEditFormForm.ShowModal;
end;
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TAddEditFormForm.SaveButtonClick(Sender: TObject);
begin
 if DataModule1.LudiTable.Modified then   // Åñëè Г§Г*ГЇГЁГ±Гј Г± ëþäüìè èçìåГ*ГЁГ«Г*Г±Гј, òîãäГ*
    DataModule1.LudiTable.Post   // ñîõðГ*Г*ГЁГІГј
 else
   DataModule1.LudiTable.Cancel;
 if DataModule1.KontaktyTable.Modified then   // Åñëè Г§Г*ГЇГЁГ±Гј Г± ГЄГ®Г*ГІГ*ГЄГІГ*ìè èçìåГ*ГЁГ«Г*Г±Гј, òîãäГ*
 begin
    DataModule1.KontaktyTableLinkKey1.Value := DataModule1.LudiTableKey1.AsInteger;
    DataModule1.KontaktyTable.Post;   // ñîðõГ*Г*ГЁГІГј
 end else
   DataModule1.KontaktyTable.Cancel;
 DataModule1.KontaktyTable.MasterSource := DataModule1.LudiSource;
 Close;   // Г‡Г*êðûòü ôîðìó ââîäГ*
end;
1
07.10.2013, 09:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2013, 09:09
Привет! Вот еще темы с ответами:

DBGrid столбцы (добавить - удалить) - Delphi БД
Здравствуйте. Помогите пожалуйста, весь интернет перерыла. На форме существует DBGrid нужно что бы в нее добавлялся столбец, и...

MS Access Добавить запись в выделенную ячейку DBGRID - Delphi БД
Всем привет, разрабатываю программу электронная регистратура. Такой вопрос, как записать значение из Edit в выделенную ячейку DBGRID. Для...

DBGrid, добавить запись в колонку с выборкой - Delphi БД
Есть грид, пользователей. (uid, login) Пользователи заполняют таблицу компаний. (cid, name_conpany, uid) uid - id пользователя нужно в...

Удалить запись из DBGrid - Delphi БД
В DBGrid выводится информация из 2 таблиц. Выделяю нужную строку, жму кнопку "Удалить" и выводится ошибка:" Недостаточные сведения о...


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

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

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