我想检查字段“number_field”中的记录值是否唯一,因此我在number_field中找到具有相同值的记录。我使用Lookup方法,因为我正在编辑记录:
id := SomeTable.Lookup('DOCUMENT_NUMBER', CurrentDocNumber, 'ID');
当然在某些情况下它会给我当前的记录ID。如何跳过编辑记录?
编辑:我不想禁用将相同编号的文档保存到数据库中 - 我只是想告诉用户他写的编号已经在系统中并让他决定做什么
Edit2:我只在加载的数据中运行 - 没有DB
答案 0 :(得分:4)
您可以使用TQuery并检查数据库中是否有记录:
select count(*) from my_table where DOCUMENT_NUMBER=CurrentDocNumber
修改强>
使用TDataSet也可以做到这一点。您可以select count
或select *
来测试RecordCount > 0
<强> EDIT2:强>
公平地说:
请注意,如果是这种情况I operate only in loaded data - no DB
(这是您接受我的答案后的更新),那么我的解决方案将无法工作,因为记录尚未发布到实时数据库。从来没有,如果有超过1个客户端连接并写入数据库,必须使用此查询。
答案 1 :(得分:1)
最好将DOCUMENT_NUMBER字段设置为数据库级别的唯一字段,然后在发布期间会自动引发异常,这将禁止发布记录。您还可以捕获异常并使用自己的错误重新引发,例如“文档编号已存在”等。
如果你不能这样做,那么你必须创建另一个表组件,beforepost在辅助表中找到记录,如果它存在,则引发异常。