صفحه 1 از 2 12 آخرآخر
نمایش نتایج 1 تا 40 از 47

نام تاپیک: این دستور اشتباه درستش چی مشیه؟؟؟

  1. #1
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262

    این دستور اشتباه درستش چی مشیه؟؟؟

    دوستان خوبم سلام.
    شرمنده من همیشه سعی میکنم عنوان تاپیکم گویا باشه اما ایندفه نمی دونستم چی بزارم.
    این دستور اشتباه خودمم میدونم.
    َِ ADOTable1.filter:='ID Like ''%'+edit1.text+'%'''   

    فیلد ID از نوع عددی می باشد برای همین این دستور اشتباه اما من میخواستم بتونم فیلدهای عددی را نیز مانند فیلدهای رشته ای به صورت نسبی (تطبیق جزئی) جستجو کنم من الان چند تا تاپیک برای نوشتن یک برنامه سرچ تو بانک ایجاد کردم اما جواب درست نگرفتم.
    دوستان عزیز خواهش میکنم مارو هم راهنمایی بفرمایند.
    فداتون.

  2. #2
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    بتمن جان سلام.
    این کد صد در صد غلطه اصلا کاری انجام نمیده البته ببخشید اینقدر صریح حرف میزنم.
    اما آخه کجای دنیا دیدی که یه عدد و با یک رشته با عملگر + کنار هم گذاشت کاری که شما تو کدتون با تابع StrToInt انجام دادید.
    می دونم که حواست نبوده اما دفعه بعد مواظب باش که روت یه جور دیگه حساب نشه.
    من با این دستور خیلی وقته آشنا هستم اما میدونی مشکل کجاست اینه که ممکن کاربر داخل Edit1 رشته وارد کنه اونوقته که برنامه خطا میده در واقع میخواستم کاری کنم که با یک edit هم بین فیلدهای عددی و هم بین فیلدهای رشته ای جستجو کند.
    فداتون.

  3. #3
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    می توانی به جای استفاده از دستور در Filterآن را در ADO.SQL.Textبنویسی و قبل از مقایسه آن را تبدیل کنید.

    ADO.Sql.Text := 'Select * From Tbl_Test Where Cast(ID As NvarChar(10)) Like ''%'+Edit.Text+'%''';

    موفق باشید

  4. #4
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    نقل قول نوشته شده توسط SYNDROME مشاهده تاپیک
    با سلام
    می توانی به جای استفاده از دستور در Filterآن را در ADO.SQL.Textبنویسی و قبل از مقایسه آن را تبدیل کنید.

    ADO.Sql.Text := 'Select * From Tbl_Test Where Cast(ID As NvarChar(10)) Like ''%'+Edit.Text+'%''';

    موفق باشید
    سیندروم جان:
    دستور فیلتر از اونجایی که جزو متدهای استاندارد دلفی هست کارایی و مزایای بیشتری داره البته میدونم که دستورات sql فوق العاده هستند اما بعضی جاها دستور فیلتر فوق العاده تر عمل میکند.
    درضمن دستورات sql تفاوتی بین اعداد و ذشته قائل نمیشن و اینهم یکی از مزایای اونه و فکر نمی کنم برای این کار نیاز به توایع اضفی باشه.
    اگه میتونی درباره دستور sql که بالا نوشتی یکم بیشتر توضیح بده ازت ممنونم.مثلا کار تابع cast چیه؟؟؟

  5. #5
    کاربر دائمی آواتار Batman
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    ناكجاآباد
    پست
    887
    نقل قول نوشته شده توسط Rocker مشاهده تاپیک
    بتمن جان سلام.
    این کد صد در صد غلطه اصلا کاری انجام نمیده البته ببخشید اینقدر صریح حرف میزنم.
    اما آخه کجای دنیا دیدی که یه عدد و با یک رشته با عملگر + کنار هم گذاشت کاری که شما تو کدتون با تابع StrToInt انجام دادید.
    می دونم که حواست نبوده اما دفعه بعد مواظب باش که روت یه جور دیگه حساب نشه.
    من با این دستور خیلی وقته آشنا هستم اما میدونی مشکل کجاست اینه که ممکن کاربر داخل Edit1 رشته وارد کنه اونوقته که برنامه خطا میده در واقع میخواستم کاری کنم که با یک edit هم بین فیلدهای عددی و هم بین فیلدهای رشته ای جستجو کند.
    فداتون.
    سلام Rocker جون
    واقعا عذر میخوام اصلا نمیدونم چرا یه لحظه فکر نکردم و چنین پست احمقانه ای رو نوشتم
    در عین حال بعد از گفتگوی تلفنی که با جناب syndrome داشم به این نتیجه رسیدیم که دستور ado.filtered با چیزی که شما میخواین منافات داره بنابراین من یه برنامه برات میذارم که تست شده هستش دو تافیلد داره id از نوع number و family از نوع text دقیقا همون کدی رو که خودت گذاشتی من هم استفاده کردم و هیچ مشکلی نداره هم برای رشته و هم برای اعداد جستجو رو به صورت کامل انجام میده
    بازم عذر میخوام آدمیزاده دیگه (بشر جایز الخطا هستش)
    فایل های ضمیمه فایل های ضمیمه

  6. #6
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    نقل قول نوشته شده توسط Rocker مشاهده تاپیک
    اگه میتونی درباره دستور sql که بالا نوشتی یکم بیشتر توضیح بده ازت ممنونم.مثلا کار تابع cast چیه؟؟؟
    دستور Castهمان تبدیل نوع است.من در بالا عدد را به یک رشته تبدیل کردم.
    البته می توانی دستور Castرا هم ننویسی.
    شما در دستور Filterنمی توانید برای یک مقدار عددی Like و سپس % استفاده کنید.
    موفق باشید

  7. #7
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262

    Wink

    نقل قول نوشته شده توسط Batman مشاهده تاپیک
    سلام Rocker جون
    واقعا عذر میخوام اصلا نمیدونم چرا یه لحظه فکر نکردم و چنین پست احمقانه ای رو نوشتم
    در عین حال بعد از گفتگوی تلفنی که با جناب syndrome داشم به این نتیجه رسیدیم که دستور ado.filtered با چیزی که شما میخواین منافات داره بنابراین من یه برنامه برات میذارم که تست شده هستش دو تافیلد داره id از نوع number و family از نوع text دقیقا همون کدی رو که خودت گذاشتی من هم استفاده کردم و هیچ مشکلی نداره هم برای رشته و هم برای اعداد جستجو رو به صورت کامل انجام میده
    بازم عذر میخوام آدمیزاده دیگه (بشر جایز الخطا هستش)
    سیندروم جان.
    از اینکه به فکر مایی خیلی خیلی ارت ممنونم اما من خودم هم قبلا از این کد استفاده کردم(برنامه test رو میگم) اما باز به این نتیجه رسیدم که از دستور فیلتر استفده کنم میدونی علتش چیه؟ به خاطر اینکه میخواستم از متد های Findfirst,findnext بهره ببرم اما انگار با این توصیفات شما دوستان قرار نیست که بشه آخه این متدها خیلی مفید هستند.
    بازم از زحماتت خیلی خیلی ممونونم دمت گرم پسر بد.
    آقای بتمن عزیز امیدوارم که همیشه خفاش خوبی باشی از شما دوست عزیز هم خیلی ممونم دمت گرم.
    حالا من هنوز امیدوارم آخه تا الان که دلفی روی منو زمین نزده بازم از دوستان خواهش میکنم به این نکته ریز اما اساسی (البته از نظر بنده) توجه کنند و یه راهی جلوی پای ما بزارن.
    فداتون.

  8. #8
    کد شما به این صورت هیچ مشکلی ندارد :
    Var I:Integer;
    begin
    If not TryStrToInt(Edit1.Text,i) then
    exit;
    ADOTable1.Filtered:=False;
    ADOTable1.Filter:='ID like '+Edit1.Text;
    ADOTable1.Filtered:=true;
    end;

  9. #9
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    خدمت آقا آرمان گل
    نقل قول نوشته شده توسط Arman_1367 مشاهده تاپیک
    کد شما به این صورت هیچ مشکلی ندارد :
    Var I:Integer;
    begin
    If not TryStrToInt(Edit1.Text,i) then
    exit;
    ADOTable1.Filtered:=False;
    ADOTable1.Filter:='ID like '+Edit1.Text;
    ADOTable1.Filtered:=true;
    end;
    دستور شما درست کار می کند و مانند "=" عمل می کند ولی دوستمان به دنبال استفاده از "%" در دو طرف مقدار فوق است.
    موفق باشید

  10. #10
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262

    آرمان عزیز

    آرمان جان سلام از این که تو تاپیک من شرکت کردی ازت ممنونم آره دوست عزیزم آقای سیندروم راست میگه من میخوام اعداد رو هم به صورت تطبیق جزئی با % بررسی کنم اگه این مشکل حل بشه به جرات میتونم بگه که میتونیم یک برنامه سرچ قوی و کامل برای بانکمون بنویسیم.
    خوب مسئله شرچ هم مسئله ی بی اهمیتی نیست انشالله وقتی یک کار بهتون بخوره می فهمید.
    من هنوزم امیدوارم به دلفی و دلفی کاران عزیز
    فداتون

  11. #11
    به این صورت بنویسید

     
    Query1.Sql.Text:='
    Select * From Table Where I Like
    '+QutedStr('%'+InNum+'%')

  12. #12
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    نقل قول نوشته شده توسط JavanSoft مشاهده تاپیک
    به این صورت بنویسید

     
    Query1.Sql.Text:='
    Select * From Table Where I Like
    '+QutedStr('%'+InNum+'%')
    جناب جوان سافت عزیز از راهنماییتون متشکرم.
    اما خواستم بگم علت اسرار بنده به دستور Filter استفاده از متدهای Findfirst و.... اونهست .
    آیا راهی مشابه هم وجود دارد ممونم از راهنماییتون.
    فداتون.

  13. #13
    فکر کنم دستور درست این باشه
    AdoTable.filter = 'cast (id as varchar(50 )) Like ''%' + Edit1.text + '''%' 000
    آخرین ویرایش به وسیله محمود رضا : سه شنبه 06 شهریور 1386 در 10:08 صبح دلیل: اشکال تايپی

  14. #14
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    نقل قول نوشته شده توسط محمود رضا مشاهده تاپیک
    فکر کنم دستور درست این باشه
    AdoTable.filter = 'cast (id as varchar(50 )) Like ''%' + Edit1.text + '''%' 000
    آقا محمود سلام.
    این دستور هم خطا میده در واقع این دستور برای sql هستش ته برای خاصیت فیلتر اما من هم تو این فکرم که مثل دستورات sql در خاصیت filter هم بتونم فیلدهای از نوع عددی را به رشته ای تبدیل کنم فکر میکنم یه همچین راهی باشه البه امیدوارم.
    راستی قضیه اون سه تا صفر آخر چیه باعث ارور میشد.
    دوستان تو روخدا نزارید من نا امید بشم.

  15. #15
    در خاصیت OnFilterRecord از کمپاننت ADoTable از این کد استفاده کن و مقدار Filtered را هم True بکن .
    procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet;
    var Accept: Boolean);
    begin
    Accept:=pos(edit1.text,DataSet.fieldbyname('ID').A sString)>0;
    end;

  16. #16
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    فکر کنم من هنوز مقصودم رو درست نگفتم.
    میدونید من میخوام چی کار کنم میخوام یک برنامه سرچ بنویسم که بدون اینکه تمام رکوردهای جدول را فیلتر کند و یا به عبارت دیگر تمام رکوردها را نمایش دهد اما مثلا کاربر با زدن دکمه Find Next بتواند رکوردها بعدی طبق آن کلمه کلیدی که در edit1.text وارد کرده نشان دهد.
    اما تمام این راه های که دوستان تا الان گفته اند در واقع جدول را فیلتر می کند و این کار برای جستجو در بانک درست نیست!!!
    اصلا یه سئوال:
    آیا شما وقتی در برنامه اکسس جستجو می کنید برنامه میاد یکدفعه تمام رکوردهایی که با کلمه کلیدیی که شما وارد کرده اید تطابق دارد را به شما نشان میدهد؟
    خوب جواب مسلما خیر است.
    بلکه با زدن مکرر روی کلید find next شما را به رکورد مورد نظرتان میرساند درست مثل جستجو در تمام برنامه ها چه برنامه های ویرایش متن چه دیتابیسها.
    باز هم همه دوستان محترم متشکرم که قصد کمک کردن دارند.
    فداتون.

  17. #17
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262

    طعنه میزنید؟؟؟

    نقل قول نوشته شده توسط Arman_1367 مشاهده تاپیک
    ببخشید تا حالا کسی به من نگفته بود از Filter میشه برای:

    استفاده کرد.
    آقا آرمان فکر کنم تو این پست به من قصد طعنه زدن داشته باشید آخه یه جوری گفتید که هر کسی اینطور برداشت میکنه.
    اگه علت طعنه زدن شما اینه که من گفتم "مثل تمام برنامه های ویرایش متن..." منظورم این نبود که میشه با دستور Filter در متن جستجو کرد اون فقط و فقط یک مثال بود نه یک حقیقت.
    اینجور پستهای طعنه آمیز در شعونات این وب سایت نیست قبل از طعنه زدن منظور را خوب درک کنید.
    متشکرم.
    فداتون.

  18. #18
    آخه یه جوری گفتید که هر کسی اینطور برداشت میکنه.
    نه من قصد طعنه زدن نداشتم من تا قبل از پست قبلی شما فکر می کردم می خواهید همه رکوردهایی که با عدد مورد نظر مطابقت داره را نمایش بدهید برای همین راه دوم را گفتم اما شما بدجوری کنایه آمیز توهین کردید.

    دوستان بزارید چند نکته را متذکر بشم فکر کنم کمی ذهنتون رو برای نوشتن برنامه های بهتر و قوی تر مشغول کنه.
    در ضمن من اصلاً کاری به برنامه ویرایش متن و ... نداشتم.

  19. #19
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    نقل قول نوشته شده توسط Arman_1367 مشاهده تاپیک
    نه من قصد طعنه زدن نداشتم من تا قبل از پست قبلی شما فکر می کردم می خواهید همه رکوردهایی که با عدد مورد نظر مطابقت داره را نمایش بدهید برای همین راه دوم را گفتم اما شما بدجوری کنایه آمیز توهین کردید.



    در ضمن من اصلاً کاری به برنامه ویرایش متن و ... نداشتم.
    آرمان عزیز:
    میدونم اینجا جای این حرفا نیست اما تو این وب سایت ما فقط با متن با هم حرف میزنیم و مکالمه صوتی نداریم خوب این دوتا با هم خیلی فرق دارن بنابراین باید خیلی مواظب باشیم تا حرفامون رو طوری بنویسیم که برداشت دو پهلو از اونها نشه.
    من به هیچ وجه به کسی توهین نکردم شاید خودم همون قضیه دوپهلو نوشتنرو رعایت نکردم.
    خوب حالا که میگید منظورتون طعنه زدن نیست من از شما مغذرت میخوام.
    حالا میتونی مارو کمک کنی آرمان جان.

  20. #20
    ببینید من این راه حل به نظرم می رسه البته اگر اسرار خاصی به استفاده از خاصیت Filter ندارید:

    unit Unit2;

    interface

    uses
    Classes, ADODB, DB;

    type
    TMyThread = class(TThread)
    private
    { Private declarations }
    protected
    procedure Execute; override;
    procedure ADOTableFilterRecord(DataSet: TDataSet;var Accept: Boolean);
    public
    STbl:TADOTable;
    FldName:String;
    SearchString:String;
    end;

    implementation


    { Important: Methods and properties of objects in visual components can only be
    used in a method called using Synchronize, for example,

    Synchronize(UpdateCaption);

    and UpdateCaption could look like,

    procedure TMyThread.UpdateCaption;
    begin
    Form1.Caption := 'Updated in a thread';
    end; }

    { TMyThread }

    procedure TMyThread.Execute;
    Var tbl:TADOTable;
    begin
    { Place thread code here }
    tbl:=TADOTable.Create(nil);
    tbl.Connection:=STbl.Connection;
    tbl.TableName:=STbl.TableName;
    tbl.Open;
    tbl.OnFilterRecord:=ADOTableFilterRecord;
    tbl.Filtered:=true;
    tbl.First;
    //
    if Pos(SearchString,STbl.FieldByName(FldName).AsStrin g)>0 then
    tbl.RecNo:=STbl.RecNo
    else
    begin
    tbl.RecNo:=STbl.RecNo;
    while Pos(SearchString,tbl.FieldByName(FldName).AsString )=0 do
    tbl.Next;
    tbl.Prior;
    end;
    //
    tbl.Next;
    STbl.RecNo:=tbl.RecNo;
    tbl.Close;
    tbl.Free;
    end;
    procedure TMyThread.ADOTableFilterRecord(DataSet: TDataSet;
    var Accept: Boolean);
    begin
    Accept:=(Pos(SearchString,DataSet.FieldByName(FldN ame).AsString)>0);
    end;

    end.


    این یونیت را در برنامه قرار دهید و به روش زیر از اون استفاده کنید:
    Var T:TMyThread;
    begin
    T:=TMyThread.Create(true);
    T.STbl:=ADOTable1;
    T.FldName:='ID';
    T.SearchString:=Edit1.Text;
    t.Suspended:=false;
    end;


    البته این کد که نوشتم خیلی غیر حرفه ای هست و برای استفاده درست و حسابی باید با مبحث MultiThreding آشنایی داشته باشید اما خوب کار راه بیانداز هست دلیل استفاده از روش MultiThreding هم این هست که ممکنه بین رکوردی که الآن در ان هستید و رکورد بعدی که قرار است پیدا شود 5000 یا بیشتر فاصله باشه که با حلقه طول می کشه جست و جو کنه برای همین در صورت استفاده از روش معمولی برنامه تا پایان حلقه قفل می شه.اما با این روش نه قفل نمی شه.

  21. #21
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    از دوست عزیزم آرمان خیلی خیلی متشکرم.
    اما انگار باید برم سراغ همون روشهای من درآوردی و سرعت پایین(منظورم روشهای خودم هست دوستان به خود نگیرند)
    البته آقای آرمان از تکنیک تقریبا پیشرفته ای استفاده کردند اما همون طور که خودشون ذکر کردن اگه تعداد رکوردها زیاد باشه که مسلما هست سرعت برنامه خیلی پایین میاد.
    فکر کنم دیگه دارم به این نتیجه میرسم که دلفی داره رومو زمین میندازه به نظر من که این میتونه یک نقطه ضعف برای دلفی باشه با اینکه به نظر ساده و پیش پا افتاده میرسه اماه مهمه چون سرچ در بانک یکی از مسائلی بوده که همیشه مد نظر بوده و همیشه مهم.
    اما بورلند میتونست به خودش یه زحمت بده و یک راهی میزاشت تا بشه در دستور فیلتر فیلدهای نوع عددی رو به رشته تبدیل کرد اونوقت ما دیگه مشکلی نداشتیم آخه این دستور ساده برای فیلدهای رشته ای میتونم به جرات بگم که فوق العاده کار میکنه.
    در آخر باز هم از آرمان عزیز و همه ی دوستان خوبم بی نهایت سپاسگزارم.

  22. #22
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    نقل قول نوشته شده توسط محمود رضا مشاهده تاپیک
    AdoTable.filter = 'cast (id as varchar(50 )) Like ''%' + Edit1.text + '''%' 000
    شما نمی توانید از دستور Cast و بعضی از توابع دیگر SQL نمی توانید در Filterاستفاده کنید.
    موفق باشید

  23. #23
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    این تاپیک در هشت روز گذشته در قسمت بانکهای اطلاعاتی دلفی پر بیننده ترین و پر پست ترین تاپیک بوده امیدوارم برای همه مفید بوده باشه چون دوستان زحمت کشیدن و کدهای مفیدی در اون قرار دادن اما من هنوز به جواب ایده آلم نرسیدم البته منظورم نا سپاسی از زحمات دوستان خوبم نیست بلکه دوستان خیلی هم به من لطف داشتن و ازشون بی نهایت متشکرم شاید هم چیزی که من میخواهم خیلی خاص است و امکان نوشتن آن وجورد ندارد.
    اما من هنوز نا امید نشدم برای همین یه تاپیک دیگه ایجاد کردم با عنوان "تبدیل فیلدهای عددی به رشته ای در خاصیت Filter" اینجوری مشکل رو بهتر و نکته ای تر بیان کردم چون اگه این کار امکان پذیر بشه دیگه مشکلمون برطرف میشه امیدوارم که به درد همه دوستان گلم بخوره.
    فداتون

  24. #24
    کاربر جدید آواتار Maisa pardaz
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    17

    Lightbulb

    نقل قول نوشته شده توسط Rocker مشاهده تاپیک
    دوستان خوبم سلام.
    شرمنده من همیشه سعی میکنم عنوان تاپیکم گویا باشه اما ایندفه نمی دونستم چی بزارم.
    این دستور اشتباه خودمم میدونم.
    َِ ADOTable1.filter:='ID Like ''%'+edit1.text+'%'''   
    فیلد ID از نوع عددی می باشد برای همین این دستور اشتباه اما من میخواستم بتونم فیلدهای عددی را نیز مانند فیلدهای رشته ای به صورت نسبی (تطبیق جزئی) جستجو کنم من الان چند تا تاپیک برای نوشتن یک برنامه سرچ تو بانک ایجاد کردم اما جواب درست نگرفتم.
    دوستان عزیز خواهش میکنم مارو هم راهنمایی بفرمایند.
    فداتون.
    سلام دوست عزیز
    البته نمیدونم کد شما کاملا درسته یا نه کمی شک دارم. ولی یکی از دوستان گفته بود که اگر کسی در Edit به جای عدد حرف وارد کنی نمیشه از کد فوق استفاده کنی، باید بگم که برای اون قضیه میتونی از MaskEdit استفاده کنی و خاصیت EditMask اونو به تعداد رقمهایی که میخواهی عدد 9 را قرار بدی تا از ورود حروف به جای اعداد جلوگیری کنی.
    بعد میتونی از StrToInt با خیال راحت استفاده کنی. در ضمن برای استفاده بهتر از دستور Trim هم اگه استفاده کنی بد نیست. مثلاً:
    StrToInt(Trim(MaskEdit1.Text))

    اینطوری میتونی فضاهای خالی دو طرف رشته رو حذف کنی

    موفق باشی
    آخرین ویرایش به وسیله Maisa pardaz : سه شنبه 06 شهریور 1386 در 15:55 عصر دلیل: توضیحات بیشتر

  25. #25
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    با احترام
    کاربر عزیز Maisa pardaz
    فکر کنم شما کامل این تاپیک را نخوانده اید.
    دوست ما مشکل در جستجو عددی در Filterبا دستور Like به همراه "%" زمانی که فیلد بانک از نوع عددی باشد دارد.
    موفق باشید

  26. #26
    دوستان عزیز اگه اشتباه میگم ببخشید ولی تا اونجا که من تحقیق کردم در ساختار فیلتر از دستور Like و همچنین علامت % نمیشه استفاده کرد ولی در عوض یه روش هست که من تو فیلتر استفاده میکنم اونم استفاده از علامت* میباشد
    Table1.filter:='ID = '+QuotedStr(edit1.text+'*') 

    من بازم تلاشم رو میکنم و جواب رو براتون میزارم
    البته باید بگم که ابن روشم تنها در رشته ها جواب میده

  27. #27
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262

    Smile

    نقل قول نوشته شده توسط Answer مشاهده تاپیک
    دوستان عزیز اگه اشتباه میگم ببخشید ولی تا اونجا که من تحقیق کردم در ساختار فیلتر از دستور Like و همچنین علامت % نمیشه استفاده کرد ولی در عوض یه روش هست که من تو فیلتر استفاده میکنم اونم استفاده از علامت* میباشد
    Table1.filter:='ID = '+QuotedStr(edit1.text+'*') 

    من بازم تلاشم رو میکنم و جواب رو براتون میزارم
    البته باید بگم که ابن روشم تنها در رشته ها جواب میده
    دوست عزیز از علامت * وقتی استفاده میشه که موتور بانک شما از نوع BDE باشه برای موتور بانکهای مایکروسافت و نه فقط ADO برای تطبیق جزئی از همون % استفاده میشه با این حال بازم ازت ممونم که تو این بحث شرکت می کنی.

  28. #28
    از دوست عزیزم آرمان خیلی خیلی متشکرم.
    اما انگار باید برم سراغ همون روشهای من درآوردی و سرعت پایین(منظورم روشهای خودم هست دوستان به خود نگیرند)
    البته آقای آرمان از تکنیک تقریبا پیشرفته ای استفاده کردند اما همون طور که خودشون ذکر کردن اگه تعداد رکوردها زیاد باشه که مسلما هست سرعت برنامه خیلی پایین میاد.
    فکر کنم دیگه دارم به این نتیجه میرسم که دلفی داره رومو زمین میندازه به نظر من که این میتونه یک نقطه ضعف برای دلفی باشه با اینکه به نظر ساده و پیش پا افتاده میرسه اماه مهمه چون سرچ در بانک یکی از مسائلی بوده که همیشه مد نظر بوده و همیشه مهم.
    اما بورلند میتونست به خودش یه زحمت بده و یک راهی میزاشت تا بشه در دستور فیلتر فیلدهای نوع عددی رو به رشته تبدیل کرد اونوقت ما دیگه مشکلی نداشتیم آخه این دستور ساده برای فیلدهای رشته ای میتونم به جرات بگم که فوق العاده کار میکنه.
    در آخر باز هم از آرمان عزیز و همه ی دوستان خوبم بی نهایت سپاسگزارم.
    با سلام

    دوست عزیز اونطوری که که در پست های قبلی گفتید بانک شما بر اساس Access هست خوب فکر می کنید حجم بانک Access ما چقدر می تواند بالا برود یعنی چند تا رکورد.

    دلفی هیچ وقت روی کسی را زمین نمی اندازد بلکه این کم تجربی و بلد نبودن مطالب کافی افراده مثلاً شما فکر می کنید آیا با C#‎ آیا می شه کاری را که می خواهید انجام بدهید مسلماً خیر چون در دلفی هم نتوانسته اید.منظورم از کم تجربه خودم هستم چون هیچ وقت زحمت یادگرفتن ADO را به خودم ندادم همیشه از oracle استفاده کردم.

    راستی من گفتم سرعت پایین منظورم این نبود که برنامه کنده از تکنیک مالتی ترید برای رفع این مشکل استفاده کردم.
    کاشکی یک دور کد را تست می کردید تا الکی نکنید سرعت پایین من همین کد را با یک سیستم p4 با 256 مگ رم تست کردم فاصله 8000 رکورد را در کمتر از 1 ثانیه طی کرد تازه برنامه هم قفل نکرد.


    یا حق

  29. #29
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    نقل قول نوشته شده توسط Arman_1367 مشاهده تاپیک
    با سلام

    دوست عزیز اونطوری که که در پست های قبلی گفتید بانک شما بر اساس Access هست خوب فکر می کنید حجم بانک Access ما چقدر می تواند بالا برود یعنی چند تا رکورد.
    دوست عزیز:
    فکر نمی کنم یه برنامه با بانک اکسس مناسب باشه این بانک به صورت آزمایش در نسخه آلفای برنامه قرار دارد و در نسخه های بتا به بعد قرار که به SQL Server ایمپورت بشه اصلا برنامه ای که بانکش با اکسس نوشته شده باشه اصلا ارزش اینهمه دردسرو داره.

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

    (هرگز نخورد آب زمینی که بلند است
    افتادگی آموز اگر طالب علمی)

    متشکرم

  30. #30
    چه طور می تونم در کریستال ریپورت آدرس تصاویر را از دیتابیس بخونم و تصویر را نمایش دهم .

  31. #31
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    نقل قول نوشته شده توسط fereshtehrahimi مشاهده تاپیک
    چه طور می تونم در کریستال ریپورت آدرس تصاویر را از دیتابیس بخونم و تصویر را نمایش دهم .
    سلام:
    شما اصلا موضوع تاپیک رو خوندید و پست زدید اینجوری هیچ وقت به جوابتون نمی رسید تو این سایت یه بخش برای کار با ابزارهای گزارش گیری وجود دارد در ضمن سرچ کردن توی سایت هم کار بدی نیست.

  32. #32
    کاربر Rocker اطفاً زود نتیجه گیری نکنید بابا منظورم از بی تجربه خودم بود :
    دلفی هیچ وقت روی کسی را زمین نمی اندازد بلکه این کم تجربی و بلد نبودن مطالب کافی افراده مثلاً شما فکر می کنید آیا با C#‎ آیا می شه کاری را که می خواهید انجام بدهید مسلماً خیر چون در دلفی هم نتوانسته اید.منظورم از کم تجربه خودم هستم چون هیچ وقت زحمت یادگرفتن ADO را به خودم ندادم همیشه از oracle استفاده کردم.
    فکر نمی کنم یه برنامه با بانک اکسس مناسب باشه این بانک به صورت آزمایش در نسخه آلفای برنامه قرار دارد و در نسخه های بتا به بعد قرار که به SQL Server ایمپورت بشه اصلا برنامه ای که بانکش با اکسس نوشته شده باشه اصلا ارزش اینهمه دردسرو داره.
    خودتون در یکی از پستهای قبلی گفته بودید خوب حالا کامل متوجه شدم.

    خوب شما که میگید من بی تجربه هستم و اطلاعات کافی در این زمینه ندارم لطف کنید منو راهنمایی کنید تا یک روش بهنیه را پیش بگیرم و بنده را از تجربیاتتون بهره مند سازید.
    من که خودم خیلی با ADO کار نکردم ولی چشم بین دوستان مطرح می کنم اگر راهی بهتر پیدا شد براتون می نویسم.

  33. #33
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    آرمان جان منم زیاد تجربه ندارم منم تازه اولشم من هنوز خودمو برنامه نویس نمی دونم اینم بدون که من هیچ وقت الطاف دوستان رو از یاد نمی برم و حتما جبران میکنم و هر چی بلد باشم خالصانه در اختیارشون میزارم این حد اقل کاری که من میتونم انجام بدم.

  34. #34
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    شما چرا از روش نوشتن دستورات کامل در ADO(مثالی که در اول تاپیک زده شد)استفاده نکرده اید؟
    کاملا مشکل شما را حل می کند.
    موفق باشید

  35. #35
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    نقل قول نوشته شده توسط SYNDROME مشاهده تاپیک
    با سلام
    شما چرا از روش نوشتن دستورات کامل در ADO(مثالی که در اول تاپیک زده شد)استفاده نکرده اید؟
    کاملا مشکل شما را حل می کند.
    موفق باشید
    سیندروم عزیز سلام:
    میشه منظورتو بهتر بگی آخه تو این تاپیک مثال زیاد زده شده شما کدومشون رو میفرمایید.
    اگر منظورتون استفاده از دستورات sql باشه من قبلا مشکلمو بهتون عرض کردم که نمی خوام یکدفعه همه رکوردها رو فبلتر کنم .
    فداتون.

  36. #36
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    نقل قول نوشته شده توسط Rocker مشاهده تاپیک
    اگر منظورتون استفاده از دستورات sql باشه من قبلا مشکلمو بهتون عرض کردم که نمی خوام یکدفعه همه رکوردها رو فبلتر کنم .
    فداتون.
    دوست عزیز شما یک دفعه Selectمورد نظر را می نویسید و بعد در فیلتر عمل فیلترین را انجام می دهد.یعنی در دو مرحله کار را انجام می دهید(دو فیلتر)
    حالا اگر در یک مرحله این فیلتر را انجام دهید(با دستور SQL) با روش قبلی چه فرقی دارد؟
    موفق باشید

  37. #37
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    نقل قول نوشته شده توسط SYNDROME مشاهده تاپیک
    با سلام

    دوست عزیز شما یک دفعه Selectمورد نظر را می نویسید و بعد در فیلتر عمل فیلترین را انجام می دهد.یعنی در دو مرحله کار را انجام می دهید(دو فیلتر)
    حالا اگر در یک مرحله این فیلتر را انجام دهید(با دستور SQL) با روش قبلی چه فرقی دارد؟
    موفق باشید
    سیندروم جان اینو ختما امتحان کن.
    خاصیت filter رو تنظیم کن.
    حالا بلافاصله متد findfirst را اجرا کن.
    در یک باتن دیگه هم متد findnext را پشت سر هم اجرا کن.
    نتیجه را دیدی؟ اصلا جدول فیلتر شد؟؟
    من یه همچین چیزی میخوام اما دستورات sql همه را یک جا نمایش می دهند.
    راستی اگه میشه در مورد آخرین پستت واضحتر توضیح بده متشکرم.

  38. #38
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    آقا توروخدا این تاپیکو فراموش نکنید من هنوز به جوابم نرسیدم آقای سیندروم دیگه جواب ندادید.

  39. #39
    کاربر دائمی آواتار SYNDROME
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    تهران
    پست
    2,814
    با سلام
    نقل قول نوشته شده توسط Rocker مشاهده تاپیک
    من یه همچین چیزی میخوام اما دستورات sql همه را یک جا نمایش می دهند.
    راستی اگه میشه در مورد آخرین پستت واضحتر توضیح بده متشکرم.
    راستش را بخواهید من مفهوم کلمات شما را نفهمیدن.
    یعنی چی که دستورات SQL همه چیز را یک جا نمایش می دهد با استفاده از شرطها (Where)شما می توانید فیلتر کنید.
    دقیقاً بگویید چه می خواهید.
    موفق باشید

  40. #40
    کاربر دائمی آواتار Rocker
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    پست
    262
    نقل قول نوشته شده توسط SYNDROME مشاهده تاپیک
    با سلام

    راستش را بخواهید من مفهوم کلمات شما را نفهمیدن.
    یعنی چی که دستورات SQL همه چیز را یک جا نمایش می دهد با استفاده از شرطها (Where)شما می توانید فیلتر کنید.
    دقیقاً بگویید چه می خواهید.
    موفق باشید
    سیندروم جان:
    فرض کن شما دنبال رکوردهایی میگردی که فیلد نام آنها "علی" است خوب وقتی که ما از این دستورات استفاده کنیم برنامه به صورت یک جا تمام رکوردهایی که فیلد نام آنها برابر "علی" هست رو نشون میده من اینو نمی خوام بلکه میخوام کاربر تمام رکوردها رو ببینه و مثلا با زدن کلید Find Next برنامه, کاربر رو به رکورد بعدی که فیلد نام اون "علی" هست منتقل کنه یه چیز تو مایه های برنامه سرچ اکسس و ....
    الان فکر کنم منظورمو بهتر گفتم.

صفحه 1 از 2 12 آخرآخر

تاپیک های مشابه

  1. سوال در مورد چگونگی محدود کردن گزارش؟؟؟
    نوشته شده توسط atn_1366 در بخش Access
    پاسخ: 14
    آخرین پست: یک شنبه 22 اردیبهشت 1387, 14:24 عصر
  2. اپلود سایت روی هاست؟؟؟
    نوشته شده توسط fateme_shourabi در بخش طراحی وب (Web Design)
    پاسخ: 4
    آخرین پست: سه شنبه 03 بهمن 1385, 13:27 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •