# Native Code > برنامه نویسی در Delphi > بانک های اطلاعاتی در Delphi >  چندین برنامه و یک بانک !!!

## Hamid_PaK

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

دوستان چه چیزهایی لازم است ؟

با تشکر ، یا حق ...

----------


## mzjahromi

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

----------


## Hamid_PaK

مشکل حل نشد !!!

چیزهایی که جستجو کردم مشکل رو حل نکرد ولی اطلاعات خوبی دریافت کردم ...
اول یک برنامه بنویسیم که با چندین بار اجرا شدن و همیشه بروز بودن ( همزمان ) مشکلی نداشته باشه تا بریم سراغ شبکه ...

راهنمایی کنید ...

یا حق ...

----------


## mzjahromi

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

----------


## Hamid_PaK

> ببینید 
> وقتی که برنامه ها همگی به یک بانک متصل باشند همه به روز هستند چون مبدا اطلاعات یکی است.


نشد با ADOConnection تست کردم ولی هنگام افزودن رکورد جدید تغییرات در برنامه های دیگر دیده نمی شود !!!




> فقط باید یک سری شرایط رو رعایت کرد و کنترلهائی روی ورود اطلاعات و تصمیم گیری در مورد مقدار فیلدها اعمال کرد.


لطفا توضیح دهید ...

با تشکر ، یا حق ...

----------


## joker

از
;Dataset.*close*
   dataset.*open* 
استفاده کن  برات رفرش میکنه.

----------


## MNosouhi

> نشد با ADOConnection تست کردم ولی هنگام افزودن رکورد جدید تغییرات در برنامه های دیگر دیده نمی شود !!!


اگه از sql2000 استفاده می کنی نمیشه ، یعنی وقتی که اطلاعات سرور توسط یکی از کلاینت ها تغییر کرد ، بقیه کلاینت ها خبردار نمیشن که بخان خودشون رو Refresh کنن ،  البته من شنیدم که در sql2005 این امکان گنجونده شده.
البته می تونی با ترکیبی از sql+indy این کار رو انجام بدی ، به این صورت که وقتی سرور تغییر کرد ، با indy کلاینت ها رو خبر کنی تا خودشون را Update کنن که این خوش مستلزم اینه که برنامت 3 لایه باشه.(با 2 لایه خیلی منطقی نیست).

----------


## mzjahromi

و در برنامه های سه لایه هم همیشه لایه میانی یکی نیست و نمی توان اطمینان داست که لایه میانی قادر است همیشه و در همه حال شما را مطلع سازد. چون ممکن است خود وی واسطه تغییرات نباشد. کلا برای این کار(آگاهی سایرین از تغییرات) باید برنامه ریزیهای خاصی بسته به شرایط انجام بدی.



> لطفا توضیح دهید ...


یکی از مواردی که باید حتما رعایت شود مساله همروندی است 
 همیشه باید فرض کرد در هر لحظه ممکن است اطلاعات تغییر کند.حتی بین اجرا شدن دو خط از برنامه.
به عنوان مثال یک بانک را در نظر بگیرید. فرض کنید کاربر موجودی حساب را میخواند. و می خواهد  یک چک را پاس کند. مشاهده میکند که موجودی کافی است. و سعی در وصول چک خواهد داشت. دو مشکل ممکن است بوجود بیاید
1- موجودی را میخواند و 100,000 موجودی دارد و می خواهد یک چک با مبلغ 60,000 را پاس کند. موجودی کافی است پس اقدام به وصول میکندحال در این زمان(قبل از وصول چک) شخص دیگری از باجه یا شعبه ای دیگر چک دیگری را پاس میکند و موجودی میشود صفر و چون ما موجودی را چک کرده ایم چک را وصول کرده موجودی را کممممممم مییییییکنییییم و ...
2 موجودی را میخواند و 100000 موجودی دارد شخص دیگری هم در باجه دیگر موجودی را میخواند طبیعتا موجودی آن هم 100000 است حال شخص اول میخواهد یک چک 20000 را وصول کند و شخص دوم می خواهد چک 30000 را وصول کند. شخص اول 20000 را از 100000 کم می کند و 80000 را مینویسد و شخص دوم هم 30000 را از 100000 کم می کند و 70000 را مینویسددر حالی که موجودی باید 50000 باشد ولی رقم ثبت شده 70000 است که....
شاید فکر کنید این موارد غیر منطقی است و ما برنامه را همان لحظه که می خوانیم همتن لحظه هم می نویسیم ولی
شما عمل خواندن را در یک سطر انجام میدهید 
وعمل نوشتن را در یک سطر دیگر
حال بین این دو دستور ممکن است کنترل به شخص دوم واگذار شود و ....

----------


## iman_s52

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

----------


## MNosouhi

> همیشه واسه نمایش اطلاعات و قبل از هرگونه اصلاح - حذف - اضافه کردن اطلاعات مجددا مقادیر رو چک کن


بهتره هنگامی که قصد دارید مثلا روی یک چک کار کنید ، رکورد مربوط به اون چک رو قفل کنید ، در اینصورت اگر کاربر دیگری همزمان خاست روی همون رکورد کار کنه ، وقتی برنامه میبینه که رکورد قفل شده به کاربر اعلام می کنه که باید منتظر بمونه ، البته باید راهکارهایی هم در نظر گرفته بشه که یک رکورد بیشتر از زمان معینی در اختیار یک نفر باقی نمونه(گرسنگی پیش نیاد)

----------


## Hamid_PaK

> از
> ;Dataset.close
> dataset.open
> استفاده کن برات رفرش میکنه.


فوق العاده کند صورت خواهد گرفت ( با یک بانک 20000 رکوردی !!! )

با تشکر از همه دوستان ، یا حق ...

----------


## mehranFX

> و در برنامه های سه لایه هم همیشه لایه میانی یکی نیست و نمی توان اطمینان داست که لایه میانی قادر است همیشه و در همه حال شما را مطلع سازد. چون ممکن است خود وی واسطه تغییرات نباشد. کلا برای این کار(آگاهی سایرین از تغییرات) باید برنامه ریزیهای خاصی بسته به شرایط انجام بدی.
> 
> یکی از مواردی که باید حتما رعایت شود مساله همروندی است 
>  همیشه باید فرض کرد در هر لحظه ممکن است اطلاعات تغییر کند.حتی بین اجرا شدن دو خط از برنامه.
> به عنوان مثال یک بانک را در نظر بگیرید. فرض کنید کاربر موجودی حساب را میخواند. و می خواهد  یک چک را پاس کند. مشاهده میکند که موجودی کافی است. و سعی در وصول چک خواهد داشت. دو مشکل ممکن است بوجود بیاید
> 1- موجودی را میخواند و 100,000 موجودی دارد و می خواهد یک چک با مبلغ 60,000 را پاس کند. موجودی کافی است پس اقدام به وصول میکندحال در این زمان(قبل از وصول چک) شخص دیگری از باجه یا شعبه ای دیگر چک دیگری را پاس میکند و موجودی میشود صفر و چون ما موجودی را چک کرده ایم چک را وصول کرده موجودی را کممممممم مییییییکنییییم و ...
> 2 موجودی را میخواند و 100000 موجودی دارد شخص دیگری هم در باجه دیگر موجودی را میخواند طبیعتا موجودی آن هم 100000 است حال شخص اول میخواهد یک چک 20000 را وصول کند و شخص دوم می خواهد چک 30000 را وصول کند. شخص اول 20000 را از 100000 کم می کند و 80000 را مینویسد و شخص دوم هم 30000 را از 100000 کم می کند و 70000 را مینویسددر حالی که موجودی باید 50000 باشد ولی رقم ثبت شده 70000 است که....
> شاید فکر کنید این موارد غیر منطقی است و ما برنامه را همان لحظه که می خوانیم همتن لحظه هم می نویسیم ولی
> شما عمل خواندن را در یک سطر انجام میدهید 
> ...


استفاده از lock و IsolationLevel تاحد خوبی امکان کنترل این مشکلات رو در اختیار میگذاره.
همانطور که دوستان اشاه کردن در SQL 2005 امکان مطلع نمودن کلاینت ها نسبت به ایجاد تغییر جدید ، توسط سرویس دهنده فراهم شده است ولی در سرویس دهنده های دیگر از جمله نسخه SQL Server 2000 باید از راهکارهای ابتکاری استفاده کرد مثلا برای استفاده از یک رکورد آن رکورد در همان لحظه واکشی گردد و تا پس از انجام تغییرات Lock گردد .

----------


## V60

سلام
برای اینکه همیشه نیاز نباشد جدول را باز و بسته کرد من یک روشی را پیشنهاد می کنم که هنوز خودم تست نکردم !!! ولی به صورت منطقی صحیح است و می خواهم از این به بعد در برنامه هایم از آنها استفاده کنم.
من اینجا خیلی خودمونی توضیح می دم و شاید بعدا یک تاپیک ایجاد کردم که نظر خواهی کنم و با کد اونجا نوشتم.
باید برای هر فرد یک user مجزا تعریف کرد . 
بعد یک جدول می سازیم که حداقل دو تا فیلد داشته باشه , یکی یوزر و یکی ای دی رکوردهای تغییری به این صورت که اگر یک فردی شروع به یک تغییری روی یک رکورد کرد , ای دی ان رکورد به همراه یوزر فرد به جدولی که گفتم منتقل بشود , بعد یوزر دوم وقتی می خواهد روی رکوردی کار کند ابتدا در این جدول چک کند که ایا ای دی این رکورد در جدول وجود دارد یا خیر , اگر وجود نداشت نیاز به باز و بسته کردن جدول نیست و اگر وجود داشت نام یوزر خود را در فیلد یوزر ثبت کند و جدول را باز و بسته کند ، تا اگر دفعه بعد به این رکورد برخورد کرد نیازی به باز و بسته کردن نباشد و با چک کردن فیلد یوزر متوجه شود که عمل باز و بسته کردن را انجام داده است , اگر یوزر دیگری به این رکورد برخورد کرد و تغیری داد دوباره نام تمام یوزرها از فیلد یوزر پاک شود و فقط نام یوزر سوم در آن اضافه شود. بدین صورت در روز فقط نیاز است که ای دی هایی که تغیر رویشان اتفاق افتاده اعمال شود. 
البته یک نکته را بگویم. که برای اینکار و به طور کلی برای جستجو کردن به نظر من باید جدول ها را تقسیم بندی منطقی کرد و یک جدول را به عنوان مثال به نام search ایجاد کنیم که حداکثر 25 فیلد داشته باشد که این جدول همیشه باز و بسته شود ( یا یک کوری روی ان بنویسیم ) ولی توسط یک روشی که باز هم خودم اختراع کردم !!!!!! ارتباط بین دو جدول نیز به نظرم ساده تر می شه  لینک اختراع دومم را هم می گذارم !! 
https://barnamenevis.org/showthread.php?t=58768

----------


## mehranFX

> سلام
> برای اینکه همیشه نیاز نباشد جدول را باز و بسته کرد من یک روشی را پیشنهاد می کنم که هنوز خودم تست نکردم !!! ولی به صورت منطقی صحیح است و می خواهم از این به بعد در برنامه هایم از آنها استفاده کنم.
> من اینجا خیلی خودمونی توضیح می دم و شاید بعدا یک تاپیک ایجاد کردم که نظر خواهی کنم و با کد اونجا نوشتم.
> باید برای هر فرد یک user مجزا تعریف کرد . 
> بعد یک جدول می سازیم که حداقل دو تا فیلد داشته باشه , یکی یوزر و یکی ای دی رکوردهای تغییری به این صورت که اگر یک فردی شروع به یک تغییری روی یک رکورد کرد , ای دی ان رکورد به همراه یوزر فرد به جدولی که گفتم منتقل بشود , بعد یوزر دوم وقتی می خواهد روی رکوردی کار کند ابتدا در این جدول چک کند که ایا ای دی این رکورد در جدول وجود دارد یا خیر , اگر وجود نداشت نیاز به باز و بسته کردن جدول نیست و اگر وجود داشت نام یوزر خود را در فیلد یوزر ثبت کند و جدول را باز و بسته کند ، تا اگر دفعه بعد به این رکورد برخورد کرد نیازی به باز و بسته کردن نباشد و با چک کردن فیلد یوزر متوجه شود که عمل باز و بسته کردن را انجام داده است , اگر یوزر دیگری به این رکورد برخورد کرد و تغیری داد دوباره نام تمام یوزرها از فیلد یوزر پاک شود و فقط نام یوزر سوم در آن اضافه شود. بدین صورت در روز فقط نیاز است که ای دی هایی که تغیر رویشان اتفاق افتاده اعمال شود. 
> البته یک نکته را بگویم. که برای اینکار و به طور کلی برای جستجو کردن به نظر من باید جدول ها را تقسیم بندی منطقی کرد و یک جدول را به عنوان مثال به نام search ایجاد کنیم که حداکثر 25 فیلد داشته باشد که این جدول همیشه باز و بسته شود ( یا یک کوری روی ان بنویسیم ) ولی توسط یک روشی که باز هم خودم اختراع کردم !!!!!! ارتباط بین دو جدول نیز به نظرم ساده تر می شه  لینک اختراع دومم را هم می گذارم !! 
> https://barnamenevis.org/showthread.php?t=58768


وجود چنین جداولی خود بخود مشکل را چندین برابر خواهد کرد چرا که هیچ تضمینی وجود ندارد که پس از خواندن اطلاعات این جدول توسط یک یوزر، آیا صحت داده ها به همان شکلی که در این جداول عنوان شده است وجود دارد یا در این حین توسط یوزرهای دیگر تغییر کرده است ؟!!! کمی فکر کن بعد ادعای اختراع داشته باش ! .... خوش باشی برادر !

----------


## MNosouhi

> بعد یوزر دوم وقتی می خواهد روی رکوردی کار کند ابتدا در این جدول چک کند که ایا ای دی این رکورد در جدول وجود دارد یا خیر , اگر وجود نداشت نیاز به باز و بسته کردن جدول نیست و اگر وجود داشت نام یوزر خود را در فیلد یوزر ثبت کند و جدول را باز و بسته کند





> اگر یوزر دیگری به این رکورد برخورد کرد و تغیری داد دوباره نام تمام یوزرها از فیلد یوزر پاک شود و فقط نام یوزر سوم در آن اضافه شود


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

----------


## V60

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





> فکر نمی کنی ، هزینه این کارهایی که گفتی خیلی بالاست ؟ خود این کاری که داری انجام میدی شامل جستجو ، ثبت اطلاعات و حذف روی یک جدول واسطه هستش ، بعد از همه این کارها فقط ممکنه که لازم نباشه جداولت رو update کنی.
>  این رو هم در نظر بگیر که تمام این کارها باید ابتدا توسط کلاینت درخاست بشه ، سرور درخاست رو انجام بده و سپس نتیجه رو برگردونه. به نظر من این کار فوق العاده وقت گیره و حتی با تعداد رکورد کم ، سرعت پایین در آن مشهود خواهد بود.


mnosouhi عزیز ، نمی دانم شما تا حالا چه دیتابیسهای بزرگ و کوچکی نوشته اید ، ولی تجربه کوچک من به من نشان می دهد که برای بانکهایی که هر مشتری به عنوان یک رکورد تلقی می شود ، با توجه به اینکه هر مشتری اگر یک روز به ما سر بزند احتمال سر زدن دوباره او زیر 10 درصد است پس اونیکه نوشتید ممکنه یک مقداری بیشتر از ممکنه است و احتمال اینکه بخواهیم جدول را update کنیم زیر 10 درصد است .
قبول دارم که ممکن است کد نویسی آن سخت باشد ولی به نظر شدنی است. 
مطمئنا شما تفاوت سرعت فیلتر و کوری روی یک جدول را دیده اید ، فیلتر تقریبا آنی است ولی کوری بسته تعداد رکوردها متفاوت است ، ولی نمی شه همیشه از فیلتر روی شبکه استفاده کرد اونهم به خاطر یوزرهای دیگر. من اینجا به دنبال این هستم که هر موقع نیاز بود جدول باز و بسته شود همین . البته یک توضیحی که باید بدهم این است که آن جدول واسطه هر موقع که تمام یوزرها از برنامه بیرون می روند باید خالی بشود . یعنی در حقیقت این جدول روزانه می شود . حالا برای جایی که مراجعه کننده در روز در بیشترین حد ممکن 400 نفر است فکر می کنم از سرعت بسیار بالایی برخوردار باشد . 
لطفا راهنمایی کنید...

----------


## mzjahromi

> همیشه واسه نمایش اطلاعات و قبل از هرگونه اصلاح - حذف - اضافه کردن اطلاعات مجددا  مقادیر رو چک کن


باز هم امکان بروز مشکل وجود دارد.(چند برنامگی و همروندی رو در نظر بگیرید)
همونطور که دوستان اشاره کردند یکی از راهها استفاده از تراکنشها و Locking است

----------


## MNosouhi

> نمی دانم شما تا حالا چه دیتابیسهای بزرگ و کوچکی نوشته اید


من زیاد برنامه نوشتم ، در یکی از برنامه هام قبل از هر ویرایش از حالتی مانند حالتی شما استفاده می کردم یعنی مثلا قبل از هر ویرایش یک جدول واسطه را تتغییرش میدادم ، همین edit و post کردن باعث میشد تقریبا هفت دهم ثانیه زمان از دست بدهم ، طوری که مشتری هم متوجه کم بودن سرعت شد و مجبور شدم تغییرش بدم.



> برای بانکهایی که هر مشتری به عنوان یک رکورد تلقی می شود ، با توجه به اینکه هر مشتری اگر یک روز به ما سر بزند احتمال سر زدن دوباره او زیر 10 درصد است پس اونیکه نوشتید ممکنه یک مقداری بیشتر از ممکنه است و احتمال اینکه بخواهیم جدول را update کنیم زیر 10 درصد است


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

----------


## V60

راستش من یک برنامه ای که حدود 4 سال است نوشته ام و نسخه های متعددی از آن را فروخته ام ، و هر ماه آن را به روز می کنم، اولین مشکل من این است که خریداران حاضر به تهیه یک سیستم سرور نیستند و اگر هم سرور تهیه کنند ، در حقیقت یک دستگاه عادی است که صرفا از آن استفاده ای غیر از قرار دادن نرم افزار و بانک بر روی ان ندارند و به این دلیل و به دلیل اینکه این برنامه را 4 سال پیش نوشته ام با بانک اکسس کار کرده ام ، در حال حاضر بعضی از خریداران دارای جدولی با 120 فیلد و 26000 رکورد است که عملا جستجو کردن در این جدول را به زمانی چند ثانیه ای تبدیل کرده است ، حال من در حال تغییرات اساسی در برنامه ام هستم  اول اینکه جدول ها یی مجزا از هم درست می کنم یعنی همان جدول بزرگ را به چهار جدول تقسیم کرده ام که اسم یکی از آنها را search گذاشته ام که در آن مشخصات مشتریان وارد شده است و جدوال دیگر مربوط به اطلاعات منفک از یکدیگر است ، حال کاربر برای اینکه به اطلاعات هر کدام از جداول برسد نیاز دارد ابتدا در جدول search جستجو را انجام دهد.
نظر شما چیست ؟ من از روابط استفاده کنم ، یعنی یک کوری بر روی دو جدول بسازم یا از روشی که در این تاپیک نوشته ام استفاده کنم؟ تمام دلایلم را در این تاپیک نوشته ام.
https://barnamenevis.org/showthread.php?t=58768

----------


## MNosouhi

مطمئنید مباحث نرمالسازی رو در برنامتون رعایت کردید؟

----------


## V60

عرض کردم که قبلا نه ولی الان هر چیزی که از نرمالسازی می دونم دارم رعایت می کنم ، ولی خوشحال می شوم از نرمال سازی اگر منبعی دارید یا در تاپیکها چیز خوبی دید لینکش را برای من هم بگذارید

----------


## MNosouhi

> اگر منبعی دارید یا در تاپیکها چیز خوبی دید لینکش را برای من هم بگذارید


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

مهمترین مشخصه این کتاب اینه که خیلی روون توضیح داده.
این هم آدرس سایت نویسنده ، بعضی از قسمت ها رو میتونید به صورت pdfدانلود کنید.
http://www.talinsahakian.com

----------


## iman_s52

البته تخصص ایشون بیشتر در زمینه WEB Base  است ولی چون پایگاه هم درس دادن این کتاب رو هم تالیف کردن .
من خودم خوندمش.
من که به دلم ننشست؟؟؟؟

----------


## MNosouhi

> البته تخصص ایشون بیشتر در زمینه WEB Base است ولی چون پایگاه هم درس دادن این کتاب رو هم تالیف کردن .
> من خودم خوندمش.
> من که به دلم ننشست؟؟؟؟


مباحث پایگاه داده ربطی به web base یا application بودن نداره .
ایشون استاد حقیر در دانشگاه بودن و الان در حال ادامه تحصیل (دکتری) در آلمان می باشند و کتابشون هم حرف نداره ، این نظر همه بچه های رشته کامپیوتر دانشگاه بود و نه من ، طوری که این کتاب را بعنوان معدود کتاب هایی که واقعا در دانشگاه به دردمون خورد نگه داشته ایم.

----------


## iman_s52

البته استاد خانوم بنده هم بوده ؟؟؟

----------


## hormuz

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

----------


## Mohammadi_F

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

----------


## vcldeveloper

> بالاخره من هم مثل hormuz نفهمیدم باید چکار کنم تا برنامم همیشه به روز باشه یا اینکه وقتی دارم از اطلاعات یک رکورد استفاده می کنم کسی نتونه اون رو تغییر بده.


خصوصت *LockType* را روی *ltPessimistic* تنظیم کنید. درباره این مسئله قبلا بحث شده، هر کدوم از عبارت های *Bold* شده را در بخش دلفی جستجو کنید.

----------


## Mohammadi_F

باز هم آقای کشاورز مگه به داد ما برسه.
یه سوال دیگه و اون اینکه چه جوری میشه یک جدول رو قفل کرد.

----------

