PDA

View Full Version : سوال: چگونه ميتوان براي كاربران Online در برنامه (شبكه) پيغام فرستاد؟



sib_data
دوشنبه 29 مهر 1387, 09:29 صبح
با سلام
چگونه ميتوان براي كاربراني كه در حال حاضر در حال كار با نرم افزار هستند (تحت شبكه) پيغام فرستاد كه به صورت يك هشدار بر روي صفحه ظاهر شده و كاربر آن را ببيند.
تشكر

HAMRAHSOFT.IR
دوشنبه 29 مهر 1387, 09:42 صبح
خيلي راحته شما برنامه كه تحت شبكه كار مكنه بزار تا درست كنيم برات با دوستان

saeedyaz
دوشنبه 29 مهر 1387, 20:58 عصر
اگه بشه خیلی جالب هست...
آقا راهشو بگو... مرسی

saeed razaee
سه شنبه 30 مهر 1387, 08:10 صبح
دوستان لطفاً اين سوال را پاسخ دهيد تا ديگران نيز از دانسته هاي شما استفاده لازم را ببرند.

mohammadgij
سه شنبه 30 مهر 1387, 13:17 عصر
فكر كنم اگر مي خواين كه بلافاصله پيغام مشاهده بشه. بهتره يك جدول داشته باشي كه هر كس Login كرد IP دستگاهش رو توش بذاري و هر كس Logout كرد هم ركورد IP ش رو حذف كني.
بعدش با دستورات Command (احتمالا تابع API براش هست) به IP ها موجود در جدول پيام بفرستين.
اگر هم كه الزامي به پيغام OnTime ندارين ميتونيد يك جدول بسازسن و پيام مورد نظر رو توش ذخيره كنيد و يك ساب جدول داشته باشين كه بگين چه اشخاصي بايد اين پيام رو ببينن. بعد توي فرم اصلي برنامتون چك كنيد كه اگر شخصي هست كه پيغام رو نديده ، واسش پيغام رو نشون بدين و د رجدول ساب هم ذخيره كنيد كه پيغام رو ديد.
اين عمل رو در On Timmer فرم اصلي تكرار كنيد و به طور مثال هر 5 دقيقه يكبار چك كنيد

sib_data
سه شنبه 30 مهر 1387, 14:29 عصر
سلام
راهنمايي خوبي بود. من ip را دارم ولي اگه بخوام بلافاصله پيام را مشاهده كنه ميشه بيشتر راهنمايي كني.
ممنون

مهدی قربانی
سه شنبه 30 مهر 1387, 15:42 عصر
سلام
در ارتباط با پيشنهاد محمد آقا و مورد IP شما مي تونيد با استفاده از نمونه اي كه در اين تاپيك (http://barnamenevis.org/forum/showthread.php?t=127660)تقديم شد اين مورد رو به اجرا بذاريد و همونطور محمد عزيز اشاره كردن با استفاده از روال On Timer فرم اصلي برنامه يا يك فرمي كه بطور Hiden در تمام طول باز بودن برنامه باز هست با زمان 1000 ميلي ثانيه اقدام به ارسال پيام كنيد براي اين منظور در نمونه تقديمي روال كار بر اين منوال بود كه شخص وقتي وارد برنامه مي شد اطلاعات IP , UserNmae و نام كامپيوترش در جدولي بصورت موقت ثبت مي شد و بعد از ترك برنامه توسط اون شخص اين ركورد ثبت شده حذف مي شد حالا براي موضوع پيام شما بايد يك جدول ديگه داشته باشيد كه اطلاعات فوق در اون ثبت دائم باشه و يك فيلدي مثلاً تحت عنوان Text_Msg داشته باشه و ادمين بواسطه فرمي متصل به اين جدول فرد رو انتخاب و متني روكه بايد در قالب پيام براي كاربر مورد نظر ارسال بشه رو بفرسته در اين مرحله در فرم Hiden كه صحبتش شد در همون رويه On Timer ميتونيم بگيم كه بررسي بشه چنانچه كاربري پيامي داره اين پيام در قالب MsgBox براش نمايش داده بشه و البته بعد از اينكه كاربر پيام رو OK كرد فيلد Text_Msg هم خالي بشه يك نكته ديگه اينكه شما مجبور نيستيد فقط از IP استفاده كنيد بلكه مي تونيد از UserName يا ComputerName هم بهره بگيريد . اگر خيلي متوجه مراحل نشديد بفرمائيد نمونه رو تكميل كنم .

sib_data
سه شنبه 30 مهر 1387, 16:07 عصر
سلام
يك نكته هست و ان اينكه ايا بعد از ok كردن يك msgbox چيزي بر ميگرده كه بشه روي اون عملي انجام داد؟

مهدی قربانی
سه شنبه 30 مهر 1387, 16:43 عصر
جواب مثبته ،به عنوان نمونه اين تابع MsgBox رو ببنيد :

If MsgBox("پيام مورد نظر" vbCritical + vbMsgBoxRight + vbOkOnly, _
"پيغام سيستم") = vbOk Then

DoCmd.OpenForm "form1"
Form_Form1.Combo2.SetFocus
Form_Form1.Combo2.Dropdown


End If

saeedyaz
سه شنبه 30 مهر 1387, 18:41 عصر
سلام
به نظر من اگه یک نمونه آزمایشی رو تست کنیم راحت تر به جواب میرسیم .
مشکل اصلی در اینجاست که وقتی نرم افزاری روی یک واحد باز است وفرم های دیگری روی فرم start up بصورت باز وجود دارد فرمان ها روی on timer - پیام خطا میدهد.

مهدی قربانی
جمعه 03 آبان 1387, 02:06 صبح
سلام
دوستان عزيز مدتي روي اين نمونه كه قبلاً در اين تاپيك (http://barnamenevis.org/forum/showthread.php?t=127161) ارائه شد كاركردم و مطابق با موضوع بحث اين تاپيك تغييرات و اضافاتي رو روش اعمال كردم .
توضيحات :
1 . در زمان اجراي فايل ، اطلاعات كاربر وارد شده شامل : آدرس IP ، نام كاربري User Name يا Account Name و Computer Name در 2 جدول مشابه يعني tb_log_users ( كه در اصل اين اطلاعات رو بطور موقت ذخيره مي كنه و بعد از خروج كاربر اين ركورد ثبت شده حذف ميشه ) و tb_arc ذخيره ميشه ، جدول دوم همون جدوليه كه قراره براي ارسال پيام به كاربران استفاده بشه يعني علاوه بر فيلدهاي فوق الذكر داراي 2 فيلد Msg_Title عنوان پيام و Msg_Txt متن پيام هست .
2 . بعد از ورود كاربر اطلاعات ا طريق رخداد On Load فرم startup در هر دو جدول ذخيره ميشه ( با ماهيت ذكر شده در بند 1 ) البته در صورتي كه اطلاعات جاري قبلاً در جدول arc ثبت شده باشه از ثبت مجددش جلوگيري ميشه
3 . براي ارسال پيام كامند باتوني روي فرم تعبيه شده كه فرم Frm_msg رو باز ميكنه
4 . در فرم Frm_mg كه Unbound هست يك كامبو كه نقشش انتخاب كاربره و 2 تسكست باكس كه يكي براي ثبت عنوان و دومي براي ثبت متن پيام در نظر گرفته شده و همينطور يك Fream مخصوص دو Option Box كه نقش اين دو تعيين ارسال پيام براي يك كاربر خاص و يا براي همه كاربران هست و نهايتاً يك كامند باتون كه عمليات ارسال پيام رو انجام ميده .
5 . در رخداد On Timer‌ فرم startup هم با Interval 1000 ميلي ثانيه با استفاده از ركوردست متصل به كد SQL بررسي ميشه در صورتيكه كاربري پيامي داشته باشه اين پيام رو براي اون كاربر نمايش مي ده و بعد از پاسخ كاربر به پيام ، فيلدهاي عنوان و متن پيام اون كاربر در جدول arc حذف ميشن .
6 . در تمام عملياتها عمدتاً از ابزارهايي مثل ركوردست DAO ، كدهاي SQL استفاده شده .


لازم به ذكر هست كه نمونه حاضر داراي اشكالي بود كه در پست شماره 30 همين تاپيك نسخه اصلاح شده تقديم شده .

مهدی قربانی
یک شنبه 05 آبان 1387, 19:40 عصر
دوستان نظرشون رو در مورد اين نمونه بدن ، من شخصاً هنوز اين برنامه رو تحت شبكه تست نكردم ، آيا به مشكل و يا نقصي در عملكرد اين نمونه برخورد كرديد ؟

mohammadgij
دوشنبه 06 آبان 1387, 14:55 عصر
من هم در شبكه تست نكردم اما با توجه به كدهاي نوشته شده هيچ Error ي ديده نميشه و بالاي 90% درست جواب خواهد داد. اما كار خوب و جالبي كردي و نيازهاي بسياري رو ميتونيم با اين پروسيجر و احيانا تغييرات جزئي در اون با توجه به ماهيت پروژه ها برطرف كنيم. يك راه ديگه هم اين بود كه جهت نمايش پيام به جاي استفاده از MSGBOX از يك فرم استفاده بشه و احيانا كاربر هم بتونه سوالاتشو توش بنويسه و با تاييد اون يك پيغام ايندفعه براي DBA نشون داده بشه و DBA هم جواب بده. (فقط خواستم بگم دوستان چه كارها و اكشن هايي ميتونن با اين برنامه بسيار خوب آقاي مدير انجام بدن)

sib_data
سه شنبه 07 آبان 1387, 08:12 صبح
سلام
من اينكار را كردم و جواب داد ولي يك مشكلي كه وجود داره اينكه من ميخام يك ليستي از كاربران را انتخاب كنم و پيام گروهي بفرستم. براي انتخاب كاربران بايد يه ليست Temp از كاربران اصلي تهيه كنم كه براي انها به صورت گروهي ارسال بشه. اين ليست اگه دو نفر در يك زمان بخواهند پيام ارسال كنند مشكل ساز ميشه. راه حلي اگه به فكرتون ميرسه بيان كنيد.
ممنون

مهدی قربانی
سه شنبه 07 آبان 1387, 23:24 عصر
سلام
البته اگر بخوايم براي چند كاربر بصورت انتخابي پيام بفرستيم يه راهش استفاده از ليست باكسه ، ميشه درستش كرد برام مهم اين بود كه برنامه تحت شبكه بتونه كار كنه بقيه كارا قابل اجراست .

mohammadgij
چهارشنبه 08 آبان 1387, 12:32 عصر
منم فكر ميكنم كه جناي آقاي مدير بهتره كه ادامه ندن كار روي اين قسمت رو. يك Sample گذاشتن و دوستاني كه ميخوان تغييرات ايجاد كنن و دوباره آپلود كنن كه همه ببينن. اينجوري بهتره چون تا زماني كه خود شخص دست به كاري نزنه روي مطلب Expert نمي شه.

مهدی قربانی
چهارشنبه 08 آبان 1387, 14:15 عصر
منم فكر ميكنم كه جناي آقاي مدير بهتره كه ادامه ندن كار روي اين قسمت رو. يك Sample گذاشتن و دوستاني كه ميخوان تغييرات ايجاد كنن و دوباره آپلود كنن كه همه ببينن. اينجوري بهتره چون تا زماني كه خود شخص دست به كاري نزنه روي مطلب Expert نمي شه.
سلام
محمد جان ممنون از پيشنهادت ، موافقم اين موضوع و كلاً موضوعات شبكه اي يكي از موارد مبتلا به اكثر برنامه نويساي اكسس هست مي طلبه كه در يك همچين مباحثي دوستان شركت و هر يك ايده ها ونظراتشون رو در قالب شرح مطلب و يا مثالهاي عملي طرح كنن تا هم باعث ارتقا سطح كيفي مبحث و هم ارتقاء ارتقاء تجربه همگي ما بشه . پس با اجازه دوستان بنده با اين كه به جواب رسيدم تامل مي كنم تا ببينيم ساير عزيزان چه راهكاري ارائه ميدن .

مهدی قربانی
یک شنبه 01 دی 1387, 00:36 صبح
سلام
دوستان ايده اي ندارن ؟؟

rofirash
سه شنبه 24 دی 1387, 23:05 عصر
سلام . حالا اگه بخواهیم یک کاربر آنلاین رو که برنامه رو باز کرده برنامش رو ببندیم میشه . بعضی از مواقع مدیر سیستم برای اعمال تغیرات احتیاج داره کاربران برنامشون رو ببندند.

rofirash
چهارشنبه 25 دی 1387, 22:57 عصر
دوستان کسی می تونه کمک کنه؟

ali190
دوشنبه 18 آبان 1388, 00:10 صبح
سلام خدمت دوستان عزيز
ميخواستم از اساتيد خواهش كنم برنامه رو جوري اصلاح كنند كه برااساس نام كامپيوتر پيغام رو بفرسته
خواهش ميكنم كه دوستان بعداز اصلاح فايل يه توضيحي راجع به تغييراتي كه در فايل ايجاد كردند ارائه كنند.
آيا دوستان ميتونند لطف كنند و يمقدار امكانات اين برنامه رو ارتقاء بدند.
مثلاً اينكه ليست كل كاربرها باز بشه و من با انتخاب هر چندتا كاربر دلخواه با تيك زدن كنار آنها به آنها پيام ارسال كنم.
ممنون

ryonis
شنبه 28 آذر 1388, 20:32 عصر
دوستان نظرشون رو در مورد اين نمونه بدن ، من شخصاً هنوز اين برنامه رو تحت شبكه تست نكردم ، آيا به مشكل و يا نقصي در عملكرد اين نمونه برخورد كرديد ؟

[جناب مدير عزيز! اي كاش ميشد بيش از يكبار تشكر فرستاد!!! نمونه برنامه شما كه مشكل چند ماهه منو حل كرد. واقعاً متشكرم. بله ! برنامه تان توسط من و همكارانم در شبكه شركت مان تست شد و الحمدلله هيچ مشكلي نداشت...

بسيار متشكرم :تشویق::تشویق:

مهدی قربانی
شنبه 28 آذر 1388, 21:09 عصر
[جناب مدير عزيز! اي كاش ميشد بيش از يكبار تشكر فرستاد!!! نمونه برنامه شما كه مشكل چند ماهه منو حل كرد. واقعاً متشكرم. بله ! برنامه تان توسط من و همكارانم در شبكه شركت مان تست شد و الحمدلله هيچ مشكلي نداشت...
بسيار متشكرم :تشویق::تشویق:

سلام
شما لطف دارید دوست عزیز , ممنون میشم مراحل تست و تعداد کاربر On Line رو ذکر بفرمائید .

ryonis
یک شنبه 29 آذر 1388, 12:23 عصر
سلام
شما لطف دارید دوست عزیز , ممنون میشم مراحل تست و تعداد کاربر On Line رو ذکر بفرمائید .
مهدي جان منظورتان رو از مراحل تست متوجه نميشم. اما ما با 8 تا كاربر كار كرديم و هيچ مشكلي نبود/ يعني به محض ورود / خروج كاربرا تو جدول مربوطه اطلاعات لازم ثبت ميشد و در فرم هم اطلاعات IP و نام كاربري و باقي چيزا نمايش ميشد.
قسمت ارسال پيام هم به هر دو حالت به تمام اعضا / يك كاربر خاص تست شد و مشكلي نبود.

بسيار متشكرم

مدير عزيز، ي راهنمايي كوچيك مي كني كه چه جوري نام كاربري رو بتونم در حالت New Record فرم در فيلدي داشته باشم؟ (بيشتر مورد نظرم در Default Value است)

soroush_k12
شنبه 07 فروردین 1389, 22:38 عصر
سلام جناب آقای قربانی
اولا دستتون واقعا درد نکنه بسیار جالب و مبتکرانه بود.من نمونه رو تست کردم.یکی از مواردی که فکر میکنم باید اصلاح بشه اینه که در حالتی که شما بصورت گروهی پیام میفرستید ، پیام ها بصورت سریال یکی بعد از دیگری روی صفحه نمایش ظاهر میشه و تا کاربر اول ok نکنه پیام برای کاربر بعدی نشان داده نمیشه.امکان حل این مشکل وجود داره که همه کاربرا باهم پیام رو ببینن؟
با تشکر

soroush_k12
دوشنبه 09 فروردین 1389, 20:08 عصر
سلام جناب آقای قربانی
اولا دستتون واقعا درد نکنه بسیار جالب و مبتکرانه بود.من نمونه رو تست کردم.یکی از مواردی که فکر میکنم باید اصلاح بشه اینه که در حالتی که شما بصورت گروهی پیام میفرستید ، پیام ها بصورت سریال یکی بعد از دیگری روی صفحه نمایش ظاهر میشه و تا کاربر اول ok نکنه پیام برای کاربر بعدی نشان داده نمیشه.امکان حل این مشکل وجود داره که همه کاربرا باهم پیام رو ببینن؟
با تشکر
با سلام مجدد
برای حل این مشکل کسی از دوستان نظری نداره؟

soroush_k12
شنبه 14 فروردین 1389, 19:50 عصر
سلام
ببخشید که مجبور شدم بازم این تاپیک رو بیارم اول.
یک بار دیگه از دوستان خواهش میکمن اگه روش حل این مشکل رو پیدا کردند بیان کنند

مهدی قربانی
دوشنبه 16 فروردین 1389, 08:53 صبح
سلام جناب آقای قربانی
اولا دستتون واقعا درد نکنه بسیار جالب و مبتکرانه بود.من نمونه رو تست کردم.یکی از مواردی که فکر میکنم باید اصلاح بشه اینه که در حالتی که شما بصورت گروهی پیام میفرستید ، پیام ها بصورت سریال یکی بعد از دیگری روی صفحه نمایش ظاهر میشه و تا کاربر اول ok نکنه پیام برای کاربر بعدی نشان داده نمیشه.امکان حل این مشکل وجود داره که همه کاربرا باهم پیام رو ببینن؟
با تشکر


سلام
بررسي مي كنم .

ryonis
دوشنبه 16 فروردین 1389, 13:30 عصر
جواب مثبته ،به عنوان نمونه اين تابع MsgBox رو ببنيد :

If MsgBox("پيام مورد نظر" vbCritical + vbMsgBoxRight + vbOkOnly, _
"پيغام سيستم") = vbOk Then

DoCmd.OpenForm "form1"
Form_Form1.Combo2.SetFocus
Form_Form1.Combo2.Dropdown


End If

دوستان عزيز، نمونه اي كه جناب قرباني آماده كرده بودند رو مدت ها قبل من تست كردم و بطور كامل كار مي كرد. پيشنهاد ميكنم عزيزاني كه بدنبال يادگيري كار هستند به دقت نمونه ارائه شده ايشون رو كنترل كنند.

موفق باشيد:تشویق:

مهدی قربانی
سه شنبه 17 فروردین 1389, 17:23 عصر
سلام
دوست گرامي soroush_k12 ضمن تشكر از كشف اين ايراد ظريف بايد عرض كنم كه شخصاً اين مورد رو تست كردم و اشكال مورد نظر محقق شد بنابراين كدهاي رخداد On Timer فرم frm_startup‌ رو تغييراتي دادم كه اين نقيصه برطرف شد و نمونه اصلاحي رو براي استفاده دوستان تقديم مي كنم .

nemat2000
پنج شنبه 19 فروردین 1389, 21:03 عصر
سلام
مي تونيد بگويد چطور مي شه به جاي استفاده از نام userName از IP كامپيوترها استفاده شود
با تشكر

مهدی قربانی
شنبه 21 فروردین 1389, 08:54 صبح
سلام
دوست گرامي نمونه حاضر IP ‌رو هم ذخيره مي كنه بنابراين شما با انجام تغييراتي در كدها و كنترلها فيلد IP رو جايگزين فيلد username كنيد ولي به نظر مياد استفاده از User Name‌به نوعي بهتر باشه چرا كه كاربر ممكنه از دستگاههاي مختلفي به شبكه متصل بشه در اينصورت به مشكل برخورد خواهد كرد .

nemat2000
شنبه 21 فروردین 1389, 20:49 عصر
سلام آقاي قرباني
لطفاً بگويد كه كدم كدها را بايد تغير بدام يا يك نمونه بزاريد. آخه من هر چه تلاش كرم سيستم بهم پيغام خطا مي دهد و بر نامه قفل مي شه
با تشكر
ضمناً ما يك گروه وچند نفره هستيم كه در شبكه و فقط يك user name داريم

ryonis
شنبه 04 اردیبهشت 1389, 00:46 صبح
سلام
مي تونيد بگويد چطور مي شه به جاي استفاده از نام userName از IP كامپيوترها استفاده شود
با تشكر
فکر کنم مشکل شما با تابع environ حل میشه. اساتید بیشتر توضیح بدن ...:متفکر:

wolfstander
دوشنبه 20 مرداد 1393, 10:44 صبح
با سلام به همه دوستان
با خوبی و خوشی داشتیم از این کد استفاده میکردیم و درست هم کار میکرد
متاسفانه ویندوز64 بیت ، به این کدها ایراد میگیره
و نمیتونه اجراشون کنه
کسی هست که برای ویندوز 64هم راه حلی داشته باشه؟
باتشکر فراوان

oskarimbns
دوشنبه 21 مهر 1393, 07:08 صبح
با سلام در این برنامه امکان این هست که اگه روی سایر سیستم ها این نرم افزار نصب نباشه و کاربرها با این نرم افزار کار نکنن باز بشه براشون پیغام فرستاد؟ اگه جواب منفی است چطور میشه چنین امکانی به این نرم افزار اضافه کرد؟

parsa70
دوشنبه 23 تیر 1399, 10:40 صبح
سلام
دوست گرامي soroush_k12 ضمن تشكر از كشف اين ايراد ظريف بايد عرض كنم كه شخصاً اين مورد رو تست كردم و اشكال مورد نظر محقق شد بنابراين كدهاي رخداد On Timer فرم frm_startup‌ رو تغييراتي دادم كه اين نقيصه برطرف شد و نمونه اصلاحي رو براي استفاده دوستان تقديم مي كنم .
سلام

متاسفانه روی ویندوز های ۶۴ بیتی کار نمیکنه
و با این نرم افزار هم https://barnamenevis.org/showthread.php?495010-%D8%AA%D8%B7%D8%A8%DB%8C%D9%82-%D8%B9%D8%A8%D8%A7%D8%B1%D8%A7%D8%AA-Declare-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-%D8%A7%DA%A9%D8%B3%D8%B3-%D8%A8%D8%A7-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2&p=2261957#post2261957
هم تست کردم بازم جواب نمیده و درست نمیشه و بعد از کلمه Declare
PtrSafe هم تایپ میکنم جواب نمیده.
امکانش هست برای ویندوز ۶۴ بیتی هم درست کنید؟

سپاس

parsa70
سه شنبه 31 تیر 1399, 10:42 صبح
سلام

متاسفانه روی ویندوز های ۶۴ بیتی کار نمیکنه
و با این نرم افزار هم https://barnamenevis.org/showthread.php?495010-%D8%AA%D8%B7%D8%A8%DB%8C%D9%82-%D8%B9%D8%A8%D8%A7%D8%B1%D8%A7%D8%AA-Declare-%D9%81%D8%A7%DB%8C%D9%84-%D9%87%D8%A7%DB%8C-%D8%A7%DA%A9%D8%B3%D8%B3-%D8%A8%D8%A7-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%88%DB%8C%D9%86%D8%AF%D9%88%D8%B2&p=2261957#post2261957
هم تست کردم بازم جواب نمیده و درست نمیشه و بعد از کلمه Declare
PtrSafe هم تایپ میکنم جواب نمیده.
امکانش هست برای ویندوز ۶۴ بیتی هم درست کنید؟

سپاس
سلام
راه حلی نداره؟ ممنون