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

نام تاپیک: لطفا" نظر بدهید (ساخت جداول موقت)

  1. #1
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    195

    لطفا" نظر بدهید (ساخت جداول موقت)

    سلام
    من در حال نوشتن یک برنامه database با استفاده از Sql server هستم (تحت شبکه)
    در بعضی مواقع احتیاج میشه اطلاعات را اول در یک جدول بصورت TEMP ذخیره کنم و مثلا پس از فشار دکمه روی این اطالاعات پردازشهایی انجام بشه و سپس در جداول نهایی ذخیره بشن - مثل فاکتور خرید و فروش

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

    1)برای Temp از جداول Temporary (مثلا Create Table #TMP) در خود Sql Server استفاده کنم

    2)یک جدول معمولی در بانک خودم طراحی کنم و از اون به عنوان Temp استفاده بکنم

    3) یکسری فایل از نوع مثلا Paradox در کامپیوتر های client و به صورت Local اطلاعات موقت را نگهداری کنند و در صورت لزوم اطلاعات را برای سرور ارسال کنند


    در ضمن اگه روش بهتری هم بلد هستید لطفا" به من هم یاد بدید

    ممنون

  2. #2
    سلام
    می تونم قبل از هر چیز بپرسم اصلا چرا به جدول temp احتیاج دارین؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    123
    من شخصا روش دوم را برای این کار انجام می هم . اما نمی دونم بهترین روش هست یا نه ؟ :roll:

  4. #4
    من Virtual Table از Sdac را پیشنهاد می کنم
    همان راه اول است اما در شبکه با سرعت عالی

  5. #5
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    195
    جدول موقت؟

    مثلا در فاکتور ابتدا کاربر میاد اقلام مورد نظر را با قیمت خاص و تعداد خاص انتخاب میکنه خوب این اقلام را در یک جدول موقت ذخیره میکنم
    حالا اگر دکمه ذخیره یا صدور را فشار داد این جدول را به جدول اصلی اضافه میکم وگرنه جدول موقت را خالی میکنم

    شما روش دیگه ای بلدی؟

  6. #6
    با اجازه اساتید
    فکر کنم روش بهتری هم باشه استفاده از Transaction که دقیقا برای این کار است
    و به راحتی می توانید بدون هیچ درد سری از اون استفاده کنید

    ایراد ما دلفی کارا (البته منظورم اساتید بزرگوار نیست منظور ما مبتدی ها ) استفاده نکردن از این کار (Transaction) است که اگر اصولی نگاه کنیم باید در تمام فرمها و .... از این روش استفاده کنیم
    که اینم بگم من خودم برای این کارا حوصلم نمی کشه ولی یک امکان بسیار به درد بخور است

    موفق باشید 8)

  7. #7
    کاربر دائمی
    تاریخ عضویت
    دی 1382
    محل زندگی
    پشت كامپيوتر
    پست
    381
    راستش دقیقا نمی دونم چیکار می خواهی بکنی ولی برای قیمت و کالا و غیره بهتر است ذخیره در Client سپس به سرور بفرستی (اگر تعداد کلاینتها زیاد باشدو استفاده از سرور هم)
    من در یک برنامه ای از یک TStringGrid استفاده می کردم مقادیر را میگرفتم بعد انتقال می دادم نیازی به جدول هم نبود
    امیدوارم منظورتان را فهمیده باشم

  8. #8
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    123
    آقای Omidsm ممکنه در مورد این Transaction ،بیشتر توضیح بدید .

  9. #9
    با اجازه بزرگترا
    Transaction در هر حالتی که با دیتا بیس (اوراکل و اسکیو ال سرور)کار می کنیم وجود دارند ولی ما متوجه کار آن نمی شویم چون به صورت ضمنی و خودکار اجرا می شوند ولی با این حال ما می توانیم کار آنها را به دست گرفته و خودمان کنترلشان کنیم که در همه کتابهای اوراکل و اسکیو ال سرور توضیحاتی داده است کار اصلی ترانزکشن پاپین آوردن ترافیک شبکه است و همچنین مواردی که ما می خواهیم مجموعه کار ها با هم ذخیره شوند یا اصلا ذخیره نشوند مثل همین مورد دوستمان . آیا این دقیقا کاری نیست که شما می خواهید انجام دهید؟
    ولی دلفی خود نوعی ترانزکشن دارد که با true کردن CachedUpdates در TTable امکان پذیر است و دو تابع اصلی مرتبط با آن ApplyUpdates و CancelUpdates هستند
    به توضیحات help دلفی در مورد CachedUpdates نگاه کنید
    Specifies whether cached updates are enabled for a dataset.

    property CachedUpdates: Boolean;

    Description

    CachedUpdates enables or disables the use of cached updates for a dataset. If CachedUpdates is True, cached updates are enabled. If CachedUpdates is False, cached updates are disabled.

    When cached updates are enabled, updates to a dataset (such as posting changes, inserting new records, or deleting records), are stored in an internal cache on the client machine instead of being written directly to the dataset’s underlying database tables. When changes are complete, an application writes all cached changes to the database in the context of a single transaction.

    Cached updates are most useful to client applications in two-tiered applications. The main benefits of enabling cached updates are:

    Fewer transactions and shorter transaction times.
    Minimization of network traffic.

    The potential drawbacks of enabling cached updates are:

    Other applications can access and change the actual data on the server while users are editing local copies of the data, resulting in an update conflict when cached updates are applied to the database.
    Other applications cannot access data changes made by an application until its cached updates are applied to the database.

    Note: Instead of using cached updates, applications can obtain the same benefits with greater control by using a client dataset and a provider component.
    Note: When cached updates are enabled, data changes are stored in local memory. The storage medium is a Paradox format in-memory table. This has implications for applications run in a network environment in that the NET DIR parameter for the Borland Database Engine (BDE) driver for Paradox needs to be set -- even though the application may be designed to use other database types. Failure to properly set this parameter can result in an EDBEngineError exception. There are two ways to set NET DIR. One is through the BDE configuration utility BDE Administrator (described in the BDE Administrator online help). The other way is through the TSession.NetFileDir property.


    موفق باشید

  10. #10
    البته بجز CachedUpdates در دلفی از راه دیگری نیز می توان استفاده کرد که این کلی تره


    از متد StartTransaction در TDATABASE جهت ایجاد ترانزکشن و از متد های Rollback و Commit جهت ذخیره یا انصراف از تغییرات استفاده کرد

    به help خود دلفی توجه کنید

    Begins a new transaction against the database server.

    procedure StartTransaction;

    Description

    Call StartTransaction to begin a new transaction against the database server. Before calling StartTransaction, an application should check the status of the InTransaction property and adjust the setting of the TransIsolation property as desired. If InTransaction is True, indicating that a transaction is already in progress, a subsequent call to StartTransaction without first calling Commit or Rollback to end the current transaction raises an exception.

    Updates, insertions, and deletions that take place after a call to StartTransaction are held by the server until an application calls Commit to save the changes or Rollback is to cancel them.

  11. #11
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    پست
    195
    mr Omidsm
    اگه من درست متوجه شده باشم شما پیشنهاد میکنید که ابتدا سرور خودم را به حالت Start Trans ببرم سپس داده هایم را در جداول اصلی ذخیره کنم
    اگر کاربر موافق به ثبت عملیات بود Commit وگرنه Rollbak و این که این شروع و ثبت تراکنش را از سطح application انجام بدهم


    ولی اگه با اضافه شدن هر رکورد به جدول اصلی قرار باشه تعدادی عملیات بصورت Triggerو Procedure روی دادها انجام بشن و درضمن برنامه هم همزمان توسط چند کاربر در کلاینتها در حال کار باشه و باز هم در ضمن اگر application بصورت MDI ساخته شده باشه یعنی کاربرها ممکنه با هم چندین فرم را باز کنن(چندین تراکنش را آغاز کنن) و انها را به پایان نرسانده مشغول کار دیگه ای بشن

    اونوقت چه اتفاقی برای این سرور بیچاره می افته (خدا را شکر من جای همچین سروری نیستم)؟

  12. #12
    تا حدی مساله را متوجه شدین بله درسته تمام کارها از قبیل تریگر و .... همه قابل انجام است و ربطی به سرور بار اضافی ندارد حتی از حجم کارها نیز می کاهد

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

  13. #13
    همان طور که دوست عزیز دیگرمان فرمودند ، من از ListBox استفاده می کنم و بعد به جدول اصلی منتقل می کنم و هیچ جدول موقتی هم لازم نیست.

  14. #14

    نقل قول: لطفا" نظر بدهید (ساخت جداول موقت)

    سلام
    این موضوع رو پیگیر شدم تا ببینم بعد از 10 سال چه نتیجه های تازه ای بدست آمده .

    تا جایی که متوجه شدم، این جند روش برای نگه داری داده های به صورت موقت (محلی Local) است ولی هر کدوم مشکلاتی داره .

    اگه امکان داره نظر تون رو در مورد هر کدوم بگید :

    1) ClientDataSet + Socket

    2) Ado.Recordset

    3) Xml

    4) (Local DB (Paradox Or Access

    5) StringGrid Or ListBox In Delphi

    6) Array And Record In Delphi

    6 ) راهی پیشنهادی شما :

    سپاس .

  15. #15

    نقل قول: لطفا" نظر بدهید (ساخت جداول موقت)

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


    1) ClientDataSet + Socket

    2) Ado.Recordset

    3) Xml

    4) (Local DB (Paradox Or Access

    5) StringGrid Or ListBox In Delphi

    6) Array And Record In Delphi

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

  1. str_replace , ereg_replace برای "n\" و "r\" و " "
    نوشته شده توسط sweb در بخش PHP
    پاسخ: 1
    آخرین پست: یک شنبه 29 بهمن 1385, 16:30 عصر

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

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