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

تحديث قاعدة البيانات

مغلق
بدأه asrocks في 23 ديسمبر 2007 · 17 رد · 1,827 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أنا بصدد القيام بمشروع مستخدماً قواعد بيانات ADO لكن واجهتني مشكلة عند تعبئة البيانات في الـ DBGride بحيث عندما أقوم بإضافة سجل جديد فإن الحقل ID لا يأخذ قيمته بالشكل الصحيح بل يأخذ القيمة 0

الحقيقة إني جربت أقوم بما يلي

ADOtable1.active:=false;

ADOtable1.active:=true;

نجحت الطريقة و لكن البرنامج يرج أو يهتز عند تنفيذ هذا الأمر و أظن أنها غير لائقة.

فهل من طريقة أخرى...... و لكم جزيل الشكر

#2

السؤال غير واضح

هل الحقل autoinc لا يعمل ...

#3

من الاحسن عدم تعبئة البيانات في DBGrid مباشرة بل استعمال DBEdit وغيره من المكونات DB

والسلام عليكم

d4baa0.gif
#4

السلام عليكم

أولاً شكراً على ردودكم.

ثانياً الحقل inc هو Autoinc طبعاً.

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

حيث أن الحقل id لا يكمل عده و يأخذ القيمة 0

و يعرض البيانات مثلاً كهذه:

ID name Lastname Tel

1 A AA 123

2 B BB 321

3 C CC 231

//عند إدخال سجل جديد:

0 V D 144

و عند إغلاق البرنامج و إعادة فتحة يعود حقل ID نظامي

أعتقد أنه يجب تحديث البيانات UPDATE .

لعلي أجد الحل عندكم.

و السلام عليكم

#5

الا تقوم بحفظ السجل باستخدام Post ؟

d4baa0.gif
#6

السلام عليكم

انظر إلى المرفق سترى المشكلة عينها

سواء مباشرة في DBGride أو عن طريق DBControls

و إلى اللقاء

database.zip

#7

شو ما حدا حمل المرفق

#8

اصبر، لا يوجد دلفي بجهازي الان

ساقوم بتثبيته والق نظرة على المرفق

تم تعديل هذه المشاركة بواسطة B.M.AbdelAziZ في 26 ديسمبر 2007 في 15:16 — السبب: تثبيت دلفي

d4baa0.gif
#9

غالبا استعمل اوامر sql مع اكسس

لكن و حين استعمل الجداول ADOTable1 اكتب

ADOTable1.Post;

ADOTable1.Close;

ADOTable1.Open;

تصلح ولا اري اي اهتزاز للشاشة

لكن ربما تصلح طريقة ارسال اجباري للبيات عن طريق commit

بالتوفيق

#10

المشكلة هي أنك تريد إظهار ال AutoNumber الذي في الاكسس مباشرة داخل ال DBGraid, حيث أنه يتم توليد هذا الرقم من الاكسس عند عمليه الحفظ و بالتالي لا يتم عرضه مباشرة و لا يجري تحديث ال Dataset الخاصة بالا Adotable.

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

لح المشكلة أمامك حلين:

1- إما ان تقوم بعدم إظهار هذا الحقل و بالتالي لا مشكلة حيث يتم الزيادة بشكل تلقائي في قاعدة البيانات و تجري الأمور بخير دون أن يلاحظ المستخدم ذلك.

2- أن تقوم أنت بشكل تلقائي بتوليد الرقم ووضعه في الحقل و ذلك بكتابة تعليمة SQL لجلب الرقم الذي تريد, كما يلي:

select max(fieldName) + 1 from tableName

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

و السلام عليكم,

تم تعديل هذه المشاركة بواسطة Wael Dalloul في 27 ديسمبر 2007 في 19:01 — السبب: إضافة 1,سقط سهواً

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#11

أخي Wael Dalloul سأبين لك ماذا أفعل:

الحقيقة البرنامج هو برنامج محادثة و أريد أن أشغله على شبكة محلية LAN .

لذلك فسوف أوزع هذا البرنامج (Client) على عدة حواسيب و يكون هناك حاسوب معين و الذي يحوي قاعدة البيانات(Server).

و بالتالي فإن كل حاسوب يقوم بعملية الدخول إلى البرنامج سوف يسجل دخوله في قاعدة البيانات(و ذلك بكتابة قيمة معينة)طبعاً في الحاسوب Server.

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

و المشكلة هي أنو عند دخول شخص ما إلى البرنامج سوف لن يظهر عند الحاسوب الاّخر أنو هذا الشخص دخل إلى البرنامج

إلا بعد تحديث Dataset ليرى قيمها من جديد.. وبالتالي يظهر تحيث Dataset في حقل ID

و السلام عليكم و شكراً على الرد مرة أخرى.

#12

لا تستخدم قاعدة Access ولا اي نوع من قاعدة البيانات

لان عدد Client صغير استخدم جدولArray فقط

d4baa0.gif
#13

أخي ممكن توضح أكثر عن استخدم جدولArray

و إذا أردت أن أستخدم قاعدة بيانات mysql و أردت أشغله على النت أي أربطه ب Server بماذا تنصحني.

و شكراً مرة أخرى.

#14

جدول:

User : Array[1..64] of String;

ان كان البرنامج يعمل في Lan فما فائدة القاعدة!

اما ان اردته ان يعمل في Internet فلا يوجد احسن من MySQL من حيث البساطة والسهولةو... مجانية

d4baa0.gif
#15

عذراً أخي بس سؤال أنو كيف رح يكون جدول Array مشترك بين الحواسيب.

أنا أعرف أنو Array عبارة عن متحولات تخزن في RAM و بالتالي فإن الحواسيب الأخرى لن تستطيع الوصول إلى محتوى المصفوفة(صحيح)؟؟؟

و أنا الحقيقة ناوي أشتغل مع MYSQL بس حتبقى نفس المشكلة في قاعدة البيانات.

فيا ريت تعطيني توضيح كامل عن الفكرة علماً أنني أبحث عنها في النت أيضاً.

و شكراً

#16

الحواسيب Clients لا تتصل بالقاعدة كما تعتقد

فقط Server يتصل بالقاعدة وهو يرسل المعلومة للحواسيب Clients

ان كانت الشبكة القاعدة ممكن تكون MySQL

ان كانت الشبكة LAN غير كلمة قاعدة بجدول Array

قهمت ؟

d4baa0.gif
#17

شكراً أخي على الإقادة

#18

الله يعطيك العافية أخوي

هذا الموضوع مغلق.

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