الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

برنامج يعتمد عبى أكسس على شبكة محلية

بدأه prince of dark في 22 سبتمبر 2008 · 15 رد · 2,962 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

قمت بصناعة برنامج لورشات الصيانة لمكتب وقد عمل البرنامج الكفائة وحقق المطلووب والحمد لله

لكن طلعولي بشغلة جديدة رح تجنني عملوا شبكة بين ثلاث أجهزة وطلبوا مني أن يعمل البرنامج على الشبكة فقمت بوضع البرنامج في مجلد مشترك ثم عملت إختصرات على كل جهاز فعمل البرنامج بالشكل المطلوب ولكن المشكلة أنه عند إدخال معلومات جديدة على جهاز رقم 1 مثلا لايرى الجهاز رقم 2 التعديلات حتى يقوم بإغلاق البرنامج ثم تشغيله

هل يوجد لديكم ما يطفئ ناري وشكرا

إذا أحببت أحداً فدعه يذهب فإن أحبك عاد وإن لم يعد فأدعو له في السعادة

#2

يمكنك عمل زر تحديث في النافذة الرئيسية يقوم بعمل إغلاق و فقتح لقاعدة البيانات و الجداول

مثلا

ADOConnection1.Close ثم

ADOConnection1.Open

ADOTable1.Active := true

أكيد هناك حل أفضل

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#3
اقتباس
ADOConnection1.Close ثم

ADOConnection1.Open

ADOTable1.Active := true

حل ممتاز

يوجد حل أخر لكنة كبير شوى وهى برمجة سيرفر وكلينت

Comming Soon

#4

الســــلام عليكم :

تستطيع ان تعمل فتح واغلاق لجميع الجداول التي لديك اذا كنت تستخدم data module في حدث oncreat تكتب

For k:=0 to ComponentCount-1 do

if( Components[ k ] is TADOTable ) then

(Components[ k ] as TADOTable).Open;

بعد تعريف ال k في داخل الحدث . ولكن نتمنى من احد يحثنا على طريقة server/client بشكل مفصل والســـــــــــلام .

#5

شكرا شباب على أجوبتكم لكن أنا عامل هذه الطريقة بس المشكلة أنوا البرنامج مفتوح دائما في المكتب

وطلبي هو عند عمل حفظ في القاعدة ينفذ الكود

ADOConnection1.Close

ADOConnection1.Open

ADOTable1.Active := true

في هذه الحالة سوف تتم التحديث في حال عمل تغير على أحد الأجهزة

إذا أحببت أحداً فدعه يذهب فإن أحبك عاد وإن لم يعد فأدعو له في السعادة

#6

انا أفضل أن لا يغلق ال adoconnection بالكامل بل يقوم باغلاق الجدول الذي تم فيه التغيير وذلك من أجل السرعة

أنا طلب مني نفس الطلب ولجأت لعدة طرق منها أن أضع في الحدث afterscroll التعليمات المذكورة سابقا

ولكن سؤال كيف ربطت accessعلى شبكة : هل ربطت الجداول من الاكسس ( وهذا أفضل شيء اعتبره) أو غير ذلك؟

بصراحة أنا أحب الaccess وتعاملت معها كثيرا وأتقنت أشياء كثيرة بفضل مشرفينا الخبراء في المنتدى وبصراحة أتمنى من مشرفنا وائل دلول والشباب الذين لديهم خبرة في هذا

الموضوع أن يكملوا مابدأه مشرفنا العزيز وائل في موضوع قواعد البيانات وهناك بعض الاستفسارات لو نجحت معي لكان اختيار الاكسس لشبكة صغيرة أفضل من sqlserver

بصراحة أتمنى من الأخ swift أن يشرح لنا برنامج client\server مع مثال

#7

أخي الكريم

أقترح أن تقوم بفتح الجدول عند طلبه مثلا عند عملية البيع يقوم المستخدم بالضغط على زر البيع فيقوم الزر بفتح جدول البيع في قاعدة البيانات و يفتح إطار البيع بهذا تكون قد حصلت على التعديلات الأخيرة التي أجريت على الجدول الذي تريده فقط و هذا سيسرع العملية

بإختصار لا تقم بفتح الجدول عند بدء البرنامج إنما قم بفتحه عند طلبه و بهذا إلغيت فكرة زر التحديث

adotable1.active := true

form1.show

بالنسبة للـ Client\Server كفكرة عامة يكون تعامل المستخدم مع نسخة الـ client و الذي يتعامل مع الـ server الذي يتعامل مع قاعدة البيانات

الأمر مشابه للبرامج العادية لكنه سيكون أطول

تم تعديل هذه المشاركة بواسطة rober في 27 سبتمبر 2008 في 14:06

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#8
اقتباس
بصراحة أتمنى من الأخ swift أن يشرح لنا برنامج client\server مع مثال

أخى برمجة الشبكات بسيطة الى حد ما ولكن انصح باللجوء اليها فى المنظمات اللتى تعمل ليست على شبكة واحدة محلية

ولكن لتأخذ فكرة عن موضوع برمجة الشبكات بشكل سريع

-------------------------------------

يكون لدينا 3 عناصر

سيرفر - كلينت - قاعدة البيانات

يكون طريقة الربط بالشكل التالى

(سيرفر <> قاعدة بيانات ) <> كلينت

أولاً : يتم الأتصال بين السيرفر والعميل عن طريق IP / Port

السيرفر سوف يخدم جميع العملاء Client ولكن متى ؟ عندما يرسل العميل أمر للسيرفر بفعل شئ معين ولنفرض أن

ارسل العميل هذا الأمر

  1. if MainClient.active then
  2. MainClient.Socket.SendText(CodeStr('<AddMaster>'
  3. +Edit1.text+'^'
  4. +Edit2.text+'^'));
  5.  

سيتم التعرف على الأمر من خلال السيرفر عن طريقة بهذا الشكل

  1. if command= 'AddMaster' then
  2. ........
  3. end;
  4.  

سوف اقوم إن شاء الله بشرح موضوع كامل عن الشبكات فى الأيام القادمة ان شاء الله حيث يتوفر لدى وقت

يمكنك الأستفادة من هذا المثال

للتحميل : Add_Record14995911182002.zip

تم تعديل هذه المشاركة بواسطة Swift في 27 سبتمبر 2008 في 15:58 — السبب: اضافة TAG الدلفى

Comming Soon

#9

بالنسبة لسؤال الأستاذ : zaher207

ولكن سؤال كيف ربطت accessعلى شبكة : هل ربطت الجداول من الاكسس ( وهذا أفضل شيء اعتبره) أو غير ذلك؟

لقد قمت برالربط عن طريق ADOConnection

*****************************************

بالنسبة لرد الأستاذ : rober

adotable1.active := true

form1.show

إن طلبي تحديدة هو إمكانية رؤية التعديلات مباشرة عند التعديل

إذا أحببت أحداً فدعه يذهب فإن أحبك عاد وإن لم يعد فأدعو له في السعادة

#10

اكيد ربطت عن طريق adoconnection لكن الم يحصل معك تعارض ولم تظهر لك رسالة تقول لك أن الملف قيد الاستخدام وووو؟؟؟؟

#11

السلام عليكم

أخي الكريم أرجو أن أوفق بتوضيح الفكرة

لنفترض أن البرنامج مؤلف من صفحة رئيسية تحتوي على زر يقوم بفتح نافذة أخرى أسمى (بيع)

عند بدء البرنامج يقوم بفتح الـ ADOConnection

و عند النقر على زر نافذة (البيع) يقوم بفتح الجدول الذي يحتوي على بيانات البيع و عند الحفظ يقوم بإغلاق النافذة و إعادة فتحها من جديد(بهذا تكون قد حصلت على كل تحديث جديد على أي جهاز تريد)

أرجو أن أكون قد وفت بتوضيح الفكرة و إن لم توضح أحاول أن أرفق مثال توضيحي بعون الله

أرجو الفائدة

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#12

شكرا لك أخ ROBER على الرد الوافي لكن الا تعتقد أن في هذا الحال يكون سرعة البرنامج متدنية بعض الشيء

إذا أحببت أحداً فدعه يذهب فإن أحبك عاد وإن لم يعد فأدعو له في السعادة

#13
prince of dark كتب:
شكرا لك أخ ROBER على الرد الوافي لكن الا تعتقد أن في هذا الحال يكون سرعة البرنامج متدنية بعض الشيء

أخي أعتقد أن طريقة الأخ روبير بفتح وغلق الجدول -وليس الكونكشن بالكامل- هي الأنسب بالنسبة لحالتك ...

صحيح أنها ستكون بطيئة بعض الشئ وسيزداد بطئها مع إزدياد حجم البيانات في الجداول التي يتم فتحها وإغلاقها مع كل عملية حفظ.

لقد إستعملت هذه الطريقة في السابق وكانت تعمل من دون مشاكل ... وكان عدد المستخدين وصل في احد الشركات ل 15 مستخدم في نفس الوقت.

مع إختلاف وحيد هو ان فتح وغلق الجدول لم يكن مع عملية الحفظ ولكن كان بالضغط على زر للتحديث .. يضغط عليه المستخدم عند الحاجة للتحديث فقط.

وهذا الحل هو حل وسط بحيث لا يكون البرنامج شديد البطئ مع الوقت وزيادة حجم البيانات...

بالتوفيق

#14
prince of dark كتب:
شكرا لك أخ ROBER على الرد الوافي لكن الا تعتقد أن في هذا الحال يكون سرعة البرنامج متدنية بعض الشيء

أخي الكريم لا شكر على واجب

ملاحظة :

صحيح أن العملية ستكون بيطيئة لكن تذكر أنك تقوم بفتح الجدول المطلوب فقط و ليس كل الجداول و هذا أمر يعدل من السرعة قليلا

ثم هناك مشكلة أننا نتعامل مع Access و هي لا توفر الدعم اللازم لمنتجات الشبكة :S

أرجو أن أكون قد قدمت ما هو مفيد :blush:

I'm Away For Sometimes

I'll Finish My Works

Come Back Soon

More Study > More Search > More Try > More Learning > Great Success

#15

سلام عليكم اولا هذه اول مشاركة لي كنت انانيا نوع ما لانني كنت أخذ من هذا منتدي ولا أعطي لهذا قررة بعدم أدخلت أنترنات أن اكون عوض نشط في هذا المنتدي اول رغم ان سؤال محير نوعا ما لكن ساعطيك مفتاح لانني بحت لك عن حل و هذه نتيجة مرنامج متتعدد طبقات اي يعمل علي شبكة وهذا ملف فيديو مهم يساعدك في فهم رغم انك ستغير طريقة إتصالك بالقاعدة البيانات و رجاء إن وجهة صعوبة في أقتناء أفكار من هذا الموضوع ان تسأل

رجاء عاء أن نخرج من هذا زحف في لغات برمج نصبح نجري مع فهود و عباقرة العالم

http://www.codegearguru.com/video/035/DataSnap1.html

#16

شكرا لكم على الردود لقد مت بتجربة جميع الخيارات وأخترت طريقة الأستاذ rober

إذا أحببت أحداً فدعه يذهب فإن أحبك عاد وإن لم يعد فأدعو له في السعادة

مواضيع مشابهة