نمایش نتایج 1 تا 13 از 13

نام تاپیک: حذف رکوردهای درون تیبل

  1. #1

    Arrow حذف رکوردهای درون تیبل

    با سلام
    با دستور زیر رکورد های درون یک تیبل رو پاک میکنم.
    اما چون از حلقه استفاده شده و برنامه باید به اولین رکورد برگردد خیلی سرعت پایین هست .
    کافیه مثلا 500 رکورد وجود داشته باشه دیگه برای پاکسازی باید حدود 30 ثانیه زمان ببره.
    از دوستا سوالم اینه چه روشی رو برای حذف کلی رکوردهای یک تیبل پیشنهاد میکنند که خیلی سریع باشه؟
    ممنون از جوابتون.
    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin
    ADOTable1.First;
    for i:=1 to ADOTable1.RecordCount do begin
    ADOTable1.Delete;
    ADOTable1.Next;
    end;
    end;


  2. #2

    نقل قول: حذف رکوردهای درون تیبل

    درود :
    چرا از دستورات Sql استفاده نمی کنی .
    DELETE FROM Table1

    فکر خوش .

  3. #3

    نقل قول: حذف رکوردهای درون تیبل

    از شئ ADOQuery استفاده کنید و با دستور SQL رکوردها رو حذف کنید ( من تست کردم 1000 رکورد را در کمتر از 1 ثانیه حذف کرد ) :

      ADOQuery1.SQL.Add('Delete * From Table1');
    ADOQuery1.ExecSQL;

  4. #4
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: حذف رکوردهای درون تیبل

    بله همینجور که دوستان گفتن بهترین راه استفاده از کد SQL است اما اگر AdoTable به اشیایی مثل DBGrid متصل نباشه سرعت حذف به این صورت پایین نمیاد.
    درضمن در کدی که نوشتین نیاز به Next نیست.

    موفق باشید.

  5. #5

    نقل قول: حذف رکوردهای درون تیبل

    بله همینجور که دوستان گفتن بهترین راه استفاده از کد SQL است اما اگر AdoTable به اشیایی مثل DBGrid متصل نباشه سرعت حذف به این صورت پایین نمیاد.
    سرعت ربط چندانی به وصل بودن به DBGrid یا وصل نبودن نداره ، شما یک بار با DBGrid و یک بار بدون DBGrid تست کن ، فرقشون 2 ثانیه هم نیست .

  6. #6
    کاربر دائمی آواتار Modernidea
    تاریخ عضویت
    خرداد 1387
    محل زندگی
    »مشهد الرضا«
    پست
    573

    نقل قول: حذف رکوردهای درون تیبل

    نقل قول نوشته شده توسط SilverSoft مشاهده تاپیک
    سرعت ربط چندانی به وصل بودن به DBGrid یا وصل نبودن نداره ، شما یک بار با DBGrid و یک بار بدون DBGrid تست کن ، فرقشون 2 ثانیه هم نیست .
    حق با شماست. حدودا 2-3 ثانیه فرق میکرد.
    من استنباطم بر این بود که وقتی رکورد ها حذف میشن برای نمایش اون Table در DBGrid با حذف هر رکورد پردازشی انجام داده میشه و همین باعث صرف زمان بیشتری برای انجام عملیات حذف و اظافه میشه.

    اگه اشتباه نکنم هرچقدر تعداد کامپوننت های متصل به ADO ای که عملیات حذف رو انجام میدیم بیشتر باشه زمان بیشتری میگیره

    به هر حال ممنون از یادآوریتون.

  7. #7

    Arrow خطا در حذف رکوردهای درون تیبل

    با سلام.
    با راهنمایی دوستان برنامه زیر رو نوشتم.
    در این برنامه ابتدا روی دکمه del کلیک کنید و سپس add میبینید که خطا میده.
    میشه بگید مشکل چیه؟
    فایل های ضمیمه فایل های ضمیمه


  8. #8

    نقل قول: حذف رکوردهای درون تیبل

    با سلام.
    با راهنمایی دوستان برنامه زیر رو نوشتم.
    در این برنامه ابتدا روی دکمه del کلیک کنید و سپس add میبینید که خطا میده.
    میشه بگید مشکل چیه؟
    بعد از ExecSQL باید دوباره ADOQuery رو Open کنید ، مثال :
     if ADOQuery1.RecordCount <> 0 then
    begin
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Append('Delete * From Table1');
    ADOQuery1.ExecSQL;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('Select * From Table1');
    ADOQuery1.Open;
    end;

    موفق باشید ...

  9. #9

    نقل قول: حذف رکوردهای درون تیبل

    درود :
    ADOQuery1.Insert;
    ADOQuery1.FieldByName('nam').AsString:=Edit1.Text;
    ADOQuery1.Post;
    بهتره برای برقرای ارتباط با بانک ها از ADOQuery استفاده نکنی و به جای اون از ADOTable یا ADODataSet استفاده کنی که برای این کار طراحی شده اند .

    ADOQuery بیش تر برای انجام درخواست ها استفاده میشه و به همین خاطر مجبوری دوباری مقدار دهیش کنی .
    بهتره از Query ( پرس و جو ) برای انجام درخواست ها استفاده کنی و نه برای ارتباط دائمی با جداول .
    SQL = Structured "Query" Language ( زبان پرس و جوى ساختارى )

    فکر خوش.
    آخرین ویرایش به وسیله pezhvakco : سه شنبه 31 فروردین 1389 در 17:25 عصر دلیل: نوشتاری

  10. #10

    Arrow نقل قول: حذف رکوردهای درون تیبل

    نقل قول نوشته شده توسط pezhvakco مشاهده تاپیک
    درود :

    بهتره برای برقرای ارتباط با بانک ها از ADOQuery استفاده نکنی و به جای اون از ADOTable یا ADODataSet استفاده کنی که برای این کار طراحی شده اند .

    ADOQuery بیش تر برای انجام درخواست ها استفاده میشه و به همین خاطر مجبوری دوباری مقدار دهیش کنی .
    بهتره از Query ( پرس و جو ) برای انجام درخواست ها استفاده کنی و نه برای ارتباط دائمی با جداول .
    SQL = Structured "Query" Language ( زبان پرس و جوى ساختارى )

    فکر خوش.
    میشه بیشتر توضیح بدید.


  11. #11

    نقل قول: حذف رکوردهای درون تیبل

    یه پایگاه داده Sql داریم و یه زبان برنامه نویسی که برای کار با پایگاه داده استفاده میشه .

    Query ترجمه فارسیش میشه " پرسش " که در اصل از خود Sql گرفته شده : Structured "Query" Language
    در برنامه نویسی پایگاه داده از این امکان برای کار ( پرسش ها و درخواست ها ) با پایگاه داده استفاده میشه و بعد از انجام کار مقدارش صفر میشه تا دستور بعدی .
    به همین خاطر بهتره به از اونی استفاده کنی که برای اون طراحی شده .

    البته برای راحتی کاربر امکانات دیگری ( مانند استفاده شما : برقرای ارتباط دائم با بانک اطلاعاتی ) نیز دارد .

    ADOTable طراحی شده برای برقرای ارتباط دائم با بانک است .
    ADODataset هم برای برقرای ارتباط و هم پرسش از بانک .

    راهنمای بیش تر در کتاب دلفی ، استادان عزیز و پرسش (Query) ...

    فکر خوش .

  12. #12

    نقل قول: حذف رکوردهای درون تیبل

    ممنون از راهنماییتون.
    بنده از access استفاده میکنم.
    این موارد برای اکسس هم صدق می کنه.


  13. #13

    نقل قول: حذف رکوردهای درون تیبل

    درود :
    زبان پرس و جوش (Sql) برای هر پایگاه دادهای کار میکنه .
    فکر خوش .

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

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