【发布时间】:2016-03-26 08:37:52
【问题描述】:
我的问题是我在不同时间将数据写入同一记录中的单独字段,当我将数据添加到同一记录中的第二个设置字段时,我收到一条错误消息:
您必须在“tblWorkoutDetails.Username”字段中输入一个值
尽管在之前的语句中输入了该数据。
这里引用的表名为tblWorkoutDetails,具有以下字段:
- 锻炼ID
- 用户名
- 锻炼日期
- 重量
- 腰部
WorkoutID 和用户名 组成一个复合键。此表与另一个表相关,我也在以相同的方式向其中写入数据。
我正在使用以下代码将记录的第一部分(构成我的复合键的字段)写入数据库:
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 错误而中断。在尝试解决此问题时,我尝试重新分配必填字段,但是我收到一条错误消息,提示我输入了重复数据。此外,当我在第一次填写记录中的每个字段时(使用示例数据填写第二个数据条目的“保留”字段),代码执行完美,写入另一个表的代码也是如此.
我不知道如何解决这个问题。如果您需要更多信息/代码截图,请询问。
此代码给了我“您必须在字段中输入一个值...”错误:
取消注释这两行会给我重复数据错误:
【问题讨论】:
-
消息“您必须在 'tblWorkoutDetails.Username' 字段中输入值”来自应用程序中的代码,而不是 Delphi 库代码。因此,您需要将包含此消息的代码添加到您的 q.同样,包含您正在输入重复数据的消息的代码。
-
尝试在您的第一个 adotblWorkoutDetails.Refresh 之后添加 showmessage(adotblWorkoutDetails.fieldbyname('WorkoutID').AsString)。对 username 字段执行相同操作。确保它们确实设置好了。
-
MartynA - 我不确定我是否理解你的建议。我还没有编写任何包含带有该错误消息的验证,如果那是你得到的。另请参阅代码截图编辑。
-
该消息并非凭空而来,它必须在您的代码或您正在使用的某个单元中。无论如何,您仍然没有发布足够多的代码;在您的第一个 .Post 之后,您在哪里调用“adotblWorkoutDetails.Edit”以启用将其他更改应用于数据集?
-
你在应该编辑当前记录的地方追加一个新记录