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

نام تاپیک: نکات کار در شبکه :

  1. #1
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نکات کار در شبکه :

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

  2. #2
    کاربر تازه وارد آواتار salimim
    تاریخ عضویت
    شهریور 1385
    محل زندگی
    تهران
    پست
    50

    خب حالا این نکات رو مطرح بفرمایید

    خب حالا این نکات رو مطرح بفرمایید

  3. #3
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    سوالات زیادی داشتم که مطمئنم در نظر خیلی ها هم باشه . پس از کار با کمک دوستان به نتایجی رسیدم که براتون می زارم در ضمن این نتایج برداشت شخصی خودمه اگه کسی نطر بهتری داره بگه تا بقیه استفاده کنن.
    * برنامه اجرایی باید روی سرور با شه یا کلاینتها ؟
    اگر برنامه اجرایی روی هر کلاینت نصب بشه این مزیتها رو داره :
    1 – خطوط شبکه بار کمتری را تحمل می کنند در نتیجه سرعت اجرای برنامه بیشتر می باشد .
    2 – فایلهای موقت ازجمله کرسر ها روی هر کلاینت بطور مجزا تشکیل می شوند در نتیجه از کانفلیگ (برخورد) جلو گیری بعمل می آید.
    3- هر سیستمی فایل پیکربندی (config.fpw) را با تنظیمات خاص خودش اجرا می کند
    * بانک های اطلاعاتی و جداول در کجا باید باشند ؟
    ابتدا یک پوشه روی سرور ایجاد کنید.
    جداول را در ان کپی کنید.
    آن پوشه را share کنید.
    در فایل پیکر بندی مسیر آن پوشه را قرار دهید.
    مثلا مسیر جداولی که در پوشه Dbase روی سروری با نام Server نصب می باشند بصورت زیر در فال پیکر بندی تعریف می شود:


    حالا فقط کافیه در برنامه بنویسیم :

    set exclusive off
    use myTable


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

  4. #4
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    و اما برنامه را چطور باید طراحی کنیم ؟
    اول باید بدونیم چه دستوراتی باعث قفل شدن رکورد می شود البته در بخش شبکه کتاب مرجع ویژوال فاکس 3 این دستورات لیست شده . دستوراتی نظیر :
    Append , replace , delete و امثالهم در کل دستوراتی که باعث تغییرات در بانک اطلاعاتی می شه باید ابتدا رکورد را قفل کنیم تا مطمئن بشیم کاربر دیگری از آن استفاده نکند :
    Set reprocess to 1
    این دستور سبب می شود که اگر تلاش برای قفل کردن رکورد ناموفق بود (یعنی کاربر دیگری ان را قفل کرده) دیگر تلاش مجدد صورت نگیرد و برنامه به مرحله دیگری برود . بطور پیش فرض این دستور اینگونه است :
    Set reprocess to automatic
    و اگر رکوردی نتواند قفل شود سیستم به حالت هنگ می ماند تا آن رکورد باز شود چون دائما در حال تلاش برای قفل کردن است. پس با پارامتر 1 به برنامه می فهمانیم که فقط یکبار تلاش کند.
    این کد به این صورت عمل می کند :
    اگر رکورد قفل شد پس کار به روز رسانی انجام می شود در غیر اینصورت پیغام می دهد که کاربر دیگری در حال استفاده از این رکورد می باشد.

    if rlock()
    دستورات به روز رسانی
    ...
    ...
    else
    wait wind "کاربر دیگری در حال استفاده از این رکورد می باشد"

  5. #5
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    البته endif یادتون نره

  6. #6
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    این هم یک لینک درباره کار با شبکه . یک فایل پروژه برای ثبت و بازیابی اطلاعات و مثال دوم برای کار با بافرینگ جداول در شبکه . این لینک را آقای حیدری کیا زحمت کشیدند :
    http://www.foxite.com/articles/how-to-handle-update-conflicts-and-refresh-data-in-forms-within-a-network-multiuser-application-067.htm

  7. #7


    OPen Database lcDataBaseName Shared



    هم برای اینکه بانکها به طور مشترک باز شوند ضروری است.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  8. #8
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    آقای توکل
    اگه می شه بازهم نکاتی که از تجربیات شما سرچشمه می گیرد درج بفرمائید.
    احساس می کنم آموزش گام به گام این بحث مخصوصا بانک اطلاعاتی در شبکه دغدغه خیلی ها باشد همانطوریکه بنده مدتها بدلیل نداشتن هیچ مرجع و راهنمای خاصی از شبکه اجتناب می کردم . به هر حال تکمیل این تاپیک توسط تجربیات دوستان می تواند مثمر ثمر باشد

  9. #9
    تست اینکه یک برنامه در شبکه درست کار کند خیلی راحت است :

    برنامه دوبار اجرا بشه. (البته این برای برخی مقاصد درست در میاد)

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



    حلقه قفل: اگر کاربر اول جدول اول را باز کند و بخواهد جدول دوم را که کاربر دوم باز کرد باز کند و از آن طرف کاربر دوم بخواهد جدول اول را بازکند در داخل حلقه قفل بانک هر دو کاربر متوقف خواهند شد!


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

  10. #10
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    منظور شما همون دستور Set reprocess to 1 هست ؟

  11. #11
    بله اما تعداد یک کم است حداقل ۳ و بعد از مکث یک ثانیه و یک اخطار به کاربر دوباره شروع کند.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  12. #12
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    در طی اولین برنامه که با شبکه کار کردم درگیری های زیادی با نحوه کنترل برنامه داشتم. همون بحث rlock و امثالهم که در بالا توضیح دادم.
    اما دیدم ثبت - حذف - ویرایش و بالاخره خیلی از بخش ها که از دستم در می ره بعدا یادم میاد که اینها هم باید کنترل بشه.
    چیزی به ذهنم خطورکرد. با آقای حیدری کیا هم مطرح کردم . ایشون هم گفتند اینجا بزاریم نظر بقیه رو بپرسیم .
    اینکه به جای اینکه برنامه رو کنترل کنم خطای برنامه رو کنترل کنم . مثلا من برنامه رو به همون صورت معمول خودم بدون قفل کردن رکورد یا تشخیص قفل بودن رکورد بنویسم فقط توی ارورهندلر بگم هروقت خطای کانفل داد اطلاعات را ریورت کن و پیغام بده کاربر دیگری درحال استفاده است.
    از فایل آقا جواد حسینی عزیز که tap_win نوشته بودند هم استفاده کردم.
    حالا می خوام ببینم این کار اشکالی پیش نمیاره و نظرتون چیه ؟ اگه تصویب کنید که می ره تو مرحله اجرا

  13. #13
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    40
    پست
    2,107
    به نظر من وقتی که خطایی رخ دهد یعنی عملی انجام شده است.مثلا اگر دوکاربر دست به ویرایش یک رکورد بزنند و شما جلوگیری نکنید در یک حلقه نامتناهی اسیر خواهید شد و خطایی نمیدهد که بخواهید جلوی اون رو بگیرید.
    البته امتحان کردن این موضوع تا بحث روی هوا خیلی فرق میکنه!
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  14. #14
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    بنظر من خطا قبل از اتمام عملیات رخ می ده . چون پیغامی هم که می ده دکمه revert داره یعنی جای امید هست هنوز اتفاقی نیفتاده
    خواستم ببینم نظر دوستان چیه؟

  15. #15
    کاری که من میکنم اینه که اول همه بانکها رو قفل میکنم ( بانکهایی رو که نیاز دارم ). اگه این کار عملی شد ادامه میدم و اگر نه اول یه دستور UNLOCK ALL میدم و بعد به کاربر میگم که یکنفر دیگه داره کار میکنه. مجددا اقدام کنه.

    IF FLOCK("File1") .AND. FLOCK("File2")
    .
    .
    .
    ELSE
    UNLOCK ALL
    =MessageBox()
    ENDIF

  16. #16
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    بازهم می خواستم نظر دوستان رو درباره on error بدونم . می خوام بدونم این کار از نظر اصولی درست هست یا نه

  17. #17
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    40
    پست
    2,107
    از نظر اصولی کد آقای rezamim درسته
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  18. #18
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    سلام به همه دوستان ! نماز و روزه همه قبول حق
    دو سیستم در دو مکان متفاوت باید از یک برنامه آن لاین استفاده کنند. فاصله بین دو مکان حداقل 10 کیلومتر می باشد. (پیدا کنید پرتقال فروش را)
    چی کار باید بکنم ؟؟ نمی دونم چطور باید شبکه بشن و اگر شبکه بشند در فاکس کار خاصی باید انجام بدم یا همونطوریکه در lan می نوشتیم برنامه نویسی همونطوریه؟

  19. #19
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    40
    پست
    2,107
    یک سروسی مخابرات میده که اسمش و درست یادم نیست VIP یا *** در واقع یک شبکه اینترانت هست اما در سطح وسیع که البته بیشتر برای بانکهای قرض الحسنه که شعبه های مختلف دارند استفاده میشوند.
    بعدشم میشه یک شبکه معمولی
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

  20. #20
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    از پاسخ شما سپاسگزارم.

  21. #21
    *** یعنی شبکه مجازی. که بر روی اینترنت ساخته میشه. و برای خصوصی سازی شبکه است.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  22. #22
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    یعنی فقط کافیه با مخابرات هماهنگ کنیم خودش خط و درست می کنه.
    خب مرحله بعدی چیه؟؟؟ ما باید روی سرور و کلاینت چه کارهایی انجام بدیم؟؟
    و سیستمها چطور بهم ارتباط پیدا کنند؟
    با تشکر

  23. #23
    *** یک سرویس مخابراتی نیست یک پروتکل شبکه است.
    ____________________________
    همه چیز را همگان دانند و همگان هنوز از مادر زاده نشده اند. (بزرگمهر حکیم)

  24. #24
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    چه جالب . !!!
    اگه می شه بیشتر توضیح بدین . با تشکر

  25. #25
    ***(virtual private network)
    در تندیس های تخت جمشید هیچ کس در حال تعظیم نیست ، هیچ کس عصبانی نیست ، هیچ کس سرافکنده و شکست خورده نیست ، هیچ کس سوار بر اسب نیست ، هیچ قومی بر قوم دیگر برتر نیست ، هیچ کس برده نیست و هیچ تصویر خشنی دیده نمیشود.
    ************************************************** ******************************************
    اندیشه کن , آنگاه سخن گو تا از لغزش بر کنار باشی

  26. #26
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305
    آقا رضا ! چه عجب .
    کم پیدایین ؟؟!!!!

  27. #27
    کاربر دائمی آواتار arashkhaan2002
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    اصفهان و تهران
    پست
    193

    نقل قول: نکات کار در شبکه :

    سلام من دربدر دنبال این بحث هابودم که تازه اینجا پیدا کردم
    دوستان عزیز و مهران گل ، من هم دقیقا همین مشکلات رو دارم . روشهای اجرائیم در شبکه به همین صورته که شما گفتید ، ولی الان در اجرای سیستمهای اتوماسیون بزرگ مشکلات زیر رو دارم
    1- ترافیک کاری بالا سرعت کار با بانک های share روی سرور رو پاویین میاره
    2- گزارش گیری ها خصوصا وقتی هم زمان چند کاربر دارن میگیرن یا ثبت اطلاعات میکنن سرعتش بسیار پائین میاد چون میخواد کل اطلاعات رو از روی شبکه از سرور بکشه روی کلاینت و گزارش تهیه کنه .
    3- به دلایل فوق کلاینت راه دور که دیگه اصلا با اون سرعت پائینش جواب نمیده.
    شما چکارکردید؟

  28. #28
    کاربر دائمی آواتار arashkhaan2002
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    اصفهان و تهران
    پست
    193

    نقل قول: نکات کار در شبکه :

    سلام دوستان
    اکثر اوقات اطلاعات داخل حافظه کلاینت (مثلا در ناحیه 2 یک dbf یوز شده) حتی من دستور set refresh to 1,1 هم گذاشتم به لحظه نیست و اگر کسی روی یک کلاینت سندی بزنه گاها اتفاق میوفته که کلاینت های دیگه اونو نمیبینن یا بدتر از اون با همون شماره (چون نمیبیننش) سند ثبت میکنن و سندها قاطی یا سند اولیه حذف میشه !
    این مشکل وقتی از دستور select Max(field_name) from '\\server\sds\sanad.dbf برای پیدا کردن بزرگترین شماره سند استفاده میکنی کمتر بروز میکنه چون میره از روی خود سرور میخونه البته سرعت کار پائینه ولی دیروز من به جای این دستور ، چون رو فیلد شماره سند cdx داشتم ، از دو دستورselect 2, سپس go botom واسه پیدا کردن بزرگترین شماره سند و اضافه کردن عدد 1 برای ایجاد شماره سند جدید استفاده کردم به جای دستور select max(field_name اغلب سیستمها به مشکل خوردن و شماره های پرت و پلا و چند شماره قبل از آخرین شماره رو به عنوان بزرگترین شماره بعد از دستور go bottom بر گردونده!!! جالبش اینجاست که در بعضی قسمتها فقط یک سیستم داشته سند میزده!!!!!!
    خلاصه حسابی آبروم رفته نمیدونم علت چیه.
    ضمنا هنگام ثبت اطلاعات ابتدا flock میکنم با Insert اطلاعات رو ثبت و بعدش هم flush force کردهunlock میکنم.
    لطفا هرکس میتونه کمک کنه.
    ممنون


  29. #29
    کاربر دائمی آواتار mehran_337
    تاریخ عضویت
    مهر 1384
    محل زندگی
    رشت
    پست
    1,305

    نقل قول: نکات کار در شبکه :

    همیشه بعضی پروژه ها بد قلق می شند برای من هم پیش اومده که دستوراتی که توی یه برنامه کمتر از یک ساعت ساخته شدند اما همون دستورات توی یه پروژه دیگه اونقدر آدمو اذیت می کنن که حد نداره مثل روزهایی که از سر صبح آدم بد میاره. بگذریم ...

    آرش خان !
    بنده قبلا هم عرض کردم بجای اینکه رکورد را قفل کنید بگذارید کاربر ها بطور عادی کار خودشونو انجام بدن . اگر کانفلیگ بوجود بیاد برنامه ارور می ده که با یک برنامه ساده می شه کنترلش کرد مثلا :

    if t_err=108 OR t_err=1585 or t_err=109
    msg(5,'this record is luck')
    TableREVert()
    endif


    در ثانی وقتی می بینید با dbf در شبکه زیاد کار می شه از mysql استفاده کنید

  30. #30
    کاربر دائمی آواتار arashkhaan2002
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    اصفهان و تهران
    پست
    193

    نقل قول: نکات کار در شبکه :

    Sql serverیا mysql? کدوم ورزنش؟

  31. #31
    کاربر دائمی آواتار arashkhaan2002
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    اصفهان و تهران
    پست
    193

    نقل قول: نکات کار در شبکه :

    یعنی از طریق vfp odbc driver از بانکهای sql تو فاکس view بسازمو باهاش کار کنم دیگه؟

  32. #32
    کاربر دائمی آواتار arashkhaan2002
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    اصفهان و تهران
    پست
    193

    نقل قول: نکات کار در شبکه :

    من sql server 2000 رو نصب کردم و برای آزمایش یکی از dbf هامو توی دیتابیسش import کردم ، بعد اون دیتابیس sql serverرو به odbc اضافه کردم.
    بعد داخل پروژه ویژوال فاکس یک دیتابیس ایجاد کردم و یک کانکشن به دیتابیس sql درون odbc زدم و از اون بانک مورد نظر(همون بانک dbf که داخل sql server بردم و import کرده بودم) یک remote view گرفتم.
    حالا این view رو در یک ناحیه کاری use میکنم و عین یک بانک عادی باهاش کار میکنم . هر وقت چیزی رو بهش اضافه یا ویرایش میکنم بعدش دستور tableupdate() رو میزنم تو بانک sql server هم اون تغییرات لحاظ میشه.
    ولی اگه یه چیزی رو تو بانک sql تغیییر بدم (مثلا کاربر دیگری این تغییر رو داده) ، تا زمانی که view رو در ناحیه کاریش نبندم و دوباره use نکنم view تغییراتش update نمیشه !؟
    اگرم از دستور refresh() استفاده کنم پیغام میده که key field ، عuniqe نیست !
    برای حل این مشکل باید چکارکرد که اگه کاربر دیگری روی بانک Sql تغییری داد روی view ما update بشه؟

  33. #33
    مدیر بخش آواتار binyaz2003
    تاریخ عضویت
    آبان 1382
    محل زندگی
    کرمان
    سن
    40
    پست
    2,107

    نقل قول: نکات کار در شبکه :

    شما فيلد کليديتون بايد منحصربفردباشه.من تست کردم با رفرش مشکلي نيست
    وب سایت شخصی
    وبلاگ آموزش ویژوال فاکس پرو - به دلیل تعطیل شدن میهن بلاگ نوشته های وبلاگ به وب سایت شخصی منتقل شدند.

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

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