Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 61

Запись данных с Edit в Access

15.12.2013, 16:28. Показов 2766. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите разобраться. У меня есть БД в Access ( тематика "Туристическая фирма"), в Делфи я пытаюсь сделать простое дабавление данных в таблицы это БД, но у меня постоянно выскакивает ошибка с текстом: "нельзя изменять ID( ну точнее модифицировать). Дело в том что у меня ID - это счетчик, а когда в делфи я пытаюсь добавить с edit данные - он либо дожен создать сам ID - что делается только Access, либо вообще не трогать id, но тогда делфи просто виснет - ибо не знает куда писать данные.
Код самый простой
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TFormStaff.SpeedButton1Click(Sender: TObject);
var
  familia, name, otch, data, dol, zar, adress,phone, pasport: String;
begin
DM.ADOTable_Staff.Edit;   
DM.ADOTable_Staff.AppendRecord([nil, nil, nil, nil, nil, nil, nil, nil, nil, nil]);
DM.ADOTable_Staff.FieldByName('ST_Surname').AsString := Edit2.Text;
DM.ADOTable_Staff.FieldByName('ST_Patronymic').AsString := Edit3.Text;
DM.ADOTable_Staff.FieldByName('ST_Name').AsString := Edit4.Text;
DM.ADOTable_Staff.FieldByName('ST_Date_of_birth').AsString := Edit5.Text;
DM.ADOTable_Staff.FieldByName('ST_Salary').AsString := Edit6.Text;
DM.ADOTable_Staff.FieldByName('ST_Post').AsString := Edit7.Text;
DM.ADOTable_Staff.FieldByName('ST_Address').AsString := Edit8.Text;
DM.ADOTable_Staff.FieldByName('ST_Phone').AsString := Edit9.Text;
DM.ADOTable_Staff.FieldByName('ST_Passport').AsString := Edit10.Text;
DM.ADOTable_Staff.Post;
Тут я перепробовал кучу вариантов сначала без AppendRecord - данные в DBGrid на форме появлялись, не сохранялись - тупо зависал. Добавил AppendRecord - начил писать, что id нельзя использовать.
Попробовал еще так - тупо через InputBox
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var
  sF, sI, sO: String;
begin
 sC:= InputBox('Добавление страны',
               'Введите название страны',
               '');
 sR:= InputBox('Добавление курорта',
               'Введите название курорта',
               '');
 sH:= InputBox('Добавление отеля',
               'Введите название отеля',
               '');
 if (sC = '') or (sR = '') or (sH = '') then
 begin
  ShowMessage('Ошибка, не допустимое значение');
  Exit;
 end;
 DM.ADOTable_Tours.AppendRecord([
 nil, sC, sR, sH, '<нет данных>',
 '<нет данных>', '<нет данных>',
 '<нет данных>', '<нет данных>']);
end;
Как сделать так, чтобы данные добавлялись в таблицу Access где есть ключевое поле, которое нельзя изменять?
И еще один вопрос у меня DBGrid связан с таблицей - нормально отображает данные, но только 1 строчку - хотя в таблице их 15 как сделать так чтобы все отображал? когда делал лабу по меточике в инсте - там настройки были такие же как у меня сейчас, но отображало все данные - а сейчас у мое личной БД - отображает не все, а одну строку.Почитал Флёнов М.Е. - Библия Delphi (3-е издание) - 2011 - там нет ни работы с DBGrid's кроме разукраски цветами ячеек, ни записи в БД, зато создание в Access БД есть как ни странно, не смотря на то, что учебник по Delphi.
Хелп
А, да забыл сказать - задание таково, чтобы не использовать ADOQuery в этой БД - преподаватель сказал - типо создайте сначала без него.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.12.2013, 16:28
Ответы с готовыми решениями:

Запись данных с Edit в Access
Доброго времени суток. У меня есть БД в Access(там одно поле ФИО) , нужно что бы с одного edit записывались данные в эту бд(в поле ФИО)....

Сохранение данных из Edit в базу данных (не Access)
Помогите пожалуйста сохранить данные из Edit-а в базу данных. У меня есть DBGrid, при нажатие на любую строчку он выводит данные в...

Поиск в базе данных Access через Edit
Прочитал до этого созданные темы перепробовал по разному, но у меня всё равно почему то не получается запустить данный поиск вылетает...

4
 Аватар для HyperZen
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
15.12.2013, 18:07
В ключевое поле ничего писать не надо, счетчик сам увеличится на единицу. Если Вы хотите использовать такой код (такое исполнение), то:
Delphi
1
2
3
4
5
6
7
procedure TFormStaff.SpeedButton1Click(Sender: TObject);
var
  familia, name, otch, data, dol, zar, adress,phone, pasport: String;
begin
DM.ADOTable_Staff.Edit;   
DM.ADOTable_Staff.AppendRecord([Edit2.Text, Edit3.Text, Edit4.Text, Edit5.Text, Edit6.Text, Edit7.Text, Edit8.Text, Edit9.Text, Edit10.Text]);
DM.ADOTable_Staff.Post;
0
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 61
15.12.2013, 18:12  [ТС]
У меня постоянно выскакивает ошибка project dbTravel.exe raised exception class EDatabaseError with message 'Field 'ST_ID' cannot be modified'. process stopped. Да же при той записи которую дали вы. Я так понимаю он все равно хочет провести измененияв ключе - а программа сразу стопортися. Подскажите как испрвить?
0
13 / 13 / 14
Регистрация: 11.11.2012
Сообщений: 147
15.12.2013, 21:48
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TFormStaff.SpeedButton1Click(Sender: TObject);
var
  familia, name, otch, data, dol, zar, adress,phone, pasport: String;
begin
DM.ADOTable_Staff.Insert;   
DM.ADOTable_Staff.FieldByName('ST_Surname').AsString := Edit2.Text;
DM.ADOTable_Staff.FieldByName('ST_Patronymic').AsString := Edit3.Text;
DM.ADOTable_Staff.FieldByName('ST_Name').AsString := Edit4.Text;
DM.ADOTable_Staff.FieldByName('ST_Date_of_birth').AsString := Edit5.Text;
DM.ADOTable_Staff.FieldByName('ST_Salary').AsString := Edit6.Text;
DM.ADOTable_Staff.FieldByName('ST_Post').AsString := Edit7.Text;
DM.ADOTable_Staff.FieldByName('ST_Address').AsString := Edit8.Text;
DM.ADOTable_Staff.FieldByName('ST_Phone').AsString := Edit9.Text;
DM.ADOTable_Staff.FieldByName('ST_Passport').AsString := Edit10.Text;
DM.ADOTable_Staff.Post;
0
2 / 2 / 1
Регистрация: 21.11.2011
Сообщений: 61
15.12.2013, 21:54  [ТС]
Так я тоже пробывал ... вообще никак не получается ... я сделал по другому - тупо все связи в таблицах переделал в другую сторону - чтобы ID были в других таблицах и добавляю каким-то магическим образом данные в таблицу главную - т.к. она главная - во всех остальных таблицах добавляется автоматом по 1 новой строчке, куда я быстреннько в DBGrid'ах добавляю данные. По другому никак у меня не работает .... Второй минус моей новой задумки - данные не смогут выводится в DBGrid'ах, то есть добавил их - они исчезли ... и все - просмотр только в Access, надеюсь прокатит .. что тут еще сказать ...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.12.2013, 21:54
Помогаю со студенческими работами здесь

Поиск в базе данных Access через Edit
Здравствуйте. Тут возникла проблемка у меня, подскажите пожалуйста: Вот код Delphi procedure TForm1.Button2Click(Sender: TObject); ...

Запись данных из нескольких Edit в один столбец
Всем доброго вечера. Дело в том, что мне нужно из нескольких эдитов, добавить данные в БД Access в один столбец. Я прописывала код...

Как поместить значения строки из базы данных Access в поля Edit
Возникла следующая проблема: к примеру, программа содержит базу данных из Access, которая содержит 3 столбика 1. Фамилия 2. Имя 3....

Запись данных в MS Access с ADOQuery (ошибка типов данных при записи)
Здравствуйте. Я добавила на форму три компонента ADOConnection, DataSource, ADOQuery. В ADOQuery прописала: SELECT*FROM Справочник ...

Ошибка при внесении данных в БД Access 'ADOQuery1: Dataset not in edit or insert mode
Доброго времени суток! При написании проги столкнулся с такой ошибкой: &quot;'ADOQuery1: Dataset not in edit or insert mode&quot; и не знаю, что...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru