View Full Version : سوال: خطا در فیلتر کردن بانک SQL در دلفی
Mazdeh
پنج شنبه 20 مرداد 1390, 19:00 عصر
سلام دوستان
من دو Table دارم که یکی نام و کد گروه کالا را نگهداری می کند و یکی دیگر نام و کد کالاها و شماره انبار را نگهداری می کند این دو Table را در دلفی با خاصیت Mastercode و Mastersorce به هم ربط داده ام به طوری که با حرکت کردن در گروه کالاها زیر گروه های همان گروه را نمایش می دهد. حال می خواهم با شماره انیار اینها را فیلتر کنم (در هنگام فاکتور زدن) ولی پیغام خطای مبنی بر فیلتر برای جزئیات جدول نمی تواند اجرا شود را نمایش می دهد.
Filter Propetion cannot use for detail Table
خواهشمندم مرا راهنمایی کنید.
یوسف زالی
جمعه 21 مرداد 1390, 00:35 صبح
احتمالا دارید جدول دیتیل رو فیلتر می کنید.
فقط جدول مستر رو فیلتر کنید.
Mazdeh
جمعه 21 مرداد 1390, 04:50 صبح
مي بخشيد دوست من، من بايد جدول ديتيل رو فيلتر كنم چون اطلاعات كالاها در اين Table است.
آيا امكان انجام دادن اين كار هست؟
یوسف زالی
جمعه 21 مرداد 1390, 05:29 صبح
برای این کار باید از رویداد OnFilterRecord استفاده کنید.
خاصیت Filtered هم true باشد:
Accept := ADOTable2.FieldByName('GoodSN').Value = 72; // sample
Mazdeh
شنبه 22 مرداد 1390, 00:11 صبح
مي شه بيشتر توضيح بديد
یوسف زالی
شنبه 22 مرداد 1390, 00:32 صبح
ببینید هر ADODataSet یک رویداد داره به اسم OnFilterRecord
در اون متغیری هست به اسم Accept
این رویداد برای هر ردیف رکورد فراخوانی میشه و اگر Accept برابر true نباشه فیلتر میشه.
همه اینها مشروط به filtered بودن اون هست.
حالا شما میای و کد فیلتر رو در اون می نویسی.
مثل کدی که من گذاشتم.
کجاش رو مشکل دارید دقیقا؟
hassan p.b
چهارشنبه 11 آذر 1394, 18:39 عصر
سلام
این پست کمی قدیمی است ولی سوالی دارم وقتی کاراکتر ها کوچک و بزرگ هستند فیلتر درست در نمی آید مثلا در جدول اینگونه نوشته باشیم:
Table ودر فیلتر بنویسیم table یا TABLE جدول خالی در می اید و دچار خطا میشه!
چطور کاری کنیم به بزرگی و کوچکی حروف حساس نباشه چون معلوم نیست در جدول هم چگونه نوشته شده!
مرسی
حسن
hassan p.b
چهارشنبه 11 آذر 1394, 18:45 عصر
دستور کار شده:
procedure TForm1.ADOQuery2FilterRecord(DataSet: TDataSet;
var Accept: Boolean);
begin
ACCEPT:= (
(FORM1.Edit1.Text='')OR
(POS(FORM1.Edit1.Text,FORM1.ADOQuery2.FIELDBYNAME( 'NAME').AsString)>0))
end;
یوسف زالی
چهارشنبه 11 آذر 1394, 23:44 عصر
هر دو طرف رو uppercase کنید یا اینکه با دستور sametext مقایسه رو انجام بدید.
hassan p.b
پنج شنبه 12 آذر 1394, 00:19 صبح
سلام
ممنون وقت گذاشتید منظور جدول و box که اطلاعات را وارد می کنیم برای فیلتر شدن
مرسی
hassan p.b
پنج شنبه 12 آذر 1394, 00:54 صبح
نتونستم اطلاعات خوانده شده از جدول را Uppercase کنم تجربه ای هم در دستور sametext ندارم لطفا راهنمایی کنید
مرسی
حسن
hassan p.b
جمعه 13 آذر 1394, 11:41 صبح
در پستی دیدم با دستورات
LCASE()
MID()
می توان فیلد ها را برزگ و کوچک کرد منظور کاراکترهای ذخیره شده ولی این دستورات چگونه نوشته می شونند
مرسی
hassan p.b
جمعه 13 آذر 1394, 14:31 عصر
سوال دیگه:
چطور می توان بعد از فیلتر در TREEVIEW کره ها باز شونند البته اتوماتیک:
مثل تصویر زیر
ممنون
hassan p.b
جمعه 13 آذر 1394, 16:23 عصر
سلام
تونستم اینکار رو بکنم ولی:
procedure TForm1.Button6Click(Sender: TObject);
VAR
J,I,K:INTEGER;
begin
K:=FORM1.ADOQuery1.RecordCount;
for I := 0 to K do
BEGIN
J:=FORM1.TreeView1.Items.Count;
SHOWMESSAGE(INTTOSTR(J));
FORM1.TreeView1.Items.Item[0].Expand(TRUE);
حال وقتی جستجو می کنم
در واقع ایتم در TREEVIEW صفر هست و حلقه برای EXPAND کردن کره ها خطا می ده
مرسی
لطفا راهنمایی کنید
حسن
hassan p.b
جمعه 13 آذر 1394, 16:25 عصر
مورد دوم:
در فیلتر جدول با دستور LIKE وقتی مورد در جدول نباشه خطا می ده!
شکل دستور:
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQUERY2.SQL.Add(('select * from SUBMENUE where name like "'+Edit1.Text+'%"'));
ADOQuery2.Open;
FORM1.TreeView1.Items.Clear;
FORM1.Timer6.Enabled:=TRUE;
چطور فیلتر را تنظیم کنیم که اگه مورد جستجو در جدول نباشه اتفاقی هم نیفته!
مرسی
حسن
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.