PDA

View Full Version : سوال: مطلع شدن از اضافه شدن یک رکورد به دیتابیس



barman.ar16
دوشنبه 10 اردیبهشت 1397, 07:15 صبح
سلام دوستان

من یک پروژه قدیمی دارم که الان مجبورم یه کوچولو تغییرش بدم

توی این پروژه دو تا برنامه دارم که در کل با دیتابیس اکسس کار می کنه ... در واقع اومدم یک دیتابیس اکسس رو روی سرور اداره گذاشتم و هر دو برنامه با این دیتابیس کار میکنن

یکی اطلاعات درون اون ثبت می کنه و یکی فقط اطلاعات رو میخونه

توی برنامه اول یک سری رکورد توسط کاربر ثبت میشه خب تا به الان کاربر برنامه دوم خودش باید میرفت فرم مربوطه رو باز میکرد تا ببینه رکورد جدیدی اضافه شده یا نه البته بعد از خوندن یا دیدن رکورد بوسیله یک فیلد اون رو از 0 به 1 تبدیل میکنم که دیگه دوباره توی لیست خونده نشده ها نیاد

اما الان میخوام بدونم چطوری وقتی کاربر اول رکوردی رو ثبت میکه به کاربر دوم هشدار بدم که رکورد جدید ثبت شده تا بره ببینه چه اتفاقی افتاده

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

ممنون میشم هر روشی به ذهن تون میرسه بفرمایید ... هر راه یا میان بر یا هرچیزی که بشه ... فقط نکته اش اینه که پروژه ها از قبل نوشته شده بنابراین نمیتونم روشم رو عوض کنم فقط باید روی همین پروژه ها کار کم و یک کلکی سرش بزنم

متشکرم

رامین مرادی
دوشنبه 10 اردیبهشت 1397, 08:29 صبح
از سوکت استفاده کنید و بصورت برد کست یه پیغامی رو موقع ثبت داده در اون رنج آی پی شبکتون برفرستید . البته با udp و اونطرف هم که داره اطلاعات رو میخونه همیشه listen باشید تا موقع ثبت رکورد متوجه بشه کاربر. سعی میکنم یه نمونه کد بزارم.

رامین مرادی
دوشنبه 10 اردیبهشت 1397, 08:47 صبح
یه پروژه جدید باز کنی و یه باتن بزارید رو فرم و کد های زیر رو کپی کنید.


int PORT = 9876;
UdpClient udpClient = new UdpClient();
private void button1_Click(object sender, EventArgs e)
{
var data = Encoding.UTF8.GetBytes("پیام ارسالی");
udpClient.Send(data, data.Length, "255.255.255.255", PORT);
}
private void Form1_Load(object sender, EventArgs e)
{
udpClient.Client.Bind(new IPEndPoint(IPAddress.Any, PORT));
var from = new IPEndPoint(0, 0);
Task.Run(() =>
{
while (true)
{
var recvBuffer = udpClient.Receive(ref from);
MessageBox.Show(Encoding.UTF8.GetString(recvBuffer ));
}
});
}



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

Helpco
دوشنبه 10 اردیبهشت 1397, 11:16 صبح
من تست کردم برای خودم میاد پیام

barman.ar16
سه شنبه 11 اردیبهشت 1397, 07:38 صبح
من تست کردم برای خودم میاد پیام

دوست عزیز اون دو متغیر رو توی هر 2 پروژه بگذار
توی پروژه اول که ارسال کننده میشه کدهای مربوط به رویداد کلیک باتن رو قرار بده
توی پروژه دوم کدهای مربوط به لود فرم رو قراربده

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

Helpco
سه شنبه 11 اردیبهشت 1397, 07:58 صبح
دوست عزیز اون دو متغیر رو توی هر 2 پروژه بگذار
توی پروژه اول که ارسال کننده میشه کدهای مربوط به رویداد کلیک باتن رو قرار بده
توی پروژه دوم کدهای مربوط به لود فرم رو قراربده

من تست کردم خیلی عالی کار میکنه
از آقای مرادی عزیز بسیار ممنون و سپاسگزارم ، متشکرم
امکان داره فایل های پروژتون اینجا بزارید