يه فرم ورود اطلاعات دارم كه فيلد ها رو با dbedit وارد جدول مي كنه.(اولين فيلد كه با dbedit1 پر مي شه كليده ) مي خوام وقتي دكمه save رو مي زنم اگه كليد به صورت تكراري وارد شد برنامه پيغام بده و cancel كنه.
وقتي از locate استفاده مي كنم چون dbedit مستقيم اطلاعات رو مي ريزه به جدول اين دستور فيلد جاري رو پيدا مي كنه و بر نامه هنگ مي كنه و پيام key violation مي ده.
چيكار كنم؟؟
فیلدی که کلید هست باید در دیتابیس بصورت Unique تعریف بشه؛ در این صورت، اگر کاربر مقدار تکراری برای آن وارد کند، در هنگام عمل Post با پیغام خطا مواجه میشه و Post انجام نمیشه. پس لازم نیست شما خودتون کد خاصی بنویسید، باید تعریف کلید در دیتابیس را تصحیح کنید.
وقتي از locate استفاده مي كنم چون dbedit مستقيم اطلاعات رو مي ريزه به جدول اين دستور فيلد جاري رو پيدا مي كنه و بر نامه هنگ مي كنه و پيام key violation مي ده.
چيكار كنم؟؟
Locate موجب تغییر مکان Cursor دیتاست میشه و برای این تغییر مکان در صورتی که رکورد جاری تغییر کرده باشه، سعی میشه که تغییرات ذخیره بشند، ما بخاطر وجود کلید تکراری، تغییرات ذخیره نمیشند و خطا می گیرید. در ضمن، Locate فقط روی داده های موجود در DataSet جستجو میکنه؛ اگر با Query تعداد رکورد از یک جدول را دریافت کرده باشید، جستجو فقط بر روی همان رکوردها انجام میشه، نه کل رکوردهای جدول.

