PDA

View Full Version : CachedUpdate ومشکل جستجو وآزمایش OldValue - CurValue و NewV



احمد
جمعه 23 مرداد 1383, 11:34 صبح
:?: من یک کنترل DBEditSN در فرم دارم که از طریق Query1 به جدول متصل است. این فیلد در جدول بنام SerialNum و یکتا میباشد.
برای کنترل یکتایی فیلد Query1.CachedUpdate:=True کردم وقبل از آنکه DBNavigator1 که متصل به همین کوئیری است اجرا شود قطعه زیر اجرا میشود

procedure TInsertNew.DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
var
V : Variant;
begin
Txt := Trim(dbeditSN.Text);
V := Query1.Lookup('SerialNum',Txt,'Name');
if not VarIsNull(V) then
begin
// abort the post action to the dataset
StrMsg := 'سریال تکراری است';
MessageDlg( StrMsg , mtError , [mbOk],0);
Abort ;
dbeditSN.SetFocus ;
Exit ;
end;
end;
اما مشکل اینجاست که اولا دستور جستجو رکورد را پیدا نمیکند دومامقادیر قبلی OldValueوجاری CurValueوجدید NewValue که در حین خطازدایی در پنجره Evalute/Modify نتیج زیر حاصل شد

Query1.Lookup('SerialNum',Txt,'Name');
Error: "Delphi exception EVariantBadVarTypeError at $80BF949"
Query1.FieldByName('SrialNum').OldValue;
Error: "Function to be called, TField.GetOldValue, was eliminated by linker"
مشکل چیست لطفا راهنمایی کنید .
ضمنا نمیخواهم ازTClienDataSet استفاده کنم.
ممنون