怎样检测修改记录时的重复数据
程序中要修改一个表中的数据,程序由一个DBGrid通过Table控件(CachedUpdates为True)与表相连,表中一个域"物资"允许重复,但与另一个域"序号"对应的"物资"各记录则不允许重复(序号也是可重复的),即序号都为1的各记录"物资"域的值不得重复
我现在采取的检测方法是在向"物资"域中写入数据时检测是否有重复,采用的是如下的办法:
if Table.locate('p_code',InputData,[loCaseInsensitive]) then
Application.MessageBox(表中已有此物资,请重新输入.','提示',mb_Ok);
else
{继续}
但是使用此方法的问题是if后的语句一执行,如果有重复的记录,当前记录就会变成已有的那条记录;更糟糕的是如果是在添加新纪录,则执行此操作会使得新纪录"丢失"(因为"物资"是第一个要输入的域)。
于是我添加了一个Table控件"Table_Locate",Table_Locate和Table各设置均相同,然后把上面那条语句的Table改为Table_Locate,即Locate操作在Table_Locate上进行,而修改则在Table上进行则以上问题就都解决了,但是有了新的问题:当在表中同时输入两条"序号"相同的记录时,如果这两条记录的"物资"也相同(但与原有记录的"物资"不重复),程序不报错!!!
估计原因是当我对Table进行修改操作时,相应的修改在Post之前是放在Cache里面的,而此时Table_Locate中则没有相应的记录,因此Locate操作没有发现有重复。
我可是已经没辙了,在这里请教各位大虾,怎样让Table_Locate和Table两个Table控件保持完全的一致――甚至连Cache都一致?或者另有解决办法?
请各位大虾多多指教,在下先行谢过了!!!