چک کردن تکراری بودن مقدار فیلد(ها)
سلام
یک سئوال فنی
من میخوام وقتی فرم در حالت Insert یا Edit یک جدول، هنگام ورود اطلاعات در یک dbedit ، چک کنم که آیا این مقدار وارد شده، تکراری هست یا خیر.
من از روش زیر میخوام استفاده کنم:
بعداز اینکه مقدار وارد dbedit شد بیام با استفاده از یک کوئری مقدار وارد شده رو در جدول بررسی کنم .
حالا سئوال اصلی
آیا در هنگام Insert یا Edit روی یک جدول ، نوشتن یک کوئری روی همان جدول ، مشکلی ایجاد نخواهد کرد؟
یا اصلا این روش من اصولی هست یا نه؟
نقل قول: چک کردن تکراری بودن مقدار فیلد(ها)
شما باید یک تابع بنویسید که این کار را براتون انجام بده و اون رو در موقع OnExit شی DBEdit فراخونی کنید .
(توجه کنید که در تابع شما باید یک متغییر از نوع TADOQuery تعریف کنید و با اون برای یافتن مقدار تکراری کار کنید تا داده هایی که در سایر اشیا به نمایش گذاشته می شوند به هم نخورند )
من خودم از این تابع را در یکی از پروژه هام استفاده کردم :
function TFrmAddDrivers.SearchDuplicate(const TabelName, FieldName,
Value: string;NumericType:Boolean=False): Boolean;
var
SQLRun:TADQuery;
begin
try
SQLRun:=TADQuery.Create(Self);
SQLRun.Connection:=FrmMain.ADConnection1;
if (not NumericType) then
SQLRun.SQL.Add('Select * From '+TabelName+' Where '+
FieldName +'='+QuotedStr(Value))
else
begin
SQLRun.SQL.Add('Select * From '+TabelName);
SQLRun.Active:=True;
Result:=SQLRun.Locate(FieldName,Value ,[loCaseInsensitive]);
FreeAndNil(SQLRun);
Exit;
end;
SQLRun.Active:=True;
if (SQLRun.RecordCount>0)then
Result:=True
else
Result:=False;
finally
FreeAndNil(SQLRun);
end;
end;
نقل قول:
آیا در هنگام Insert یا Edit روی یک جدول ، نوشتن یک کوئری روی همان جدول ، مشکلی ایجاد نخواهد کرد؟
من هنوز مشکلی در این زمینه پیدا نکردم
نقل قول: چک کردن تکراری بودن مقدار فیلد(ها)
با سلام
به نظر من بهتر است چک کردن داده های تکراری را زمانی انجام بدید که کاربر دکمه ذخیره اطلاعات را کلیک کرده است.
موفق باشید
نقل قول: چک کردن تکراری بودن مقدار فیلد(ها)
سلام
علاوه بر روشی که دوستمون فوقا ذکر فرمودند شما همچنین میتونین علاوه بر اون Table که توسط اون عمل ذخیره و ویرایش را انجام میدید یه Table دیگه روی فرم قرار بدید و توسط اون قبل از ذخیره اطلاعات چک کنین که آیا این رکورد سابقه ذخیره قبلی دارد یا نه؟ مثلا:
if adotable1.locate('code',dbedit1.text,[]) then
showmessage('Record tekrari ast!!')
else
adotable2.post;
نقل قول: چک کردن تکراری بودن مقدار فیلد(ها)
سلام دوست عزيز؛
راه بهتر اينه كه داخل خود بانك اطلاعاتي اين كار را انجام بديد و خطاهاي صادره از بانك را مديريت كنيد. (توي بانك بر روي فيلدها قيد عدم تكرار بذاريد و يا به صورت كليد معرفي كنيد، در اين صورت به هيچ وجه امكان وجود ركوردهاي تكراري وجود نخواهد داشت).
توجه كنيد قرار نيست همهي كارها را توي دلفي انجام بديم. برخي از كارها را بهتره به مدير بانك اطلاعاتي (منظورم DBMS هست)، بسپاريم.
يا علي... موفق باشيد...
نقل قول: چک کردن تکراری بودن مقدار فیلد(ها)
نقل قول:
نوشته شده توسط
alireza v.f
شما باید یک تابع بنویسید که این کار را براتون انجام بده و اون رو در موقع OnExit شی DBEdit فراخونی کنید .
...
سلام
اتفاقا من از همین روش استفاده می کنم و می خواستم بدون که این روش برا بانک و یا پایگاه مشکلی ایجاد نمیکنه که با جواب شما تقریبا خیالم راحت شد.
نقل قول: چک کردن تکراری بودن مقدار فیلد(ها)
نقل قول:
نوشته شده توسط
mehdimdp
سلام
اتفاقا من از همین روش استفاده می کنم و می خواستم بدون که این روش برا بانک و یا پایگاه مشکلی ایجاد نمیکنه که با جواب شما تقریبا خیالم راحت شد.
من که با مشکل بر نخوردم و به نظر خودم خیلی بهتر است تا این کار رو در OnChange انجام دهیم
موفق باشید
نقل قول: چک کردن تکراری بودن مقدار فیلد(ها)
نقل قول:
نوشته شده توسط
alinikaein
سلام دوست عزیز؛
توجه کنید قرار نیست همهی کارها را توی دلفی انجام بدیم. برخی از کارها را بهتره به مدیر بانک اطلاعاتی (منظورم DBMS هست)، بسپاریم.
یا علی... موفق باشید...
سلام
میشه یه کم در این رابطه توضیح و مثالی بزنید؟
نقل قول: چک کردن تکراری بودن مقدار فیلد(ها)
درود :
مدیریت تکراری بودن اطلاعات در خود بانک اطلاعاتی وقتی فعال است که شما هنگام طراحی بانک، شناسه بودن آن را تایید کرده باشی .