Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 13.02.2018, 00:44   #1
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 134
Репутация: 10
По умолчанию Нарушение целостности данных в БД

Доброго времени суток, Уважаемые эксперты. Есть программа на Delphi и БД Access. Таблицы связны между собой. При добавлении новой строки и сохранении изменений появляется сообщения "Невозможно добавление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной записи в таблице [имя таблицы]". Как это можно побороть?

Я как обычно делаю добавление и заполнение новой строки:
Код:

  Form1.DataSource1.DataSet.Edit;
  Form1.DataSource2.DataSet.Edit;
  Form1.DataSource1.DataSet.Insert;
  Form1.DataSource1.DataSet.FieldbyName('ID').AsString:=IntToStr(j);
  Form1.DataSource1.DataSet.FieldbyName('29;').AsString:=S2;
  Form1.DataSource1.DataSet.FieldbyName('252;').AsString:=S3;
  Form1.DataSource1.DataSet.FieldbyName('251;').AsString:=S4;
  Form1.DataSource1.DataSet.FieldbyName('229;').AsBoolean:=q;
  Form1.DataSource1.DataSet.FieldbyName('229;').AsString:=S5;
  Form1.DataSource1.DataSet.Post;

Весь проект так же прилагаю:
Программа

Для проверки необходимо нажать кнопку "банк недвижимости", а потом кнопку "new" - именно там ошибка появляется. Заранее спасибо всем откливнувшимся!

Последний раз редактировалось Armageddets; 13.02.2018 в 00:57.
Armageddets вне форума   Ответить с цитированием
Старый 13.02.2018, 10:13   #2
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,877
Репутация: 2195
По умолчанию

Цитата:
Для обеспечения целостности данных необходимо наличие связанной записи в таблице [имя таблицы]". Как это можно побороть?
задать правильное (имеющееся в БД) значение для ссылочного поля(полей).
http://programmersforum.ru/showthread.php?t=276824
посты #6, #8
Цитата:
Код:


j:=0;
  for i:=0 to Form1.DataSource2.Dataset.RecordCount-1 do
  begin
    if Form1.DataSource2.Dataset.FieldbyName('Тип').asString=s1 then j:=i;//значение поля НЕ обязательно должно совпадать с "порядковым" номером записи
  end;

Код:

if form1.DataSource2.DataSet.Locate('Тип', s1) then j:=Form1.DataSource2.DataSet.FieldByName('ID').AsInteger else j:=-1;

Цитата:
Код:

Form1.DataSource1.DataSet.FieldbyName('ТипID').AsString:=IntToStr(j);

Код:

Form1.DataSource1.DataSet.FieldbyName('ТипID').Value:=j;// но останутся те же проблемы(целостность) если мы почему-то не найдем нужной записи по Locate (или еще как-либо)

или же в ветке if Locate.. then begin
Код:

Form1.DataSource1.DataSet.FieldbyName('ТипID').AsInteger:= {j;} Form1.DataSource2.DataSet.FieldByName('ID').AsInteger;

__________________
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 13.02.2018 в 10:48.
evg_m на форуме   Ответить с цитированием
Старый 13.02.2018, 10:19   #3
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,755
Репутация: 6592
По умолчанию

А что это за шифрованные имена у полей - 251;? Как, удобно с такими работать ))
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 13.02.2018, 11:04   #4
evg_m
Профессионал
 
Регистрация: 20.04.2008
Сообщений: 4,877
Репутация: 2195
По умолчанию

Цитата:
А что это за шифрованные имена у полей - 251;? Как, удобно с такими работать ))
это проблема переноса(копирования) НЕ англоязычных .
Цитата:
Код:

Form1.DataSource1.DataSet.FieldbyName('ТипID').AsString:=IntToStr(j);

__________________
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме   Ответить с цитированием
Старый 13.02.2018, 11:14   #5
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 134
Репутация: 10
По умолчанию

Спасибо, evg_m. Сейчас буду разбираться и пробовать.

Да, это из за переноса кода из делфи на форум, там длинные названия получались и я просто их сократил, удалив лишнее. Чтобы такого не было - нужно через блокнот открыть pas файл и скинуть напрямую.
Armageddets вне форума   Ответить с цитированием
Старый 13.02.2018, 11:32   #6
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,755
Репутация: 6592
По умолчанию

Можно напрямую из делфи переключив раскладку в кириллицу и только потом копировать
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Ответ

Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Невозможно удаление или изменение записи. Для обеспечения целостности данных необходимо наличие связанной Анжеликааа Microsoft Office Access 3 25.11.2014 22:35
Проверка целостности файлов (c++) Jirogirg Помощь студентам 5 19.05.2013 20:11
Ограничения целостности MySQL sl1mka Помощь студентам 0 30.10.2011 16:39
Ошибка целостности Aleksey1989 БД в Delphi 2 05.06.2011 07:28
Проверка целостности файлов trech85 Общие вопросы Delphi 1 28.11.2008 20:08


13:14.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru