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

كيفية تعديل مسمى حقل بملف بقاعدة البيانات اكسس

بدأه shalwan في 2 يونيو 2010 · 16 رد · 5,061 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي ملف بقاعدة بيانات البرنامج من نوع اكسس وبه حقل ارغب تعديل اسمه كيف؟

مثال كان لدي حقل اسمه month عند استخدام الكوبري(sql) لا يتعرف على الأسم لأنه يعتبره شهرالتاريخ وليس حقل

ايضا يوجد ملف آخر ارغب اضافة حقل اليه كيف؟

تعبت من فتح قاعدة البيانات وتعديل حقولها

وللفائده هل لي ان اكون قاعدة بيانات اكسس جديده بواسطة الدولفي ؟

شكرا لكم

علما بأني بحثت عن هذه المعلومه اكثر من يومين بالمنتدى ولم اجدها تحياتي

تم تعديل هذه المشاركة بواسطة shalwan في 3 يونيو 2010 في 12:05

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#2
اقتباس
- ارغب تعديل اسمه كيف؟

1-حدد برمجيا تريد ان تغير اسم الحقل .... مع اني لا انصح بذلك .

2-يجب مراعات قوانين انشاء قواعد البيانات من بينها عدم استعمال حقول باسم مفتيح المشهورة و مثل if then date

اقتباس
3-ايضا يوجد ملف آخر ارغب اضافة حقل اليه كيف؟

???????????

اقتباس
تعبت من فتح قاعدة البيانات وتعديل حقولها

احسن طريقة هي يدويا

اقتباس
للفائده هل لي ان اكون قاعدة بيانات اكسس جديده بواسطة الدولفي ؟

استعمل المكون AccessApplication

#3

السلام عليكم ورحمة الله وبركاته

اخي زكري اشكرك على مبادراتك بالأجابه وشكري موصول لهذا المنتدى ومن فيه

زكيري عبد العالي كتب:

1-حدد برمجيا تريد ان تغير اسم الحقل .... مع اني لا انصح بذلك .

كيف لي ان اعدله وبدون ازعاج ممكن مثال على حقل او حقلين

زكيري عبد العالي كتب:

2-يجب مراعات قوانين انشاء قواعد البيانات من بينها عدم استعمال حقول باسم مفتيح المشهورة و مثل if then date

وقعنا فيها والبرنامج من ايام الفوكس برو اي له الآن 22 سنه فمعذرة

زكيري عبد العالي كتب:

???????????

ارغب ان اضيف حقل جديد لملف يعمل بقاعدة البيانات لوسمحت لي بمثال

زكيري عبد العالي كتب:

احسن طريقة هي يدويا

كلامك صحيح بس البرنامج موزع لدي مستخدمين بجده ومكه وابها والرياض وارغب اي تعديل يصلهم

زكيري عبد العالي كتب:

استعمل المكون AccessApplication

هذا المكون ايش يعمل وكيف اعمل به هل لديك مثال لتكوين قاعده جديده

لا تؤاخذنا اخي زكري

تم تعديل هذه المشاركة بواسطة shalwan في 3 يونيو 2010 في 21:44

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#4

وين الناس مايردوا

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#5

ممكن تستخدم جمل ال SQL من داخل الدلفي فهي مدعومة وبسيطة لهذا الغرض...

#6
mmoo كتب:

ممكن تستخدم جمل ال SQL من داخل الدلفي فهي مدعومة وبسيطة لهذا الغرض...

شكرا mmoo ولكن لي امل ان ارى منك مثال لأني محتاج (دولفي 6)

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#7
shalwan كتب:

شكرا mmoo ولكن لي امل ان ارى منك مثال لأني محتاج (دولفي 6)

السلام عليكم ورحمة الله وبركاته

بالنسبة لموضوعي وجدت ما يضيف حقل الى الملف ولكن لم اجد تعديل مسمى حقل بالملف

وبدون ازعاج انتظر منك مثالا لذلك ان امكن

اما بالنسبه للتاريخ الذي نوهت انا عنه لك فهذا كنت انوي به شخص اخر لديه معضله فاسمح لنا عن ذلك

شكرا لك

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#8

السلام عليكم...

لا أعتقد أنه يوجد في لغة SQL أمر لتغيير اسم حقل، لكن يمكنك القيام بالخطوات التالية من خلال المكون ADOCommand

1. إنشاء حقل جديد بالاسم الجديد (مطابق في نوعه و حجمه للحقل القديم) باستخدام الأمر ALTER TABLE

ALTER TABLE tablename ADD COLUMN newfieldname fieldtype(size)

2. نسخ البيانات من الحقل القديم إلى الحقل الجديد باستخدام جملة UPDATE

UPDATE tablename SET newfieldname = oldfieldname

3. حذف الحقل القديم باستخدام الأمر ALTER TABLE

ALTER TABLE tablename DROP COLUMN oldfieldname

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#9

والله يا أخ " najy_zl" سبقتني كنت ناوي اضع نفس الحل ولكن لي اضافة قبل هذا الحل:

لو كان عندنا حقل بأسم احد الكلمات المحجوزة في sql مثلاً "month" ونريد استخدامه بجملة sql يجب علينا وضعه بين هذين العلامتين [month] لكي تفرق بينه وبين المعامل الخاص بالشهر في sqlبهذا يمكن ان تستغني عن فكرة تغيير أسم الحقل .. لكن سأضع الحل وهو يشبه حل الأخ " najy_zl" جزاه الله خير لكن بتطبيق الملاحظة السابقة لكي لايظهر خطأ...

علماً ان الصيغة القياسية لتغيير اسم حقل في جدول قاعدة بيانات في جملة sql هو كما يأتي:

ALTER TABLE table_name RENAME COLUMN [column1] TO [column2]

ولكن عندما اجربه يظهر خطأ ولا اعلم ما هو السبب..

الحل: على فرض ان لدينا حقل نصي بأسم "month" في جدول بأسم "store" ونريد ان نغير أسم الحقل الى أسم "buy_month"

ADOQuery1.SQL.Clear();
ADOQuery1.SQL.Add('ALTER TABLE store  add [buy_month] VARCHAR(30)');
ADOQuery1.ExecSQL();

ADOQuery1.SQL.Clear();
ADOQuery1.SQL.Add('update store set [buy_month] = [month]');
ADOQuery1.ExecSQL();

ADOQuery1.SQL.Clear();
ADOQuery1.SQL.Add('ALTER TABLE store  DROP [month]');
ADOQuery1.ExecSQL();

تحياتي...

تم تعديل هذه المشاركة بواسطة mmoo في 2 أكتوبر 2010 في 16:47

#10
najy_zl كتب:

السلام عليكم...

نرجو الاستفادة و السلام.

mmoo كتب:

والله يا أخ " najy_zl" سبقتني كنت ناوي اضع نفس الحل ولكن لي اضافة قبل هذا الحل:

تحياتي...

السلام عليكم ورحمة الله وبركاته

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

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

تحياتي للجميع

تم تعديل هذه المشاركة بواسطة shalwan في 2 أكتوبر 2010 في 18:37

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#11

ولا تهون أخي هذا واجبنا ولا تنسى ان زكاة العلم نشره...

بما ان عدد الحقول مهما بلغ كبر الجدول تعتبر قليلة جداً بالنسبة لجملة FOR فلا مانع من استخدامها:

For  i := 0 To  ADODataSet1.Fields.Count-1 do

    IF ADODataSet1.Fields.FieldName='month' THEN

      Begin

      //
       //ضع الكود المطلوب هنا...
        //

          break;
      End;

جملة break هنا ضرورية لاننا سوف نغير في الحقول ولكي نتجنب الاخطاء المحتملة بعد التغيير..

تحياتي...

تم تعديل هذه المشاركة بواسطة mmoo في 2 أكتوبر 2010 في 20:47

#12
mmoo كتب:

ولا تهون أخي هذا واجبنا ولا تنسى ان زكاة العلم نشره...

بما ان عدد الحقول مهما بلغ كبر الجدول تعتبر قليلة جداً بالنسبة لجملة FOR فلا مانع من استخدامها:

For  i := 0 To  ADODataSet1.Fields.Count-1 do

    IF ADODataSet1.Fields.FieldName='month' THEN

      Begin

      //
       //ضع الكود المطلوب هنا...
        //

          break;
      End;

جملة break هنا ضرورية لاننا سوف نغير في الحقول ولكي نتجنب الاخطاء المحتملة بعد التغيير..

تحياتي...

اخي العزيز هذا الكود لا يعمل وانما يتجاوز بعد if مباشرة الى end; حاول تطبيقه الله اعلم قد يكون اخطأت بتركيبته

وكأن الحقل غير موجود

انا اخذت for ثم if ثم الكود ثم break; end; بالضبط كما اوضحته انت لكن لم يعمل حاول مع جزيل الشكر

هل من الضروري فتح الملف

وايضا لم يعمل مع فتح الملف

تم تعديل هذه المشاركة بواسطة shalwan في 3 أكتوبر 2010 في 12:00

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#13

أخي انا جربت المثال من الأول وهو يعمل بصورة صحيحة ولكن لي ملاحظة أين وضعت كلمة Begin هل بعد IF كما في المثال أم بعد For ففي هذه الحالة سيتم الخروج من أول دورة...

وهذا المثال كامل والملف المصدري بالمرفقات على دلفي 2010

 For  i := 0 To  ADODataSet1.Fields.Count-1 do
  Begin

    IF ADODataSet1.Fields.FieldName='month' THEN
       Begin

          ADOQuery1.SQL.Clear();
          ADOQuery1.SQL.Add('ALTER TABLE store  add [buy_month] VARCHAR(30)');
          ADOQuery1.ExecSQL();

          ADOQuery1.SQL.Clear();
          ADOQuery1.SQL.Add('update store set [buy_month] = [month]');
          ADOQuery1.ExecSQL();

          ADOQuery1.SQL.Clear();
          ADOQuery1.SQL.Add('ALTER TABLE store  DROP [month]');
          ADOQuery1.ExecSQL();

           MessageDlg('تم تغيير أسم الحقل' , mtInformation ,[mbok],0);
          break;
       End;
    End;

تحياتي.....

change name field.rar

1
#14
mmoo كتب:

أخي انا جربت المثال من الأول وهو يعمل بصورة صحيحة ولكن لي ملاحظة أين وضعت كلمة Begin هل بعد IF كما في المثال أم بعد For ففي هذه الحالة سيتم الخروج من أول دورة...

وهذا المثال كامل والملف المصدري بالمرفقات على دلفي 2010

 For  i := 0 To  ADODataSet1.Fields.Count-1 do
  Begin

    IF ADODataSet1.Fields.FieldName='month' THEN
       Begin

          ADOQuery1.SQL.Clear();
          ADOQuery1.SQL.Add('ALTER TABLE store  add [buy_month] VARCHAR(30)');
          ADOQuery1.ExecSQL();

          ADOQuery1.SQL.Clear();
          ADOQuery1.SQL.Add('update store set [buy_month] = [month]');
          ADOQuery1.ExecSQL();

          ADOQuery1.SQL.Clear();
          ADOQuery1.SQL.Add('ALTER TABLE store  DROP [month]');
          ADOQuery1.ExecSQL();

           MessageDlg('تم تغيير أسم الحقل' , mtInformation ,[mbok],0);
          break;
       End;
    End;

تحياتي.....

طبقت البرنامج ولا حظت بأن ADODataSet1 غير مربوطه بالملف store ولذلك لو وضعت ملف غيره مثلا shopf لتم التعديل عليه ارجوا مراجعة البرنامج وتوضيح ما يفيدني لك الشكر

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

#15

السلام عليكم...

هناك نقطة مهمة بالنسبة إلى مقارنة النصوص في دلفي. فعند مقارنة النصوص باستعمال علامة المساواة (=) فإن دلفي تقوم بمقارنة ثنائية (Binary) حيث تكون العملية حساسة لحالة الأحرف، أي أنه مثلاً كلمة month ليست نفسها كلمة Month بسبب اختلاف حالة الحرف m (بينما محركات قواعد البيانات لا تهتم لحالة الأحرف، مثلاً الكلمات month و Month و MONTH كلها متساوية).

و بالتالي - و لكي نقوم بمقارنة نصية Text - فإنه إما أن نقوم بتوحيد حالة الأحرف للنصين المراد مقارنتهما (باستعمال UpperCase أو LowerCase)، مثلاً:

if UpperCase(ADODataSet1.Fields.FieldName) = 'MONTH' then

أو أن نستعمل الدالة SameText للمقارنة، مثلاً:

if SameText(ADODataSet1.Fields.FieldName, 'month') then

* هناك احتمال آخر لعدم التعرف على اسم الحقل - و هو خطأ كتابي! - هو وجود فراغات قبل أو بعد اسم الحقل ضمن علامات التنصيص.

نرجو الاستفادة و السلام.

1

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#16

أخ shalwan ال store هو جدول في ملف قاعدة البيانات وليس ملف ...

وال ADODataSet1 مربوط بملف قاعدة بيانات اسمه shop ويستعمل الجدول store

اما ال ADOQuery1 مربوط بنفس قاعدة البيانات shop ولا داعي لتحديد أسم الجدول له لاننا سوف نحدده بجملة ال sql ولا داعي لتفعيل خاصية ال active له...

شكرا أخ najy_zl على الاضافة بالفعل قد يكون هذا احد اسباب ظهور اخطاء...

تحياتي...

#17
najy_zl كتب:

السلام عليكم...

و بالتالي - و لكي نقوم بمقارنة نصية Text - فإنه إما أن نقوم بتوحيد حالة الأحرف للنصين المراد مقارنتهما (باستعمال UpperCase أو LowerCase)، مثلاً:

أو أن نستعمل الدالة SameText للمقارنة، مثلاً:

نرجو الاستفادة و السلام.

mmoo كتب:

أخ shalwan ال store هو جدول في ملف قاعدة البيانات وليس ملف ...

شكرا أخ najy_zl على الاضافة بالفعل قد يكون هذا احد اسباب ظهور اخطاء...

تحياتي...

السلام عليكم

خطأي لم افهم التعامل مع adodataset1 وقمت يالرد بدون تأني ومحاولات لكن اكتشفت ان ربط الملف في commandtext انا اتعامل مع adotable ولكوني لا اعرف التعامل مع adodataset1

ولكن رديت واستفدت منكم مقارنة الحروف والتي هي من اهم العوامل التي تراعى فعلا عند التعامل مع الجدول

اشكركم على سرعة الرد وهذا يدل على الطيبه والتواضع

تحياتي

نسأل الله الجنه لنا ولوالدينا ولمن لهم حق علينا

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