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

سؤال في ال SQL ؟

مغلق
بدأه Fadi-l في 5 أبريل 2004 · 18 رد · 4,586 مشاهدة · في أرشيف منتدى الدلفي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كثير من الشركات تطلب للعمل مبرمج يتقن الديفلي وقواعد بيانات الـ SQL فماهي الـ SQL وكيف يمكن أن أتعلمها

وشكرا جزيلا لكم .

- طريق الألف ميل يبدأ بخطوة -

- ألعاب من تصميمي:

المنقذ

/index.ph...st&id=91370

الأربع تربح

/index.ph...st&id=91369

المتاهة

/index.ph...st&id=91374

#2

جملة SQL هي لغة إستعلامات عن البيانات في قواعد البيانات .

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

أيضا . يمكنك أضافة وحذف وتحديث البيانات بواسطة هذه اللغة .

لغة سهلة وبسيطه وغير معقدة . أذا حاولت فقط النظر بتمعن في صيغتها

وعادة ماتبدأ بكلمة SELECT أي إختر .

Select * from Table Where ID = 15

تعني الجملة السابقة اختر جميع البيانات من الجدول التي يكون معرفها = 15

* تعني (جميع )

from من

Where عندما .

ID حقل في الجدول يسمى Id (المعرف )

#3

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

اتفقنا

When You Started With Delphi ...You Could Not Stop!

delphiteam2.jpg

alharmoodiGropu.com

#4

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

وسؤال ثاني هل الـ SQL مرتبطه بالكائن Query فقط .

- طريق الألف ميل يبدأ بخطوة -

- ألعاب من تصميمي:

المنقذ

/index.ph...st&id=91370

الأربع تربح

/index.ph...st&id=91369

المتاهة

/index.ph...st&id=91374

#5

اهلين فريق دلفي .

ممكن نفتح الموضوع . بس خبرتي في الدلفي معدومة .

لكن في SQL ممتازة .

اخ فادي . ليس هناك أكواد كثيرة في جملة SQL

هي فقط

SELECT

Update

Delete

Insert

جمل بسيطة . فقط أكتب امامها اسم الجدول . والشرط Where

وعندما تفهم هذه العبارات يسهل عليك كتابتها .

#6

طيب تبادل خبرات انا ماشي حالي شوي بالدلفى بس في الSQl شوي عندي خبرة وفي مشروعي في ستة أو سبع عبارات فقط:)

اذا خلينا نستفيد من خبرتك أخوي (أجراء) Function :)

When You Started With Delphi ...You Could Not Stop!

delphiteam2.jpg

alharmoodiGropu.com

#7

مرحبا : delphi team

انا جاهز .

#8

طيب أخوي فانكشن ممكن تبلش لأنو أنت عندك خبرة أكتر

وسؤالي هو كيف يمكن بعبارات SQl احضار معلومات من DBGrid

يعني أنا بدي مثلا لكل زبون صفحة عنه وتكون توصل المعلومات بواسطة عبارات الSQL إلى هذا الفورم ولنسميه صفحة الزبائن

When You Started With Delphi ...You Could Not Stop!

delphiteam2.jpg

alharmoodiGropu.com

#9

وينكم شباب

When You Started With Delphi ...You Could Not Stop!

delphiteam2.jpg

alharmoodiGropu.com

#10

اهلين .

ماعرفت القصد من DBGrid هل هي أداة في الدلفي أم ماذا .

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

ولكن SQL هو جملة تنفيذ على البيانات لاختيار وحذف وتحديث وادخال البيانات .

اما بالنسبة DBGrid فالبيانات التي عادة تكون موجوده بها هي في الاصل منفذه بجملة SQL لعرضها في الشبكه فلاداعي أن تقوم بأخذ البيانات من الشبكة . ومن الافضل أن تأخذ البيانات من قاعدة البيانات ,

#11

بالنسبة لعرض معلومات زبون .

اذا كان هناك جدول خاص لزبائن Customers. وجدول خاص بالمعلومات عن الزبائن info.

العلاقة بين الجدولين هو حقل ID_cus

اعرض مثلا الزبائن بفورم . وبصيغة برمجية حاول أن تحصل على رقم الزبون .

عندما تحصل على رقم الزبون مثلا رقم 10 .

يبقى عليك انت تصيغ جملة SQL قبل تنفيذها .

عندما نضع الرقم 10 في متغير نسميه IDs مثلا .

سنركب جملة SQL في هذا الكود

Select * from Info Where id = IDs

IDs هو في الاصل ذو قيمة 10

اذن ستكون معنى الجملة السابقة هي

Select * from Info Where id = 10

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

واصبحت جملة SQL تتغير عندما يقوم المستخدم بتحديد زبون معين .

فقد يحدد رقم 9 أو 7 أو 8 ............... الخ .

سوف تكون النهاية هي جملة SQL مركبة حسب تغير (المتغير IDs(

#12

إخواني أعتقد أن موضوعا كهذا من الأفضل مناقشته في منتدى قواعد البيانات

ألا تتفقون معي ؟

#13

هذا الموضوع صحسح عن الSQL لكن المتعلق بدلفى

انا أعرف أنا ان SQL واحد لكن يمكن يكون في بعض التغيرات مثلا في استخدام الازرار وكيفية ربط الQUERY الخخخخخخخ

When You Started With Delphi ...You Could Not Stop!

delphiteam2.jpg

alharmoodiGropu.com

#14

مقدمة لأوامر الـ SQL في الدلفي ( للمبتدئين )

عندما تتعامل مع قواعد البيانات لابد ، وانك تحتاج لان تستخدم اوامر SQL عاجلا او آجلاً ، وكثير من المبرمجين يواجهون مشاكل في التعامل مع اوامر SQL ، لذلك اردت هنا ان اشرح بعضا من اهم الاوامر حتى يستفيد منها الاخوة المبتدئين :

طبعا لا تخلو عمليات التعامل مع قواعد البيانات من :

- اضافة

- عرض أو بحث

- تعديل

- حذف

بالاضافة الى عمليات اخرى كثيرة ، ولكن هذه تقريبا العمليات الاساسية

اريد ان افترض هنا انه يوجد لديك بالفعل قاعدة بيانات مبنية وجاهزة ، وبه جدول للعملاء باسم Cust وذلك بالمواصفات التالية :

- حقل نصي لرقم العميل باسم CustNo

- حقل نصي لاسم العميل باسم CustName

- حقل نصي لهاتف العميل باسم Tel

- حقل تاريخ لبداية التعامل باسم StartDate

- حقل رقمي للرصيد الافتتاحي باسم StartAmount

لاحظ اني حاولت في هذا المثال ادراج اغلب انواع البيانات ( نصي ، رقمي ، تاريخ )

ايضا افترض انه فعلا قد قمت ببناء نموذج بسيط للتعامل مع الجدول أعلاه ، وقمت بربط قاعدة البيانات عن طريق ADOConnection ، وايضا اضفت استعلام ADOQuery ، وثم اضفت EditBox وليس DBEdit لانه هذا موضوع آخر وذلك لكل حقل بحيث يكون عدد الـ EditBox هو 5 بما يساوي عدد الحقول للجدول اعلاه .

اذا نبدأ باضافة البيانات :

ولكن قبل ان نبدأ باضافة البيانات اريد ان اشكر مبرمجي لغة دلفي على تبسيط التعامل مع الـ SQL بواسطة البارامترات (Parameters) ، حيث انها سهلت الكثير من العمل ، واراحتنا من مشكال الـ الفواصل وعلامات الاقتباس (Quotation) ، حيث كان يتطلب بناء الاوامر بلغة الـ SQL الكثير من الجهد وتتبع علامات الاقتباس من اليمين والشمال وكان من المفروض ان تكون عبارة الاضافة بدون البارامترات كالتالي حتى يعمل بالشكل الصحيح :

    with ADOQuery1 do
     begin
      Close;
      SQL.Clear;
      SQL.Add('INSERT INTO Cust');
      SQL.Add('( CustNo,CustName,Tel,StartDate,StartAmount)');
      SQL.Add(' Values');

      SQL.Add('(' + '"' + Edit1.Text + '"' + ',' + '"' + Edit2.Text + '"' );
      SQL.Add(',' + '"' + Edit3.Text + '"' + ',' + '#' + Edit4.Text + '#' );
      SQL.Add(',' + Edit5.Text +')');
      ExecSQL
    end;

فعلا الكثير من العمل ، والكثير من الارباك فيجب احاطة البيانات النصية بعلامة ( " ) ، وبيانات التاريخ بـعلامة ( # ) وترك البيانات الرقمية بدون احاطة بأي علامة ...

ولكن باستخدام البارامترات فاننا لن نحتاج لذلك فكل ما علينا هو كتابة الامر نفسه اعلاه كالتالي وبكود واضح وصريح جدا ، وبدون أي علامات محاطة لا من اليمين ولا من الشمال .

   with ADOQuery1 do
     begin
      Close;
      SQL.Clear;
      SQL.Add('INSERT INTO Cust');
      SQL.Add('( CustNo,CustName,Tel,StartDate,StartAmount)');
      SQL.Add(' Values');
      SQL.Add('(:P1,:P2,:P3,:P4,:P5)');
      Prepared;
      Parameters.ParamByName('P1').Value := Edit1.Text;
      Parameters.ParamByName('P2').Value := Edit2.Text;
      Parameters.ParamByName('P3').Value := Edit3.Text;
      Parameters.ParamByName('P4').Value := Edit4.Text;
      Parameters.ParamByName('P5').Value := Edit5.Text;
      ExecSQL
    end;

اتمنى فعلا انك لاحظت ذلك ، وانك انت ايضا ممتن لفريق عمل دلفي كما هو حالي .

هذا ماكان بالنسبة لاضافة البيانات .

بعد ان اضفنا البيانات فمن المؤكد انك ترغب في البحث فيها او عرضها ويتم ذلك كالتالي :

في هذا الاجراء عرفت متغير نصي واسميته InputString لياخذ قيمة من المستخدم في الـ InputBox حتى يتم البحث عن هذه القيمة وهنا نحن بحث بواسطة رقم العميل ونرغب بعرض البيانات في النموذج نفسه

var
  InputString: string;
begin
  InputString:= InputBox('بحث', 'فضلا ادخل رقم العميل', '');
  if InputString = '' then Exit;

with ADOQuery1 do
 begin
  Close;
  SQL.Clear;
  SQL.Add('SELECT * FROM Cust WHERE CustNo = :P1');
  Prepared;
  Parameters.ParamByName('P1').Value := InputString;
  Open;
End;

if ADOQuery1.RecordCount = 0 then
 begin
 ShowMessage('لا يوجد عميل بهذا الرقم');
 exit;
end else
  begin
  Edit1.Text := ADOQuery1.Fields.Fields[0].AsString;
  Edit2.Text := ADOQuery1.Fields.Fields[1].AsString;
  Edit3.Text := ADOQuery1.Fields.Fields[2].AsString;
  Edit4.Text := FormatDateTime('yyyy/mm/dd', ADOQuery1.Fields.Fields[3].AsDateTime);
  Edit5.Text := ADOQuery1.Fields.Fields[4].AsString;
end;

اذا عرضت البيانات ، قد ترغب في تعديلها وثم حفظ التعديلات في قاعدة البيانات ، لذلك فاننا نستخدم الاجراء التالي لحفظ التعديلات او تحديث البيانات كما يحلو للبعض ان يسميه

with ADOQuery1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('UPDATE Cust');
    SQL.Add(' SET ');
    SQL.Add('CustNo = :P1,CustName = :P2,Tel =:P3,StartDate =:P4,StartAmount=:P5');
    SQL.Add(' WHERE CustNo = :PWHERE');
    Prepared;
    Parameters.ParamByName('P1').Value := Edit1.Text;
    Parameters.ParamByName('P2').Value := Edit2.Text;
    Parameters.ParamByName('P3').Value := Edit3.Text;
    Parameters.ParamByName('P4').Value := Edit4.Text;
    Parameters.ParamByName('P5').Value := Edit5.Text;

    Parameters.ParamByName('PWHERE').Value := Edit1.Text; // For WHERE
    ExecSQL
End;

ولربما لسبب او لاخر ، لاترغب بالتعديل وانما ترغب بحذف هذا السجل فاننا سوف نستخدم هذا الاجراء

with ADOQuery1 do
 begin
  Close;
  SQL.Clear;
  SQL.Add('DELETE FROM Cust WHERE CustNo = :P1');
  Prepared;
  Parameters.ParamByName('P1').Value := Edit1.Text;
  ExecSQL
End;

هذا ماكان لدي بخصوص التعامل مع اوامر الـ SQL ، ولربما توجد طرق أخرى اكثر احترافية ، انا شخصيا اجهلها فارجو من المحترفين هنا عرضها حتى تعم الفائدة للكل .

واخير احب ان اضيف اجراء اخير ليس له علاقة بالتعامل مع قواعد البيانات ولكني دائما استخدمه لتفريغ الحقول (EditBox) بعد أي اجراء من السابق أعلاه ، وبما اننا نحتاج هذا الاجراء اكثر من مرة وفي نفس البرنامج فمن الاوجه ان نقوم ببناء اجراء واحد لذلك ، ومناداته عند الحاجة وهو كالتالي :

procedure DoNull;
begin
form1.Edit1.Text :='';
form1.Edit2.Text :='';
form1.Edit3.Text :='';
form1.Edit4.Text :='';
form1.Edit5.Text :='';
end;

ويتم مناداته باسمه كالتالي

DoNull;

واخير وليس أخرا ارجو ان لا تنسوني بدعوة صالحة في ظهر الغيب .

اخوكم

ابوهاني

*المصدر :

http://www.arabdevelopers.com/vbb/showthre...=&threadid=2677

تم تعديل هذه المشاركة بواسطة ابوهاني في 12 أبريل 2004 في 13:58

#16

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

:)

بس الوصلة تفتح على الموقع الرئيسي وليس على المجلد الموجزد في صفحتك

ممكن ترجع تسوي الرابط ولك الشكر الجزيل

أخوكم

تم تعديل هذه المشاركة بواسطة delphi team في 12 أبريل 2004 في 19:50

When You Started With Delphi ...You Could Not Stop!

delphiteam2.jpg

alharmoodiGropu.com

#17

اخوي بالزر الايمن اختار حفظ الهدف

#18

صح والله نسيتها هي D:

الله يكتر من امثالك:)

When You Started With Delphi ...You Could Not Stop!

delphiteam2.jpg

alharmoodiGropu.com

#19

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

أخي أبو هاني

هل يمكن تعريب الأزرار في الـ (InputBox) أو تحويل إتجاهها لتصبح من اليمين الى اليسير.

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

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