PDA

View Full Version : سوال در مورد locate (جستجو رکورد ها )



hentjanson
پنج شنبه 25 بهمن 1386, 12:44 عصر
سلام بچه ها با locate چطور میشه جستجو کرد در بانک ایا رکورد هست جاری هست یا نیست اگر بود ذحیره نشه .
میشه کمکم کنید .

می خوام قبل از ذخیره در بانک جستجو کنم که رکورد فعلی هست یا نیست اگه بود ذخیره نشه .

مرسی

حمیدرضاصادقیان
پنج شنبه 25 بهمن 1386, 13:38 عصر
سلام.وقتی شما میخوای با locate کار کنی نیاز هست تمامی دیتای شما در حافظه یک بار لود بشه. و زمانی که حجم دیتات زیاد باشه اینکار زمان زیادی میبره و سرعت برنامه ات به شدت کاهش پیدا میکنه. برای اینکار میتونی یک procedure درست کنی و حالا براساس یک کد یا نامی که میدونی باید واحد باشه اون مقدار رو چک کنی. اگر تعداد رکوردهای procedure شما برابر 1 بود یعنی اون مقدار هست در غیر اینصورت میتونی دیتات رو به جدول اضافه کنی.
اینکار هم سرعت برنامه رو به شدت افزایش میده هم حافظه خیلی کمتری در مقابل روش اول به کار میبره.
موفق باشی

hentjanson
پنج شنبه 25 بهمن 1386, 14:16 عصر
سلام میشه یک مثال بزنید متوجه شم اخه تازه کارم . مرسی

Amir_Safideh
پنج شنبه 25 بهمن 1386, 18:19 عصر
این یک پروسیجر برای جستجو در بانک :

CREATE PROCEDURE SPS_Test
@Field Char(10) As
Select *
From Test_Table
Where Test_Field = @Field
که این پروسیجر رو به این صورت در برنامت باید اجرا کنی :

With SPS_Test do
begin
Close;
Parameters.ParamByName('@Field') = Edit1.Text;
ExecProc;
Open;
if RecordCount > 0 Then
begin
ShowMessage('This record is already exist!');
Exit;
end;
end;
و این هم دستور Locate بر روی بانک اطلاعاتیت :


with Test_Table do
begin
if Locate('Test_Field',Edit1.Text,[LoCaseInSensitive]) = True then
begin
ShowMessage('This record is already exist!');
Exit;
end;
end;

SYNDROME
پنج شنبه 25 بهمن 1386, 21:41 عصر
خوب اگر بر روی بانکتان فیلد کلید قرار دهید در زمان Insert پیغام خطا می دهد و در Except این خطا را مدیریت کنید.
موفق باشید