Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/249: Рейтинг темы: голосов - 249, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 06.03.2012
Сообщений: 35

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

06.03.2012, 08:41. Показов 57615. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2012, 08:41
Ответы с готовыми решениями:

Как добавить, удалить или изменить запись в ListBox, чтобы при этом изменения сохранились в базе данных?
Как добавить, удалить или изменить запись в Listbox, чтобы при этом изменения сохранились в базе данных??? Кто нибудь может помочь с кодом...

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

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

73
Эксперт Pascal/Delphi
 Аватар для droider
4893 / 2826 / 867
Регистрация: 04.10.2012
Сообщений: 10,278
29.09.2013, 20:14
Студворк — интернет-сервис помощи студентам
ShowMessage я специально убрал

Добавлено через 3 минуты
я код писал не на закрытие формы, а на переход по ячейкам
0
1 / 1 / 0
Регистрация: 29.09.2013
Сообщений: 50
29.09.2013, 20:17
https://www.youtube.com/watch?v=iYrnyg6hUFk Извините, если опоздал с помощью! Надеюсь этим видео, я не полностью, но частично помог!
0
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
30.09.2013, 08:37
droider, А я про ваш код OnClose формы. Он не работает как надо, то есть несохраненная инф-ция остается при закрытии формы.

Добавлено через 18 минут
droider,
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TDataModule1.TownTableBeforePost(DataSet: TDataSet);
begin
  if Application.MessageBox('Данные не сохранены. Сохранить?', 'Внимание!', MB_OKCANCEL) <> IDOK then
   begin
     DataModule1.TownTable.Cancel;
     Abort;
   end
  else
   begin
    DataModule1.TownTable.Post;
   end;
end;
Почему-то не работает Post. Кнопка Ок ничего не делает.
0
Эксперт Pascal/Delphi
 Аватар для droider
4893 / 2826 / 867
Регистрация: 04.10.2012
Сообщений: 10,278
30.09.2013, 09:12
Shman, скиньте Ваш проект
0
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
30.09.2013, 09:43
droider, вот он: http://yadi.sk/d/wGM7L-fjA8LJZ
Кнопка "Сохранить" тоже перестала нормально работать из-за TownTableBeforePost.
0
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
02.10.2013, 15:58
droider, когда ответ будет? 3-ий день жду.

Добавлено через 6 часов 57 минут
Добавил кнопку "Изменить" и написал следующее:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TTownBookForm.ChangeButtonClick(Sender: TObject);
var
 NameTown: String;
begin
repeat
  if not InputQuery('Редактирование', 'Введите новое название города:', NameTown) then
  begin
   ShowMessage('Действия отменено');
   Abort;   // Прекратитт цикл при отмене
  end;
 until NameTown <> '';   // пока не введут имя города
 
   DataModule1.Town_Table.Edit;   // Редактируем строку
   DataModule1.Town_Table.FieldByName('Город').AsString := NameTown;   // Добавляем название введеного города
end;
Но тут получается, что окошко InputQuery будет пустым. А как сделать так, чтобы в этом окошке было название города, который помещен в редактируемую ячейку? Допустим, ячейке надо изменить "Москву" на "Питер", выделяем "Москву", жмем "Изменить", открывается пустое окошко. Что надо дописать, чтобы в этом окошке было слово "Москва"? То есть название выделенного города.
0
 Аватар для Waddonator
969 / 644 / 97
Регистрация: 01.11.2012
Сообщений: 1,447
02.10.2013, 16:29
Цитата Сообщение от Shman Посмотреть сообщение
Что надо дописать, чтобы в этом окошке было слово "Москва"?
Delphi
1
2
3
4
...
  NameTown:='Москва';
  if not InputQuery('Редактирование', 'Введите новое название города:', NameTown) then
...
0
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
02.10.2013, 16:41
Waddonator, намёк понял. Тогда уж
Delphi
1
2
  NameTown:= DataModule1.Town_Table.FieldByName('Город').AsString;
  if not InputQuery('Редактирование', 'Введите новое название города:', NameTown) then
чтобы в этом окошке было имя выделенного города.
0
Эксперт Pascal/Delphi
 Аватар для droider
4893 / 2826 / 867
Регистрация: 04.10.2012
Сообщений: 10,278
02.10.2013, 16:54
Shman, не было времени посмотреть. Извините.
1.Исправил сохранение записи при закрытии справочника городов;
2. Подкорректировал запрос на удаление;
3.Заменил кнопку "Сохранить" на "Изменить" для
возможности редактирования записи.
В первой не вижу смысла, т.к. автопостинг должен выполняться по умолчанию - это нормально.
Вложения
Тип файла: 7z коррект.7z (315.4 Кб, 28 просмотров)
1
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
03.10.2013, 08:47
droider, спасибо. А без дополнительной формы TownEditForm разве нельзя?

Добавлено через 1 час 2 минуты
droider, Кстати в конце кода AddButton лучше добавить
Delphi
1
 DataModule1.Town_Table.Post;
чтобы автоматически сохранялcя город. Тогда и FormClose не нужен.
А если не делать автосохранение, то кнопку "Сохранить" и FormClose лучше оставить.
0
Эксперт Pascal/Delphi
 Аватар для droider
4893 / 2826 / 867
Регистрация: 04.10.2012
Сообщений: 10,278
03.10.2013, 09:13
Цитата Сообщение от Shman Посмотреть сообщение
без дополнительной формы TownEditForm разве нельзя?
можно, но нежелательно

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

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

Проект вот: http://yadi.sk/d/I5WOct1SASqGa
Вложения
Тип файла: zip TestBook.zip (485.2 Кб, 18 просмотров)
0
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
06.10.2013, 07:35
Скриншот
Миниатюры
Как добавить, изменить, удалить, посмотреть запись в DBGrid?  
0
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
06.10.2013, 17:42
Чтобы решить 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
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
06.10.2013, 18:36
Возникла еще одна проблема. Когда я добавляю запись почему-то при нажатии кнопки Сохранить в базу не добавляются контакты (хотя я их тоже пишу). В таблицу ЛЮДИ инфа добавляется, а в КОНТАКЫ нет . При этом кнопка редактирования работает нормально, т..е. если добавить запись, а потом ее отредактировать добавив контакты, они добавятся, а при создании новой записи никак.
Корректное удаление записи тоже не происходит, в БД Access из таблицы ЛЮДИ инфа удаляется, а КОНТАКТЫ остаются . В итоге база заполняется мусором.
Помогите найти ошибки.
Вложения
Тип файла: zip TestBook.zip (516.6 Кб, 7 просмотров)
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
06.10.2013, 18:49
КОНТАКЫ добавляются, но не отображаются.
У тебя таблицы связываются через поле LinkKey1, ему надо задавать соотв. значение при добавлении записи.
0
6 / 6 / 6
Регистрация: 30.04.2012
Сообщений: 216
06.10.2013, 19:35
FIL, каким образом? Можно пример кода?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.10.2013, 19:35

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

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

Символическая ссылка (удалить/добавить/посмотреть)
Здравствуйте, пожалуйста скажите, кто знает как УДАЛИТЬ символическую ссылку, и посмотреть созданые? я создавал её командой ln -s...

Четыре кнопки на форме: добавить запись, удалить запись, закрыть, найти запись
Private Sub КнопкаДобавитьЗапись_Click() On Error GoTo Err_КнопкаДобавитьЗапись_Click DoCmd.GoToRecord , , acNewRec ...

Как удалить/добавить запись, используя Nhibernate?
Как удалить/добавить запись, используя Nhibernate? Не могу понять. Покажите на примере, если не сложно. Заранее спасибо.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru