Моя проблема заключается в том, что я пишу данные для отдельных полей в одной записи в разное время, и когда я добавляю данные ко второму настраиваемому полю в том же запись, я получаю сообщение об ошибке:Вставка разных частей записи в разное время при записи в базу данных
You must enter a value in the 'tblWorkoutDetails.Username' field
Несмотря на то, что данные были введены в предыдущем отчете.
В таблице это относится к называется tblWorkoutDetails
и имеет следующие поля:
- WorkoutID
- Имя пользователя
- WorkoutDate
- Вес
- талии
WorkoutI D и имя пользователя составляют составной ключ. Эта таблица относится к другой таблице, и я также записываю данные таким же образом.
Я пишу первую часть моей записи (поля, составляющие мой составной ключ) к базе данных, используя этот код:
adotblWorkoutDetails['Username'] := Username;
adotblWorkoutDetails['WorkoutID'] := CurrentWorkout+1;
adotblWorkoutDetails.Post;
adotblWorkoutDetails.Refresh;
Значения назначаются на полях просто переменные и это исполняет в совершенстве.
Второе утверждение, которое заполняет остальную часть полей в этой записи выглядит следующим образом:
adotblWorkoutDetails['WorkoutDate'] := Date;
adotblWorkoutDetails['Weight'] := Weight;
adotblWorkoutDetails['Waist'] := Waist;
adotblWorkoutDetails.Post;
adotblWorkoutDetails.Refresh;
Программа порывает с вышеупомянутой ошибкой в adotblWorkoutDetails.Post
. При попытке исправить это, я попытался переназначить необходимые поля, однако у меня возникла ошибка, когда я вводил повторяющиеся данные. Кроме того, когда я заполняю каждое поле в записи в течение первого перехода (используя данные образца для заполнения полей «зарезервировано» для второй записи данных), код выполняется отлично, и так же код записывается в другую таблицу ,
Не могу решить, как это решить. Если вам нужна дополнительная информация/скриншоты из кода, пожалуйста, спросите.
Этот код дает мне «вы должны ввести значение в поле ...» Ошибка:
И раскомментировать эти две строки дает мне дубликат ошибки данных:
Сообщение «вы должны ввести стоимость e в поле «tblWorkoutDetails.Username» исходит из кода вашего приложения, а не из кода библиотеки Delphi. Таким образом, вам нужно добавить код, который включает это сообщение, на ваш q. Также код, содержащий сообщение о том, что вы вводите повторяющиеся данные. – MartynA
попробуйте добавить ** showmessage (adotblWorkoutDetails.fieldbyname ('WorkoutID'). AsString) ** сразу после вашего первого ** adotblWorkoutDetails.Refresh **. Сделайте то же самое для поля ** username **. Убедитесь, что они действительно установлены. –
MartynA - Я не уверен, что понимаю ваше предложение. Я не написал никаких утверждений, содержащих сообщение с этой ошибкой, если это то, что вы получаете. Также см. Править для скриншотов кода. –