ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﯿﻢ
ﻫﺬا ﺷﺮح ﻟﺒﺮﻧﺎﻣﺞ أو ﻟﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت SQL SERVERﺳﺄﻗﻮم ﺑﻌﺮﺿﻬﺎ ﻋﻠﻰ ﺷﻜﻞ
دروس وﻣﻨﺎﻗﺸﺎت وﻛﺬﻟﻚ رﺑﻂ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺑﻠﻐﺔ ﺑﺮﻣﺠﺔ واﺳﺘﺪﻋﺎﺋﻬﺎ واﻟﻌﻤﻠﯿﺎت ﻋﻠﯿﻬ ﺎ
وﺳ ﺘﻜﻮن ﻟﻐ ﺔ اﻟﻔﯿﺠ ﻮال ﺑﯿ ﺰك ﻫ ﻲ اﻟﻠﻐ ﺔ اﻟﺘ ﻲ ﺳ ﺄﻋﺘﻤﺪ ﺑﺎﻟﺸ ﺮح ﻋﻠﯿﻬ ﺎ ﻟﺴ ﻬﻮﻟﺘﻬﺎ
واﻧﺘﺸﺎرﻫﺎ وﻟﺘﻌﻢ اﻟﻔﺎﺋﺪة ﺑﺸﻜﻞ اﻛﺒﺮ و اﻟﻔﻜﺮة واﺣﺪة ﺗﻘﺮﯾﺒﺎ ﺑﯿﻦ ﻛﻞ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ
وﻟﻠﻌﻠﻢ أﻧﻬﺎ ﻟﯿﺲ ﻣﻦ إﻧﺘﺎﺟﻲ اﻟﺨﺎص ﺑﻞ ﻓﯿﻬﺎ ﻗﺴﻢ ﻛﺒﯿﺮ ﺟﻤﻌﺘ ﻪ ﻣ ﻦ ﻣﺨﺘﻠ ﻒ اﻷﻣ ﺎﻛﻦ ﻋﺒ ﺮ
اﻻﻧﺘﺮﻧﯿﺖ واﻷﺻﺪﻗﺎء واﻟﺨﺒﺮة اﻟﺬاﺗﯿﺔ وﻏﯿﺮﻫﻢ
ﻟﻤﻦ ﻫﺬا اﻟﻜﺘﺎب ؟
ﻫﺬا اﻟﻜﺘﺎب ﻣﻮﺟﻪ إﻟﻰ اﻟﻤﺴﺘﺨﺪﻣﯿﻦ اﻟﻌﺎدﯾﯿﻦ واﻟﻤﺘﻘﺪﻣﯿﻦ ﻓﻲ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت واﻟﺒﺮﻣﺠﺔ
ﻛﻤﺎ اﻧﻪ ﺣﻘﻮق اﻟﻨﺴﺦ واﻟﻨﻘﻞ ﻣﻔﺘﻮﺣﺔ ﻟﻠﺠﻤﯿﻊ ﻓﻬﻲ ﻟﻠﻔﺎﺋﺪة اﻟﻌﺎﻣﺔ .
أﺧﯿﺮا إن ﻛﻨﺖ ﻗﺪ أﺻﺒﺖ ﻓﻲ ﺷﻲء ﻓﻬﺬا ﻣﻦ اﷲ وان ﻛﻨﺖ ﻗﺪ أﺧﻄﺌﺖ ﻓﻲ ﺷﻲء ﻓﻬﺬا ﻣﻦ
ﻧﻔﺴﻲ وﻣﻦ اﻟﺸﯿﻄﺎن .
وﻻ ﺗﻨﺴﻮﻧﺎ ﻣﻦ دﻋﻮة ﺻﺎﻟﺤﺔ ﻓﻲ ﻇﻬﺮ اﻟﻐﯿﺐ ﻟﻲ وﻟﻮاﻟﺪيّ وﻟﻠﻤﺆﻣﻨﯿﻦ .
15/7/2000
GOLD NOIL
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺑﺴﻢ ﺍﷲ ﺍﻟﺮﺣﻤﻦ ﺍﻟﺮﺣﻴﻢ
)ﺳﺒﺤﺎﻧﻚ ﻻ ﻋﻠﻢ ﻟﻨﺎ ﺇﻻ ﻣﺎ ﻋﻠﻤﺘﻨﺎ ﺍﻧﻚ ﺃﻧﺖ ﺍﻟﻌﻠﻴﻢ ﺍﻟﺤﻜﻴﻢ(
ﺻﺪﻕ ﺍﷲ ﺍﻟﻌﻈﻴﻢ
اﻟﺒﺪاﯾﺔ اﻟﻜﺘﺎب ﻋﺒﺎرة ﻋﻦ ﻗﺴﻤﯿﻦ:
اﻷول:
ﯾﺘﺤﺪث ﻋﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت SQL SERVERﺑﺸﻜﻞ ﻋﺎم وﯾﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ
ﺑﺸﻜﻞ ﻣﺒﺎﺷﺮ
اﻟﺜﺎﻧﻲ:
ﯾﺘﻄﺮق إﻟﻰ اﺳﺘﺨﺪام ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻣﻊ أﺣﺪى اﻟﻠﻐﺎت اﻟﺒﺮﻣﺠﺔ وﻫﻲ ﺳﺘﻜﻮن
اﻟﻔﯿﺠﻮال ﺑﯿﺰك 6
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻣﻘﺪﻣﺔ ﻻﺑﺪ ﻣﻨﻬﺎ:
ﻫﺬه اﻟﻤﻘﺪﻣﺔ ﻛﻨﺖ ﻓﻲ ﺣﯿﺮة ﻣﻦ أﻣﺮي ﻗﺒﻞ ﻛﺘﺎﺑﺘﻬﺎ ﻓﺄﻧﺎ ﻣﻦ اﺷﺪ اﻟﻤﻌﺎرﺿﯿﻦ ﻟﻠﻤﻘﺎرﻧﺎت
ﺑﯿﻦ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ أو ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت أو ....،،،
وﻟﻢ أﺗﺪﺧﻞ ﻓﻲ ﻣﻘﺎرﻧﺔ أي ﻣﻨﺘﺠﯿﻦ ﻗﺒﻞ اﻵن ﻻﻧﻲ أﺛﻖ ﺑﺎن ﻣﻬﻤﺎ ﻛﺎﻧﺖ اﻟﻠﻐﺔ أو اﻟﺒﺮﻧﺎﻣﺞ
ﺑﯿﻦ ﯾﺪي ﻗﻮي وأﻧﺎ ﻏﯿﺮ أﻫﻞ ﻟﻠﻌﻤﻞ ﻋﻠﻰ ﻫﺬا اﻟﺒﺮﻧﺎﻣﺞ ﻓﻠﻦ ﯾﻜﻮن اﻧﺘﺎﺟﻲ ﻣﺜﻞ ﻣﻦ ﻫﻢ أﻫﻞ
اﻟﻌﻠﻢ واﻟﺨﺒﺮة وﯾﻌﻤﻠﻮن ﻋﻠﻰ ﺑﺮﻧﺎﻣﺞ ﺑﺴﯿﻂ
وﻻ أﺟﺪ اﻓﻀﻞ ﻗﻮﻻ ﻣﻦ ﺗﻌﻠﯿﻖ وﺟﺪﺗﻪ ﻟﺪى أﺣﺪ اﻻﺧﻮة ﻓﻲ اﻟﻤﻨﺘﺪى وﻫﻮ
) ﻻ ﺗﺴﺄل ﻣﺎذا ﺗﻔﻌﻞ ﻟﻚ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ ﺗﻠﻚ ﺑﻞ اﺳﺄل ﻣﺎذا ﺗﺴﺘﻄﯿﻊ أن ﺗﻔﻌﻞ ﺑﻬﺎ ( ﻟﺬﻟﻚ
أرﺟﻮ أن ﻻ ﯾﺤﻤﻞ ﻋﻠﻲ أﺣﺪ ﻣﻦ ﻫﻮاة أو ﻣﺒﺮﻣﺠﻲ اوراﻛﻞ أو ﻏﯿﺮﻫﺎ ﻓﻜﻞ واﺣﺪ وﺣﺴﺐ
ﻣﺎﯾﺮاه ﻣﻦ ﻣﻨﻈﻮره اﻟﺨﺎص وﺣﺴﺐ ﺣﺎﺟﺘﻪ .
ﻓﺮﺑﻤﺎ ﯾﻜﻮن ﻣﺒﺮﻣﺞ ﻣﺘﻤﺮس ﺑﺎﻟﺒﯿﺰك ﻗﺎدر ﻋﻠﻰ إﻧﺘﺎج ﺑﺮﻧﺎﻣﺞ ﯾﻌﺠﺰ ﻋﻨﻪ ﻣﺒﺮﻣﺞ ﻫﺎوي
ﺑﺎﻟﺴﻲ ﺷﺎرب أو اﻟﻔﯿﺠﻮال ﺳﻲ ،
ﻫﺬا اﻟﻤﺜﺎل راﯾﺘﻪ ﺑﺄم ﻋﯿﻨﻲ وﻟﯿﺲ ﻣﻦ ﻣﺤﺾ اﻟﺨﯿﺎل .
ﻓﻌﻠﻰ ﺑﺮﻛﺔ اﷲ ﻧﻨﻄﻠﻖ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻟﻘﺴﻢ اﻷول :
ﻣﻘﺪﻣﺔ ﻋﺎﻣﺔ
ﺗﻤﻜﻨﻚ ﻟﻐﺔ SQLﻣﻦ إدارة ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺑﺸﻜﻞ ﻛﺎﻣﻞ وإﺟﺮاء ﺟﻤﯿﻊ اﻟﻌﻤﻠﯿﺎت اﻟﻘﯿﺎﺳﯿﺔ ﻛﺈﻧﺸﺎء
اﻟﺠﺪاول وﺗﻌﺒﺌﺘﻬﺎ ﺑﺎﻟﺒﯿﺎﻧﺎت ،أو إﺟﺮاء اﻻﺳﺘﻌﻼﻣﺎت ﻋﻠﯿﻬﺎ وﻛﺬﻟﻚ اﻟﺮﺑﻂ ﺑﯿﻦ اﻟﺠﺪاول اﻟﻤﺨﺘﻠﻔﺔ.
ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻫﻲ ﻋﺒﺎرة ﻋﻦ ﻣﻜﺎن أو ﻣﺴﺘﻮدع ﻛﺒﯿﺮ ﻟﺘﺨﺰﯾﻦ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺘﻠﻔﺔ
ﺗﻜﻮن اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻣﺨﺰﻧﺔ ﻓﻲ ﻋﺪة ﺟﺪاول Tablesوﻛﻞ ﺟﺪول ﯾﺘﻜﻮن ﻣﻦ ﺻﻔﻮف
Rowsوأﻋﻤﺪة Coloumnsﻛﺎﻷﺗﻲ:
اﻟﺠﺪول اﻟﺴﺎﺑﻖ ﯾﺘﻜﻮن ﻣﻦ ﺛﻼﺛﺔ ﺻﻔﻮف وﻋﺎﻣﻮدﯾﻦ ،وﻓﻲ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻓﺈﻧﻨﺎ ﻧﺴﻤﻲ اﻟﺼﻔﻮف
ﺑﺎﻟﺴﺠﻼت Recordsوﻧﺴﻤﻲ اﻷﻋﻤﺪة ﺑﺎﻟﺤﻘﻮل Fields
اﻟﺤﻘﻞ :ﻫﻮ اﻟﺬي ﺗﺨﺰن ﻓﯿﻪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺘﺸﺎﺑﻬﺔ ﻣﻦ ﺣﯿﺚ اﻟﻨﻮع ) ﻣﺜﻞ ﺣﻘﻞ اﻻﺳﻢ( ) أو ﺣﻘﻞ
اﻟﻮﻇﯿﻔﺔ(
اﻟﺴﺠﻼت :ﻫﻮ اﻟﺬي ﺗﺨﺰن ﻓﯿﻪ ﺑﯿﺎﻧﺎت ﺷﺨﺺ ﻣﻌﯿﻦ
ﻣﺜﺎل:
اﻻﺳﻢ
اﻟﻮﻇﯿﻔﺔ
ﺧﺎﻟﺪ اﻷﺣﻤﺪي
ﻣﺒﺮﻣﺞ
ﻣﺤﻤﺪ ﻋﺒﺪا ﷲ
ﻋﺎﻣﻞ
ﻛﻤﺎل اﻟﺤﺮﺑﻲ
ﻣﺤﻠﻞ ﻧﻈﻢ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻗﻮاﻋﺪ اﻟﻠﻐﺔ
ﻻ ﺗﻔﺮق ﺑﯿﻦ اﻟﺤﺮوف اﻟﻜﺒﯿﺮة واﻟﺼﻐﯿﺮة ﻟﻐﺔ SQL
ﻻ ﺗﻬﺘﻢ ﺑﺎﻟﻤﺴﺎﻓﺎت اﻟﺒﯿﻀﺎء ﻟﻐﺔ SQL
ﺗﻨﺘﻬﻲ ﺟﻤﯿﻊ اﻻﺳﺘﻌﻼﻣﺎت ﺑﺎﻟﻔﺎﺻﻠﺔ اﻟﻤﻨﻘﻮﻃﺔ );(
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺗﻌﻠﯿﻢ SQL Server
ﺗﻌﻠﻢ اﺳﺘﺨﺪام ﺑﺮﻧﺎﻣﺞ
Microsoft SQL Server 2000
ﻣﻘﺪﻣﺔ إﻟﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ
ﻗﺒﻞ أن أﺑﺪء اﻟﺸﺮح ﻋﻦ
SQL Server
أرﯾﺪ اﻟﺘﺤﺪث ﻗﻠﯿﻼ ﻋﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻋﺎﻣﺔ وﻋﻦ اﻟﻔﺮق ﺑﯿﻨﻬﺎ وﺑﯿﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ،
ﻓﻜﻤﺎ ﯾﻌﻠﻢ اﻟﺒﻌﺾ ﻧﻈﺎم ال
SQL Server
ﻫﻮ ﻋﺒﺎرة ﻋﻦ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﺮﻛﺰﯾﺔ ﺗﻘﻮم ﺑﺈدارة ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت وﺗﻮزﯾﻌﻬﺎ ﻋﺒﺮ ﺷﺒﻜﺔ اﻟﻜﻮﻣﺒﯿﻮﺗﺮ
ﻟﻘﺪ ﺑﺪء ﻇﻬﻮر ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ﺑﺸﻜﻞ ﻣﻜﺜﻒ ﻓﻲ ﻧﻬﺎﯾﺔ اﻟﺜﻤﺎﻧﯿﻨﺎت ،ﻃﺒﻌﺎ ﻫﻲ ﻣﻮﺟﻮدة
ﺑﻄﺮﯾﻘﺔ أو ﺑﺄﺧﺮى ﻣﻨﺬ ﻓﺘﺮة أﻃﻮل وﻟﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ اﻗﺘﺼﺮ إﻟﻰ ﺑﻌﺾ اﻟﻤﺆﺳﺴﺎت اﻟﻀﺨﻤﺔ ﻓﻘﻂ
ﻟﻘﺪ ﻛﺎن اﻟﺠﻤﯿﻊ ﻗﺒﻞ ذﻟﻚ ﯾﺴﺘﺨﺪم اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺻﻨﻌﺖ ﺑﻠﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻟﻌﺎدﯾﺔ واﻟﺘﻲ ﻛﺎﻧﺖ ﺗﺨﺰن
ﺑﯿﺎﻧﺎﺗﻬﺎ ﻓﻲ ﻣﻠﻔﺎت ﺧﺎﺻﺔ ﺑﻬﺎ ،واﻟﻤﺸﻜﻠﺔ اﻷﺳﺎﺳﯿﺔ ﻓﻲ ﺗﻠﻚ اﻟﺒﺮاﻣﺞ ﻛﺎﻧﺖ ﻣﺤﺪودﯾﺔ اﺳﺘﺨﺪام
اﻟﺒﯿﺎﻧﺎت ،اﻋﻨﻲ اﻧﻚ ﻻ ﺗﺴﺘﻄﯿﻊ اﻻﺳﺘﻌﻼم ﻋﻦ اﻟﺒﯿﺎﻧﺎت ﺑﻄﺮﯾﻘﺔ أﺧﺮى ﻏﯿﺮ اﻟﻄﺮﯾﻘﺔ اﻟﺘﻲ ﺻﻤﻢ ﺑﻬﺎ
اﻟﺒﺮﻧﺎﻣﺞ
ﻛﻤﺜﺎل :ﻟﻨﻔﺘﺮض ﺑﺄﻧﻚ ﺗﺴﺘﺨﺪم ﺑﺮﻧﺎﻣﺞ ﺻﻤﻢ ﺑﻮاﺳﻄﺔ ﻟﻐﺔ ﺑﺮﻣﺠﺔ ﻣﺎ ﻟﯿﺨﺰن ﺑﯿﺎﻧﺎﺗﻪ ﻓﻲ ﻣﻠﻔﺎت
ﺧﺎﺻﺔ ﺑﻪ وﻟﯿﺲ ﻓﻲ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ،وﻛﺎن اﺣﺪ ﻓﺮوع ﺑﺮﻧﺎﻣﺠﻚ ﻫﻮ اﻻﺳﺘﻌﻼم ﻋﻦ اﻟﺒﻀﺎﺋﻊ ،ﻣﻬﻤﺎ
ﺗﺘﻌﺐ ﻓﻲ ﺗﺼﻤﯿﻢ ﻫﺬا اﻻﺳﺘﻌﻼم ،ﻓﻘﺪ ﺗﺠﺪ دوﻣﺎ ﻣﻦ ﯾﺄﺗﻲ ﻟﻚ ﺑﻔﻜﺮة ﺟﺪﯾﺪة ﻻﺳﺘﻌﻼم ﻣﺎ
ﻓﻘﺪ ﯾﻄﻠﺐ اﻟﺸﺨﺺ ﻛﻞ اﻟﺒﻀﺎﺋﻊ اﻟﺘﻲ ﺗﻢ اﺳﺘﻼﻣﻬﺎ ﻓﻲ ﺗﺎرﯾﺦ ﻣﻌﯿﻦ ،ﻣﻦ ﻣﻮرد ﻣﻌﯿﻦ وﺗﻢ ﺑﯿﻌﻬﺎ ﻓﻲ
ﺗﺎرﯾﺦ ﻣﻌﯿﻦ إﻟﻰ زﺑﻮن ﻣﻌﯿﻦ ،ﻗﺪ ﯾﻜﻮن ﺑﺮﻧﺎﻣﺞ ﻗﺎدر ﻋﻠﻰ اﻟﻘﯿﺎم ﺑﺬﻟﻚ ،وﻟﻜﻨﻪ ﻗﺪ ﯾﻌﻘﺪ اﻻﺳﺘﻌﻼم
وﯾﻀﺎف إﻟﻰ اﻻﺳﺘﻌﻼم اﻟﺴﺎﺑﻖ ﺗﺮﺗﯿﺐ اﻟﺒﻀﺎﺋﻊ ﺣﺴﺐ ﺗﺎرﯾﺦ اﻻﺳﺘﻼم ﻣﺜﻼ ﻓﻘﺪ ﻻ ﺗﻜﻮن وﺿﻌﺖ ﺗﻠﻚ
اﻟﻤﻤﯿﺰة ﻓﻲ ﺑﺮﻧﺎﻣﺠﻚ ﻋﻨﺪ ﺗﺼﻤﯿﻤﻪ ،وﻟﺬﻟﻚ ﻓﻠﻦ ﯾﺘﻤﻜﻦ اﻟﻤﺴﺘﺨﺪم اﻟﻨﻬﺎﺋﻲ اﻟﺤﺼﻮل ﻋﻠﻰ ﻃﻠﺒﻪ
ﺑﺎﻟﻀﺒﻂ
وﻣﻦ ﻫﻨﺎ ﺑﺪﺋﺖ ﻓﻜﺮة ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻋﺎﻣﺔً ،وﻛﺎﻧﺖ اﻟﻔﻜﺮة إﯾﺠﺎد ﻃﺮﯾﻘﺔ ﻣﻮﺣﺪة ﻟﺤﻔﻆ اﻟﺒﯿﺎﻧﺎت ،
وإﯾﺠﺎد ﺑﺮﻧﺎﻣﺞ ﻗﺎدر ﻋﻠﻰ ﺟﻤﯿﻊ أﻧﻮاع اﻻﺳﺘﻌﻼﻣﺎت ﻣﻦ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،ﻓﻠﻮ ﻓﺸﻞ ﺑﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ،
ﻓﺒﺈﻣﻜﺎن اﻟﻤﺴﺘﺨﺪم ﻓﺘﺢ ﻣﻠﻒ اﻟﺒﯿﺎﻧﺎت ﻋﻦ ﻃﺮﯾﻖ ﺑﺮﻧﺎﻣﺞ اﻻﺳﺘﻌﻼم اﻟﺮﺋﯿﺴﻲ اﻟﺬي ﯾﺄﺗﻲ ﻣﻊ ﻗﺎﻋﺪة
اﻟﺒﯿﺎﻧﺎت وإﺟﺮاء ﻛﻞ اﻻﺳﺘﻌﻼﻣﺎت اﻟﺘﻲ ﯾﺤﻠﻢ ﺑﻬﺎ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
وﻣﻦ ﻫﻨﺎ ﻇﻬﺮت ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت وﻇﻬﺮت أﯾﻀﺎ ﻟﻐﺔ
SQL
اﻟﻤﺨﺼﺼﺔ ﻟﻼﺳﺘﻌﻼم ﻓﻲ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ،وﺑﺪﺋﺖ ﺗﺘﻄﻮر واﻧﺘﻘﻠﺖ اﻟﻌﺪﯾﺪ ﻣﻦ اﻟﺸﺮﻛﺎت ﻻﺳﺘﺨﺪاﻣﻬﺎ
،ﻧﻈﺮا ﻟﺴﻬﻮﻟﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ وﺳﺮﻋﺔ ﺑﺮﻣﺠﺘﻬﺎ
وﻟﻜﻦ ﻣﻊ زﯾﺎدة ﺣﺠﻢ اﻟﻤﺆﺳﺴﺎت وﺑﺪاﯾﺔ ﻇﻬﻮر ﺷﺒﻜﺎت اﻟﻜﻮﻣﺒﯿﻮﺗﺮ ،أﺻﺒﺤﺖ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت
ﺑﺤﺎﺟﺔ إﻟﻰ أن ﺗﻌﻤﻞ ﻋﻠﻰ أﻛﺜﺮ ﻣﻦ ﺟﻬﺎز ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ ،ﻓﺘﻄﻮرت ﺑﺮاﻣﺞ إدارة ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت
وأﺻﺒﺤﺖ ﻗﺎدرة ﻋﻠﻰ ﻓﺘﺢ ﻧﻔﺲ اﻟﻤﻠﻔﺎت اﻟﻤﺨﺰﻧﺔ ﻓﻲ اﻟﺠﻬﺎز اﻟﻤﺮﻛﺰي ﻣﻦ ﻋﺪة أﺟﻬﺰة ﻛﻮﻣﺒﯿﻮﺗﺮ
ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ وﻣﻦ أﻣﺜﻠﺘﻬﺎ
DBase
Paradox
وﻏﯿﺮﻫﻤﺎ وﻟﻘﺪ ﺣﻞ اﻟﺴﺎﺑﻖ ﺑﻌﺾ اﻟﻤﺸﺎﻛﻞ وﻟﻜﻦ ﻟﯿﺲ ﻛﻠﻬﺎ ،ﻻن ﻣﻊ زﯾﺎدة ﺣﺠﻢ اﻟﺒﯿﺎﻧﺎت وزﯾﺎدة
ﻋﺪد اﻷﺟﻬﺰة اﻟﻤﺘﺼﻠﯿﻦ ﺑﺎﻟﺸﺒﻜﺔ أﺻﺒﺢ ﺻﻌﺐ إدارة ﻣﻠﻔﺎت ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ ﻋﻠﻰ اﻟﺠﻬﺎز
اﻟﻤﺮﻛﺰي ،ﻛﻤﺎ أن أﻣﻨﻬﺎ ﻛﺎن ﻣﻌﺮض ﻟﻠﺨﻄﺮ داﺋﻤﺎ ،ﻓﺒﺎﻣﻜﺎن اﻟﺠﻤﯿﻊ اﻟﻮﺻﻮل إﻟﻰ اﻟﻤﻠﻒ اﻟﻤﺮﻛﺰي
اﻟﺬي ﯾﺤﺘﻮي ﻋﻠﻰ اﻟﺒﯿﺎﻧﺎت وﯾﻌﺒﺚ ﺑﻪ ،أو ﺣﺘﻰ أن ﯾﺼﻞ إﻟﻰ ﺑﯿﺎﻧﺎت ﻻ ﺻﻼﺣﯿﺔ ﻟﻪ ﺑﺎﺳﺘﺨﺪاﻣﻬﺎ
ﻛﻤﺎ أن اﻻﺳﺘﻌﻼﻣﺎت اﻟﻤﺘﺰاﯾﺪة ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت زادت ﻣﻦ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺸﺒﻜﺔ ﻓﻜﻤﺎ ﺗﻌﻠﻢ ﯾﺘﻄﻠﺐ
اﻻﺳﺘﻌﻼم ﻋﻦ ﺷﺨﺺ ﻣﺎ ،ﯾﺘﻄﻠﺐ اﻟﺒﺤﺚ ﻓﻲ ﻛﻞ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺣﺘﻰ إﯾﺠﺎده ﺑﻬﺎ
ﻓﻌﻠﻰ ﺳﺒﯿﻞ اﻟﻤﺜﺎل :ﻟﻮ ﻛﺎن ﻟﺪﯾﻚ ﺟﺪول ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت وﺑﻪ ﻣﻌﻠﻮﻣﺎت ﻋﻦ ﻋﺸﺮة أﻻف ﻧﻮع ﻣﻦ
اﻟﺒﻀﺎﺋﻊ وﻃﻠﺒﺖ أن ﻣﻦ ﺟﻬﺎزك ﻛﻞ اﻟﺒﻀﺎﺋﻊ اﻟﺘﻲ اﺳﺘﻠﻤﺖ ﻓﻲ ﺗﺎرﯾﺦ ﻣﻌﯿﻦ ،ﻓﻌﻠﯿﺎ ﺳﯿﻘﻮم ﺟﻬﺎزك
ﺑﺈﺣﻀﺎر اﻟﻌﺸﺮة أﻻف ﺳﺠﻞ ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت إﻟﻰ ﺟﻬﺎز وذﻟﻚ ﻋﺒﺮ اﻟﺸﺒﻜﺔ وﺳﯿﻔﻠﺘﺮﻫﻢ وﯾﻔﺮز
اﻟﺒﯿﺎﻧﺎت اﻟﻤﻄﻠﻮﺑﺔ
وﻟﻜﻨﻪ ﺿﻐﻂ ﻋﻠﻰ اﻟﺸﺒﻜﺔ ﺑﺎﻟﺤﺼﻮل ﻋﻠﻰ ﻛﻞ ﺗﻠﻚ اﻟﻤﻌﻠﻮﻣﺎت ﻣﻌﺎ ،ﻃﺒﻌﺎ اﻟﺸﺒﻜﺔ ﻗﺪ ﺗﺘﺤﻤﻞ ﻃﻠﺐ أو
ﻃﻠﺒﯿﻦ ﻣﻌﺎ ،وﻟﻜﻦ ﻣﺎذا ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺒﻨﻮك ﻣﺜﻼ ،ﻫﻨﺎك أﻻف اﻟﺴﺠﻼت وﻋﺸﺮات اﻟﻌﻤﻠﯿﺎت ﻓﻲ ﻧﻔﺲ
اﻟﻮﻗﺖ
وﻟﺬﻟﻚ ﺑﺪﺋﺖ اﻟﺤﺎﺟﺔ إﻟﻰ ﺗﻄﻮﯾﺮ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻌﺎدﯾﺔ ،وﻣﻦ ﻫﻨﺎ ﻇﻬﺮت ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ
،ﻓﻬﻲ ﻋﺒﺎرة ﻋﻦ ﺑﺮﻧﺎﻣﺞ ﯾﻌﻤﻞ ﺑﺪاﺧﻞ اﻟﺠﻬﺎز اﻟﻤﺮﻛﺰي وﯾﺨﺰ اﻟﺒﯿﺎﻧﺎت ﻓﯿﻪ أﯾﻀﺎ وﻟﻜﻦ اﻻﺧﺘﻼف
ﺑﯿﻨﻬﺎ وﺑﯿﻦ اﻟﺴﺎﺑﻖ ذﻛﺮه أن ﻃﻠﺐ اﻟﺒﯿﺎﻧﺎت ﻻ ﯾﺘﻢ إﻻ ﻣﻦ ﺧﻼل اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﯾﻌﻤﻞ ﻓﻲ اﻟﺠﻬﺎز
اﻟﻤﺮﻛﺰي واﻟﺬي ﯾﺴﻤﻰ ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ،وﺑﺬﻟﻚ ﯾﻜﻮن ﻗﺪ ﺗﻢ ﻓﺼﻞ اﻟﻤﺴﺘﺨﺪم
اﻟﻨﻬﺎﺋﻲ ﻋﻦ اﻟﻤﻠﻒ اﻟﺮﺋﯿﺴﻲ ﻟﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت
ﻓﻠﻮ ﻛﻨﺖ ﺑﺤﺎﺟﺔ إﻟﻰ اﺳﺘﻌﻼم ﻣﻌﯿﻦ ،ﻓﺴﯿﻘﻮم ﺑﺮﻧﺎﻣﺠﻚ ﺑﻄﺒﻞ ذﻟﻚ اﻻﺳﺘﻌﻼم ﻣﻦ ﻣﺤﺮك ﻗﻮاﻋﺪ
اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ اﻟﻤﻮﺟﻮد ﻓﻲ اﻟﺠﻬﺎز اﻟﻤﺮﻛﺰي ،ﺣﯿﺚ ﺑﺪوره ﺳﯿﻘﻮم ﻫﻮ ﺑﺎﻻﺳﺘﻌﻼم وﻣﻦ ﺛﻢ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﯾﻌﻄﻲ اﻟﻨﺘﯿﺠﺔ ﻓﻘﻂ ﻟﻠﺠﻬﺎز اﻟﻌﺎدي اﻟﺬي ﻃﻠﺐ اﻻﺳﺘﻌﻼم وﺑﺬﻟﻚ ﯾﻜﻮن ﻗﺪ أﻧﻬﻰ ﻛﺎﺑﻮس إﻏﺮاق اﻟﺸﺒﻜﺔ
ﺑﺎﻟﺒﯿﺎﻧﺎت
ﻛﻤﺎ أن ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﺮﺋﯿﺴﯿﺔ ﻣﺴﺌﻮل ﻋﻦ ﺣﻤﺎﯾﺔ اﻟﺒﯿﺎﻧﺎت ،ﻗﺒﻞ ﻛﺎن اﻟﺠﻤﯿﻊ ﯾﺴﺘﻄﯿﻊ
اﻟﻮﺻﻮل إﻟﻰ ﻛﻞ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ ،وﻟﻜﻦ ﺑﺎﺳﺘﺨﺪام اﻟﻨﻈﺎم اﻟﺠﺪﯾﺪ ،أﺻﺒﺢ ﻓﻘﻂ ﻣﻦ ﻟﺪﯾﻬﻢ ﺻﻼﺣﯿﺔ
اﻟﻮﺻﻮل ﻗﺎدرﯾﻦ ﻋﻠﻰ ذﻟﻚ ،ﻛﻤﺎ أﺻﺒﺢ ﺑﺈﻣﻜﺎن ﻣﺪﯾﺮ اﻟﺸﺒﻜﺔ إﻋﻄﺎء ﺻﻼﺣﯿﺎت ﻣﺨﺘﻠﻔﺔ ﻟﻠﻤﺴﺘﺨﺪﻣﯿﻦ
،ﻓﻘﺪ ﯾﻤﻨﻊ ﻣﺴﺘﺨﺪم ﻣﻦ إﺿﺎﻓﺔ ﺑﻀﺎﻋﺔ ﺟﺪﯾﺪة ﻋﻠﻰ ﺟﺪول اﻟﺒﻀﺎﻋﺔ وﯾﺴﻤﺢ ﻟﻪ ﺑﺎﻟﻨﻈﺮ ﻋﻠﯿﻬﺎ ﻓﻘﻂ ،
وﻗﺪ ﯾﻤﻨﻌﻪ ﻧﻬﺎﺋﯿﺎ ﻣﻦ اﻟﻮﺻﻮل إﻟﻰ ﺟﺪول اﻟﻤﻮردﯾﻦ ﻣﺜﻼ ،أو ﻓﻘﻂ ﻋﻠﻰ ﺟﺰء ﻣﻦ ﺟﺪول اﻟﻤﻮردﯾﻦ
ﻣﺜﻞ ﻋﻨﺎوﯾﻨﻬﻢ أو أرﻗﺎم ﻫﻮاﺗﻔﻬﻢ ﻣﺜﻼ
ﻛﻤﺎ أن ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ أﺻﺒﺢ ﯾﻘﻮم ﺑﻌﻤﻠﯿﺎت اﻟﻨﺴﺦ اﻻﺣﺘﯿﺎﻃﻲ واﻟﺤﻔﺎظ ﻋﻠﻰ
اﻟﺒﯿﺎﻧﺎت ﻣﻦ اﻟﺘﻠﻒ اﺗﻮﻣﺎﺗﯿﻜﯿﺎ ،وذﻟﻚ ﺑﻔﺤﺼﻬﺎ ﺑﺎﺳﺘﻤﺮار وﻧﺴﺨﻬﺎ ﻋﻠﻰ أﺷﺮﻃﺔ اﻟﻨﺴﺦ اﻻﺣﺘﯿﺎﻃﻲ
وإﻋﻼم ﻣﺪﯾﺮ اﻟﻨﻈﺎم ﺑﺄﯾﺔ ﻣﺸﺎﻛﻞ ﺻﻐﯿﺮة ﺑﺪاﺧﻠﻬﺎ
وﻫﻜﺬا اﺳﺘﻤﺮ ﺗﻄﻮر ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ إﻟﻰ ﯾﻮﻣﻨﺎ ﻫﺬا وﻇﻬﺮ اﻟﻌﺪﯾﺪ ﻣﻨﻬﺎ ﻓﻲ اﻟﺴﻮق ﻣﺜﻞ
Oracle 8
SQL Server 7
IBM DB2
SYbase
Informix
Borland IntraBase
ﻣﻘﺎرﻧﺔ ﺑﯿﻦ Microsoft SQL Serverوﺑﯿﻦ Oracle
ﻋﻨﺪﻣﺎ ﻗﺮرت ﻗﺒﻞ ﺛﻼﺛﺔ ﺳﻨﻮات اﻋﺘﻤﺎد ﻧﻈﺎم ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت ﻣﺮﻛﺰﯾﺔ ﻻﺳﺘﺨﺪﻣﻬﺎ ﻓﻲ ﻋﻤﻠﻲ ،ﻛﺎن
ﯾﺠﺐ أن اﺧﺘﺎر ﺑﯿﻦ اﺷﻬﺮ اﻷﻧﻈﻤﺔ اﻟﻤﺘﻮﻓﺮة ﻓﻲ اﻷﺳﻮاق ،وﻛﺎﻧﺖ ﻓﻲ ﺗﻠﻚ اﻟﻔﺘﺮة
Microsoft SQL Server
و
Oracle
ﻃﺒﻌﺎ اﻟﺨﯿﺎر ﻛﺎن ﺻﻌﺒﺎ ،ﺧﺼﻮﺻﺎ ﻷﻧﻪ ﯾﺘﻄﻠﺐ وﻗﺘﺎ ﻛﺒﯿﺮا ﻟﺘﺘﻘﻦ اﺳﺘﺨﺪام ﻧﻈﺎم ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت
ﻣﺮﻛﺰﯾﺔ ،وﻻ ﯾﻮﺟﺪ ﻟﺪي وﻗﺖ ﻷﺗﻘﻦ اﺳﺘﺨﺪام ﻧﻈﺎﻣﯿﻦ ﻣﻌﺎ ،وﻟﺬﻟﻚ ﻛﺎن ﻋﻠﻰ اﻻﺧﺘﯿﺎر ﺑﻌﻨﺎﯾﺔ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
واﻟﯿﻮم أﺟﺪ ﺻﻌﻮﺑﺔ ﻓﻲ ﺷﺮﺣﻲ ﻟﻤﺎذا اﺧﺘﺮت ﻫﺬا اﻟﻨﻈﺎم ﻋﻦ ذاك ،ﻧﻈﺮا ﻟﻮﺟﻮد ﺷﺮط أﺳﺎﺳﻲ ﻓﻲ
اﺗﻔﺎﻗﯿﺔ اﻟﺘﺮﻛﯿﺐ ﻟﻜﻞ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺠﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ،ﺣﯿﺚ ﺗﻤﻨﻌﻚ اﻻﺗﻔﺎﻗﯿﺔ ﻣﻦ أﺟﺮاء أﯾﺔ ﻣﻘﺎرﻧﺎت ﺑﺪون
ﻣﺮاﺟﻌﺔ اﻟﺸﺮﻛﺔ اﻟﻤﺼﻨﻌﺔ ﻟﺘﻠﻚ اﻷﻧﻈﻤﺔ ،وﻟﻬﺬا اﻟﺴﺒﺐ ﯾﺘﻌﺬر وﺟﻮد ﻣﻘﺎرﻧﺎت ﺗﻔﺼﯿﻠﯿﺔ ﺑﯿﻦ
اﻟﻨﻈﺎﻣﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﻓﻲ إﻧﺘﺮﻧﺖ
ﻟﻘﺪ ﻛﺎﻧﺖ ﻣﻌﻈﻢ اﻟﻤﻘﺎرﻧﺎت ﺳﺎﺑﻘﺎ ﺗﺘﻌﻠﻖ ﺑﺴﺮﻋﺔ أداء ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ واﻟﺤﺠﻢ
اﻟﺒﯿﺎﻧﺎت اﻷﻗﺼﻰ اﻟﻤﻤﻜﻦ أن ﺗﺴﺘﻮﻋﺒﻪ ،وﻟﻜﻦ ﻣﻊ ﺗﻄﻮر اﻟﺘﻜﻨﻮﻟﻮﺟﯿﺎ اﻟﻤﺴﺘﺨﺪﻣﺔ ﺑﻬﺎ ،أﺻﺒﺤﺖ
اﻟﻔﺮوق ﻓﻲ اﻟﺴﺮﻋﺔ ﺑﯿﻦ اﻟﻨﻈﻢ اﻟﻤﺨﺘﻠﻔﺔ ﺿﺌﯿﻠﺔ ﻟﻠﻐﺎﯾﺔ ،ﻛﻤﺎ أن ﺣﺠﻢ اﻟﺘﺨﺰﯾﻦ وﺻﻞ إﻟﻰ اﻟﺤﺪود
اﻟﻘﺼﻮى ﻟﺴﻌﺔ اﻟﺘﺨﺰﯾﻦ ﻓﻲ ﺟﻬﺎزك ،أي ﺑﻤﻌﻨﻰ أﺧﺮ ﺗﺴﺘﻄﯿﻊ ﺗﺨﺰﯾﻦ ﺑﯿﺎﻧﺎت ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
ﺣﺘﻰ ﯾﻤﺘﻠﺊ اﻟﻘﺮص اﻟﺼﻠﺐ أو اﻷﻗﺮاص اﻟﺼﻠﺒﺔ اﻟﻤﻮﺟﻮدة ﻓﻲ ﺟﻬﺎزك ﻣﻬﻤﺎ ﻛﺎﻧﺖ ﺳﻌﺘﻬﺎ
ذﻟﻚ ﻻن اﻟﻨﻈﻢ اﻟﺠﺪﯾﺪة ﺗﺴﺘﺨﺪم ﺗﻜﻨﻮﻟﻮﺟﯿﺎ ﻣﻌﻘﺪة ﻟﺤﻔﻆ واﺳﺘﺮﺟﺎع اﻟﺒﯿﺎﻧﺎت ،ﺣﯿﺚ ﺗﺴﺘﻐﻞ اﻟﻤﻌﺎﻟﺞ
ووﺳﺎﺋﻂ اﻟﺘﺨﺰﯾﻦ ﻷﻗﺼﻰ ﺣﺪ ﻣﻤﻜﻦ
وﻣﻊ ذﻟﻚ ﻓﻬﻨﺎك اﻟﻌﺪﯾﺪ ﻣﻦ اﻟﻨﻘﺎط اﻟﺘﻲ ﺟﻌﻠﺘﻨﻲ أﻓﻀﻞ أﺣﺪﻫﻤﺎ ﻋﻦ اﻷﺧﺮ وﻣﻦ أﻫﻤﻬﺎ
ﺳﻬﻮﻟﺔ ﺗﻌﻠﻢ اﺳﺘﺨﺪام اﻟﻨﻈﺎم ودرﺟﺔ ﺗﻌﻘﯿﺪه وﺳﺮﻋﺔ ﺑﻨﺎء و إدارة ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺑﻪ
ﺗﻠﻜﻔﺔ اﻟﻨﻈﺎم ) ﺗﻠﻜﻔﺔ اﻟﺸﺮاء ،اﻟﺘﺮﻛﯿﺐ ،اﻟﺼﯿﺎﻧﺔ ،اﻻﺳﺘﺨﺪام ﻋﺒﺮ اﻟﺸﺒﻜﺔ ،وﻏﯿﺮﻫﻤﺎ(
ﺳﻬﻮﻟﺔ ﺗﻌﻠﻢ اﺳﺘﺨﺪام اﻟﻨﻈﺎم ودرﺟﺔ ﺗﻌﻘﯿﺪه وﺳﺮﻋﺔ ﺑﻨﺎء وإدارة ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺑﻪ
ﻋﻨﺪﻣﺎ ﺣﺼﻠﺖ ﻋﻠﻰ اﻟﻨﺴﺦ اﻟﺘﺠﺮﯾﺒﯿﺔ ﻣﻦ اﻟﻨﻈﺎﻣﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ورﻛﺒﺖ ﻛﻞ ﻣﻨﻬﻨﺎ ﻋﻠﻰ ﺟﻬﺎزي وﺑﺪﺋﺖ
اﻻﺧﺘﺒﺎرات ﻋﻠﯿﻪ ،وﺟﺪت ﺻﻌﻮﺑﺔ ﻛﺒﯿﺮة ﻓﻲ اﻟﺘﻌﻮد ﻋﻠﻰ اﺳﺘﺨﺪام اوراﻛﻞ ،ﻓﺒﺪء ﺑﺎﻟﻨﺴﺒﺔ ﻟﻲ ﻛﻨﻈﺎم
ﺿﺨﻢ وﻣﻌﻘﺪ ،ﺣﺘﻰ أﻧﻨﻲ واﺟﻬﺖ ﻣﺸﺎﻛﻞ ﻓﻲ اﺳﺘﺨﺪاﻣﻪ ﻷول ﻣﺮة ﻓﻘﺪ ﻃﻠﺐ ﻣﻨﻲ اﺳﻢ اﻟﻤﺴﺘﺨﺪم
وﻛﻠﻤﺔ اﻟﺴﺮ واﻟﺬي ﺗﻄﻠﺐ ﻣﻨﻲ أﺳﺒﻮﻋﺎ ﻹﯾﺠﺎدﻫﻢ ،اﻋﺘﻘﺪ ﺑﺄﻧﻪ ﻛﺎن ﯾﻔﺘﺮض أن ﺗﻮزﻋﻬﻢ اوراﻛﻞ ﻣﻊ
اﻟﻨﺴﺨﺔ اﻟﺘﺠﺮﯾﺒﯿﺔ
ﺛﻢ ﺑﺪﺋﺖ أواﺟﻪ اﻟﻤﺼﺎﻋﺐ واﺣﺪة ﺗﻠﻮ اﻷﺧﺮى ،ﻓﻠﻘﺪ ﺑﺪء ﻟﻲ اﻟﻨﻈﺎم ﻏﺮﯾﺒﺎ وﻣﺨﺘﻠﻒ ﻗﻠﯿﻼ ﻋﻦ
وﯾﻨﺪوس ،وﻗﺪ ﺻﻌﻘﺖ ﻋﻨﺪﻣﺎ ﻓﻬﻤﺖ أﻧﻨﻲ ﺑﺤﺎﺟﺔ إﻟﻰ اﺳﺘﺨﺪام ﻟﻐﺔ
SQL
ﻣﺒﺎﺷﺮة ﻹﻧﺸﺎء اﻟﺠﺪاول واﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ،ﺑﺎﻟﻄﺒﻊ ﺗﻮﻓﺮ اوراﻛﻞ ﺑﻌﺾ اﻟﺒﺮﻣﺠﯿﺎت اﻹﺿﺎﻓﯿﺔ
اﻟﯿﻮم ﻟﻠﻘﯿﺎم ﺑﺬﻟﻚ ،وﻟﻜﻨﻨﻲ ﻟﻢ اﻋﺘﺎد ﻋﻠﯿﻬﺎ ﺑﺎﻟﻘﺪر اﻟﻜﺎﻓﻲ ،ﺣﺘﻰ أﻧﻨﻲ ﻟﻢ اﻋﻠﻢ ﻓﻲ ذﻟﻚ اﻟﻮﻗﺖ أﯾﻦ
ﺗﺨﺰن اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﻘﺮص اﻟﺼﻠﺐ ،وﻛﯿﻒ اﺻﻨﻊ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺟﺪﯾﺪة واﻟﻜﺜﯿﺮ ﻣﻦ اﻷﺳﺌﻠﺔ اﻷﺧﺮى
اﻟﺘﻲ ﻟﻢ أﺳﺘﻄﯿﻊ إﯾﺠﺎد إﺟﺎﺑﺔ ﻣﺒﺎﺷﺮة ﻋﻠﯿﻬﺎ ،ﻓﺎﻧﺎ اﻋﻠﻢ ﻣﻨﺬ ﺗﻌﻠﯿﻤﻲ ﻓﻲ اﻟﺠﺎﻣﻌﺔ أن اوراﻛﻞ ﻫﻮ
أﻓﻀﻞ ﻧﻈﻢ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﻮﺟﻮدة ،وﺗﺬﻛﺮت ﻋﻨﺪﻫﺎ
Unix
واﻟﺬي ﻛﺎن ﯾﺤﺎول اﻟﺠﻤﯿﻊ إﻗﻨﺎﻋﻨﺎ ﺑﺄﻧﻪ اﻷﻓﻀﻞ ،ﻫﻮ ﺻﺤﯿﺢ اﻷﻓﻀﻞ ﻓﻲ ﻧﻈﻢ اﻟﺘﺸﻐﯿﻞ ،وﻟﻜﻨﻪ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻣﻤﺘﺎز ﻟﺪرﺟﺔ اﻧﻚ ﻻ ﺗﺴﺘﻄﯿﻊ اﺳﺘﺨﺪاﻣﻪ ﻓﻲ اﻟﻤﺆﺳﺴﺎت اﻟﻌﺎدﯾﺔ
)ﻫﺬه ﻣﺰﺣﺔ ﻓﻘﻂ(
ﻓﺄﻧﺖ ﺑﺤﺎﺟﺔ إﻟﻰ ﻛﺘﺎﺑﺔ اﻟﻜﺜﯿﺮ ﻟﻠﻘﯿﺎم ﺑﺄﺑﺴﻂ اﻟﻌﻤﻠﯿﺎت ،وﻫﻜﺬا ﻛﺎن ﻣﻊ اوراﻛﻞ أﯾﻀﺎ ،ﺣﯿﺚ أﻧﻨﻲ
ﻋﻠﻤﺖ ﻓﯿﻤﺎ ﺑﻌﺪ اﻧﻪ أﺳﺎﺳﺎ ﺻﻤﻢ ل
Unix
وﻧﻘﻞ ﺑﻌﺪ ذﻟﻚ إﻟﻰ وﯾﻨﺪوس ن ت
وﻟﻜﻦ اﻷﻣﺮ اﺧﺘﻠﻒ ﻛﺜﯿﺮا ﻋﻨﺪﻣﺎ رﻛﺒﺖ اﻟﻨﺴﺨﺔ اﻟﺴﺎﺑﻘﺔ ﻓﻲ ذﻟﻚ اﻟﻮﻗﺖ ﻣﻦ
SQL Server
وﻛﺎﻧﺖ ، ٦٫٥ﻟﻘﺪ ارﺗﺤﺖ ﻛﺜﯿﺮا ﻣﻨﺬ أول ﺗﺸﻐﯿﻞ ﻟﻲ ﻟﺬﻟﻚ اﻟﺒﺮﻧﺎﻣﺞ ،ﻓﻮﺟﺪ ﺑﺄﻧﻨﻲ أﺳﺘﻄﯿﻊ اﻟﻘﯿﺎم
ﺑﻤﻌﻈﻢ اﻟﻌﻤﻠﯿﺎت ﻋﻦ ﻃﺮﯾﻖ ﺑﺮﻧﺎﻣﺞ واﺣﺪ ﻓﻘﻂ ،ﻓﻔﺮﻗﺖ ﺑﺴﻬﻮﻟﺔ ﺑﯿﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺘﻠﻔﺔ
وﻣﻜﺎن ﺗﺨﺰﯾﻨﻬﺎ وﻃﺮق اﻟﻨﺴﺦ اﻻﺣﺘﯿﺎﻃﻲ اﻟﺨﺎص ﺑﻬﺎ واﻟﻜﺜﯿﺮ ﻣﻦ اﻷﻣﻮر ﻏﯿﺮﻫﺎ ،وﻋﻨﺪﻣﺎ ﻃﻮرت
اﻟﻨﻈﺎم إﻟﻰ اﻟﻨﺴﺨﺔ اﻟﺴﺎﺑﻌﺔ ورﺋﯿﺖ اﻟﺘﻐﯿﺮات اﻟﻀﺨﻤﺔ واﻟﺘﺴﻬﯿﻼت اﻟﺘﻲ وﺟﺪﺗﻬﺎ ﺑﻪ ،ازدادت
ﺳﻌﺎدﺗﻲ ﻛﺜﯿﺮا
ﻓﺄﻧﺎ ﻗﺎدر ﻋﻦ ﻃﺮﯾﻖ ﺑﺮﻧﺎﻣﺞ اﻹدارة
Microsoft SQL Server 2000 Enterprise Manager
اﻟﻘﯿﺎم ﺑﻜﻞ اﻟﻌﻤﻠﯿﺎت اﻟﺘﻲ ارﻏﺐ ﺑﻬﺎ ﺑﺴﻬﻮﻟﺔ وﺳﺮﻋﺔ ﻋﺎﻟﯿﺔ ،ﺣﯿﺚ ﯾﻘﺪم ﻟﻲ ﻛﻞ ﻣﺎ اﺣﺘﺎج ﻟﺼﻨﺎﻋﺔ
اﻟﺠﺪاول واﻻﺳﺘﻌﻼﻣﺎت واﻟﺒﺮاﻣﺞ اﻟﺼﻐﯿﺮة وﻏﯿﺮﻫﺎ ،ﻛﻤﺎ أﻧﻨﻲ أﺳﺘﻄﯿﻊ أن اﺟﻌﻠﻪ ﺑﺎن ﯾﻘﻮم ﺑﺎﻟﻌﺪﯾﺪ
ﻣﻦ اﻷﻣﻮر اﻷﺧﺮى أﺗﻮﻣﺎﺗﯿﻜﯿﺎ ،ﻣﺜﻞ ﻓﺤﺺ اﻟﺒﯿﺎﻧﺎت ﻛﻞ ﻟﯿﻠﺔ وﻧﺴﺨﻬﺎ اﺣﺘﯿﺎﻃﯿﺎ وإﺧﺒﺎري ﻋﻦ ذﻟﻚ
ﯾﻮﻣﯿﺎ ﻋﻦ ﻃﺮﯾﻖ اﻟﺒﺮﯾﺪ اﻹﻟﻜﺘﺮوﻧﻲ ،وذﻟﻚ ﻓﻲ ﺣﺎل ﺗﻮاﺟﺪي ﻓﻲ ﻣﻜﺎن ﺑﻌﯿﺪ ،ﺑﻞ أﻛﺜﺮ ﻣﻦ ذﻟﻚ ،
ﻓﺒﺎﺳﺘﻄﺎﻋﺘﻲ ﺗﻮﺟﯿﻪ اﻷواﻣﺮ إﻟﯿﻪ ﻣﺒﺎﺷﺮة ﻋﻦ ﻃﺮﯾﻖ اﻟﺒﺮﯾﺪ اﻹﻟﻜﺘﺮوﻧﻲ وذﻟﻚ إن ﻛﻨﺖ ﻣﺴﺎﻓﺮ ﻣﺜﻼ.
وﻟﻘﺪ اﻛﺘﺸﻔﺖ أﯾﻀﺎ أن اﻟﺒﺮﻧﺎﻣﺞ ﻗﺎﺑﻞ ﻻﺳﺘﺨﺪام اﻟﻠﻐﺔ اﻹﻧﺠﻠﯿﺰﯾﺔ ،ﻓﺒﻤﺠﺮد ﺑﺎن ﺗﻘﻮم ﺑﺘﻮﺻﯿﻒ
اﻟﺠﺪاول ﻓﻲ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت وﺷﺮﺣﻬﺎ ﻟﻠﻨﻈﺎم ،ﻓﺄﻧﺖ ﻗﺎدر ﻋﻠﻰ ﺗﻮﺟﯿﻪ اﻷﺳﺌﻠﺔ إﻟﯿﻪ ﺑﺎﻟﻠﻐﺔ اﻹﻧﺠﻠﯿﺰﯾﺔ
ﻣﺒﺎﺷﺮة ،ﻓﺘﺴﺘﻄﯿﻊ أن ﺗﺴﺄﻟﻪ ﺑﻠﻐﺔ إﻧﺠﻠﯿﺰﯾﺔ ﻃﺒﯿﻌﯿﺔ أن ﯾﻌﺮض ﻟﻚ أﺻﻨﺎف اﻟﺒﻀﺎﺋﻊ ،أو ﻣﻌﻠﻮﻣﺎت
ﻋﻦ اﻟﻤﻮردﯾﻦ ،أو ﻣﺎ ﯾﺸﺎﺑﻪ ذﻟﻚ ،وذﻟﻚ ﻋﻦ ﻃﺮﯾﻖ ال
English Query Language
اﻟﻤﺮﻓﻘﺔ ﺑﺎﻟﻨﻈﺎم ﻧﻔﺴﻪ
أﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﻮﺛﺎﺋﻖ اﻟﺘﻌﻠﯿﻤﯿﺔ ﻓﻘﺪ أرﻓﻘﺖ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ ﻣﺎ ﯾﺰﯾﺪ ﻋﻦ ١٠أﻻف ﺻﻔﺤﺔ ﻣﻦ اﻟﻜﺘﺐ ﻣﻊ
ذﻟﻚ اﻟﻨﻈﺎم ﻋﻠﻰ ﻗﺮص اﻟﻠﯿﺰر وذﻟﻚ ﻋﻦ ﻃﺮﯾﻖ
SQL Server Books On-Line
ﻛﻤﺎ وﺟﺪت اﻟﻌﺪﯾﺪ ﻣﻦ اﻟﻮﺛﺎﺋﻖ ﻓﻲ ﻣﻮاﻗﻊ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ ﻋﻠﻰ اﻧﺘﺮﻧﺖ ﻣﺜﻞ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
support.microsoft.com
msdn.microsoft.com/library
msdn.microsoft.com/sqlserver
ﻛﻞ ﺗﻠﻚ اﻟﻮﺛﺎﺋﻖ واﻟﻤﺴﺘﻨﺪات ﺳﺎﻋﺪﺗﻨﻲ ﺑﺎن أﺗﻐﻠﺐ ﻋﻠﻰ أﯾﺔ ﻣﺸﻜﻠﺔ ﻛﺎﻧﺖ ﺗﺤﺪث ﻣﻊ
SQL-Server
دﻗﺎﺋﻖ ﺑﻌﺪ ﺣﺪوﺛﻬﺎ ،ﻋﻜﺲ اوراﻛﻞ واﻟﺬي ﻓﺸﻠﺖ ﻓﻲ إﯾﺠﺎد ﺣﻞ اﻟﻤﺸﺎﻛﻞ اﻟﺘﻲ واﺟﻬﺘﻨﻲ ﻋﻨﺪ
اﺳﺘﺨﺪاﻣﻪ ﻋﻦ ﻃﺮﯾﻖ اوراﻛﻞ ﻓﻲ اﻧﺘﺮﻧﺖ.
ﻛﻞ ذﻟﻚ ﺟﻌﻠﻨﻲ أﻓﻀﻞ
SQL-Server
ﻛﺜﯿﺮا ﻓﻲ ﺗﻠﻚ اﻟﻤﻘﺎرﻧﺔ
واﻟﺒﻨﺪ اﻷﺧﺮ اﻟﺬي اﺛﺮ ﻛﺜﯿﺮا ﻓﻲ اﻟﻤﻘﺎرﻧﺔ ﻫﻲ اﻟﺘﻜﻠﻔﺔ
ﺗﻠﻜﻔﺔ اﻟﻨﻈﺎم ) ﺗﻠﻜﻔﺔ اﻟﺸﺮاء ،اﻟﺘﺮﻛﯿﺐ ،اﻟﺼﯿﺎﻧﺔ ،اﻻﺳﺘﺨﺪام ﻋﺒﺮ اﻟﺸﺒﻜﺔ ،وﻏﯿﺮﻫﻤﺎ(
وﺑﺎﻟﻤﻨﺎﺳﺒﺔ اﻟﯿﻮم اﻟﺘﻜﻠﻔﺔ ﻫﻲ اﻟﻌﺎﻣﻞ اﻷول اﻟﺬي ﯾﺴﺘﺨﺪﻣﻪ اﻟﻤﻘﺎرﻧﻮن ﺑﯿﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺘﻠﻔﺔ
،ﻓﺎﻟﺴﻌﺮ ﻋﺎﻣﻞ أﺳﺎﺳﻲ وﯾﺆﺛﺮ ﻛﺜﯿﺮا ﻓﻲ اﺧﺘﯿﺎر اﻹدارة ﻟﻨﻈﺎم ﻣﺎ ﻋﻮﺿﺎ ﻋﻦ ﻧﻈﺎم آﺧﺮ وﻫﺬا ﻣﺎ
ﯾﺤﺪث ﻓﻲ ﻣﻌﻈﻢ اﻟﻤﺆﺳﺴﺎت اﻟﻜﺒﯿﺮة ،ﻓﻠﻮ ﻋﺮﺿﺖ ﻋﻠﻰ اﻟﻤﺪﯾﺮ ﻧﻈﺎﻣﯿﻦ ،أﺣﺪﻫﻤﺎ ﯾﻜﻠﻒ ﺛﻼﺛﺔ أﻻف
دوﻻر واﻵﺧﺮ ﻗﺪ ﯾﺼﻞ إﻟﻰ ﻋﺸﺮة آﻻف دوﻻر واﻻﺛﻨﯿﻦ ﻗﺎدرﯾﻦ ﻋﻠﻰ ﻋﻤﻞ اﻟﻌﻤﻞ ﻧﻔﺴﻪ ،ﻓﻠﻦ ﯾﺘﺮدد
ﺑﺎﺧﺘﯿﺎر اﻷرﺧﺺ
ﻗﺪ ﯾﺘﺪﺧﻞ اﻟﺒﻌﺾ وﯾﻘﻮل ﺑﺎن اﻟﺠﻮدة واﻷداء ﻣﻬﻤﯿﻦ ﻟﻠﻐﺎﯾﺔ ،وأﻧﺎ أواﻓﻘﻬﻢ اﻟﺮأي ﻓﻲ ذﻟﻚ ،وﻟﻜﻦ
ﻋﻠﻰ اﻟﺠﻤﯿﻊ أن ﯾﺘﺬﻛﺮ ﺑﺎن اﻟﻌﺎﻣﻠﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﻻ ﯾﺘﺠﺰءوا ﻋﻦ اﻟﺘﻜﻠﻔﺔ إﻃﻼﻗﺎ ،ﻓﺎن ﻟﻢ ﯾﻜﻦ اﻟﻨﻈﺎم
ﺟﯿﺪ ﻓﻘﺪ ﺗﻀﻄﺮ إﻟﻰ دﻓﻊ ﻣﺒﺎﻟﻎ ﺿﺨﻤﺔ ﻟﺼﯿﺎﻧﺘﻪ وﺗﺪرﯾﺐ اﻟﻤﻮﻇﻔﯿﻦ ﻟﻠﻌﻤﻞ ﻋﻠﯿﻪ ،ﻛﻤﺎ أن اﻟﻮﻗﺖ
اﻟﺬي ﺳﺘﺴﺘﻐﺮﻗﻪ ﻓﻲ ذﻟﻚ ﯾﻜﻠﻒ ﻣﺒﺎﻟﻎ أﯾﻀﺎ
ﻣﺎذا اﻗﺼﺪ ﺑﺎﻟﺴﻌﺮ ﺑﺎﻟﻀﺒﻂ
أوﻻ :ﺗﻜﻠﻔﺔ اﻟﻨﻈﺎم ﻧﻔﺴﻪ
ﻋﻨﺪ ﺷﺮاﺋﻚ ﻟﻤﺤﺮك ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت ﻣﺮﻛﺰي ﻓﺎن ﺗﺪﻓﻊ ﻣﺒﻠﻎ ﻣﻘﺎﺑﻞ ﺗﺸﻐﯿﻞ ذﻟﻚ اﻟﻨﻈﺎم ﻋﻠﻰ اﻟﺠﻬﺎز
اﻟﻤﺮﻛﺰي ﻟﺪﯾﻚ وﻫﻮ ﺳﻌﺮ اﻟﻨﻈﺎم
ﻓﻌﻨﺪ ﻣﻘﺎرﻧﺔ اﻷﺳﻌﺎر ﺳﺘﺠﺪ ﺑﺎن
SQL Server 2000
ﯾﻜﻠﻔﻚ ٢٠٠٠دوﻻر ،وذﻟﻚ ﻟﻠﻨﺴﺨﺔ اﻟﻜﺎﻣﻠﺔ اﻟﻮﻇﺎﺋﻒ ﻣﻊ إﻣﻜﺎﻧﯿﺔ اﺳﺘﺨﺪاﻣﻬﺎ ﻣﻦ ﻋﺸﺮة
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻣﺴﺘﺨﺪﻣﯿﻦ ﻋﺒﺮ اﻟﺸﺒﻜﺔ ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ
أﻣﺎ اوراﻛﻞ ٨ﻓﺴﯿﻜﻠﻔﻚ ﺣﻮاﻟﻲ ﺧﻤﺴﺔ آﻻف دوﻻر وذﻟﻚ ﻟﻠﻨﺴﺨﺔ اﻟﻌﺎدﯾﺔ ﻣﻊ إﻣﻜﺎﻧﯿﺔ اﺳﺘﺨﺪاﻣﻬﺎ ﻣﻦ
ﺧﻤﺴﺔ ﻣﺴﺘﺨﺪﻣﯿﻦ ﻋﺒﺮ اﻟﺸﺒﻜﺔ ﻓﻲ ﻧﻔﺲ اﻟﻮﻗﺖ
)ﻫﻨﺎك ﺑﻌﺾ اﻟﺘﻌﺪﯾﻼت اﻵن ﻋﻠﻰ أﺳﻌﺎر اوراﻛﻞ ﻓﻲ ﻣﺤﺎوﻟﺔ ﻟﺘﺨﻔﯿﻀﻬﺎ ،وﻟﻜﻨﻬﺎ ﺗﺒﻘﻰ ﻣﺮﺗﻔﻌﺔ(
ﻟﻦ ﺗﻼﺣﻆ ﻫﻨﺎ ﻓﺮق ﻛﺒﯿﺮ ﻓﻲ اﻟﺴﻌﺮ ﻋﻨﺪ زﯾﺎرﺗﻚ ﻟﻤﻮﻗﻊ اوراﻛﻞ اﻟﺠﺪﯾﺪ ﻓﻲ إﻧﺘﺮﻧﺖ ،وﻟﻜﻦ ﺗﺬﻛﺮ ﺑﺄﻧﻚ
ﺗﻘﺎرن ﻧﻈﺎﻣﯿﻦ ﺑﻤﻤﯿﺰات ﻣﺨﺘﻠﻔﺔ ،ﻓﺎن ﺣﺎوﻟﺖ ﻣﺴﺎواة اﻟﻤﻤﯿﺰات ﻓﻲ ﻛﻼ ﻣﻨﻬﻢ ﻓﺴﺘﺠﺪ ﺑﺎن اوراﻛﻞ
ﺳﯿﺮﺗﻔﻊ ﺳﻌﺮه ﻛﺜﯿﺮا ﻋﻜﺲ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ
SQL Server 2000
واﻟﺬي ﺗﺤﺼﻞ ﻋﻠﯿﻪ وﻋﻠﻰ ﻛﻞ ﻣﻤﯿﺰاﺗﻪ ﺑﺎﻟﺘﻜﻠﻔﺔ ذاﺗﻬﺎ ،ﺣﯿﺚ ﻻ ﺗﻮﺟﺪ أﺳﻌﺎر ﻣﺨﺒﺌﺔ ﺑﺪاﺧﻠﻪ
ﺛﺎﻧﯿﺎ :ﺗﻜﻠﻔﺔ اﺳﺘﺨﺪام اﻟﻨﻈﺎم ﻋﺒﺮ اﻟﺸﺒﻜﺔ
ﻛﻤﺎ ﯾﻌﻠﻢ اﻟﺒﻌﺾ ﻻ ﯾﻜﻔﻲ ﺷﺮاﺋﻚ ﻟﻠﻨﻈﺎم ﻟﺘﻌﻤﻞ ﻋﻠﯿﻪ ﻋﻦ ﻃﺮﯾﻖ اﻟﺸﺒﻜﺔ ،ﻓﺄﻧﺖ ﺑﺤﺎﺟﺔ ﻟﻠﺤﺼﻮل ﻋﻠﻰ
رﺧﺼﺔ اﺳﺘﺨﺪام ﻟﻠﻨﻈﺎم ﻋﺒﺮ اﻟﺸﺒﻜﺔ وﺗﺴﻤﻰ
Client Access License
ﺣﯿﺚ ﺳﯿﻜﻠﻔﻚ
SQL Server
ﺗﻘﺮﯾﺒﺎ ٢٤٠٠دوﻻر ﻟﻜﻞ ﻋﺸﺮﯾﻦ ﻣﺴﺘﺨﺪم ﻋﻦ ﻃﺮﯾﻖ اﻟﺸﺒﻜﺔ ٣٠٠٠ ،دوﻻر ﻟﻌﺪد ﻻﻧﻬﺎﺋﻲ ﻣﻦ
اﻟﻤﺴﺘﺨﺪﻣﯿﻦ ﻋﻦ ﻃﺮﯾﻖ إﻧﺘﺮﻧﺖ ﻟﻜﻞ ﺟﻬﺎز
أﻣﺎ اوراﻛﻞ ﻓﺴﯿﻜﻠﻔﻚ أﻛﺜﺮ ﻣﻦ ذﻟﻚ ﺑﻜﺜﯿﺮ ،ﻫﺬا ﻏﯿﺮ اﻟﺘﻜﺎﻟﯿﻒ اﻟﻤﺨﺒﺌﺔ اﻟﺘﻲ ﻗﺪ ﺗﻈﻬﺮ ﺑﻪ ﻓﺠﺄة
ﺛﺎﻟﺜﺎ :ﺗﻜﻠﻔﺔ اﻟﺘﺮﻛﯿﺐ واﻟﺘﺸﻐﯿﻞ واﻟﺼﯿﺎﻧﺔ
ﻻ أﺗﺴﺘﻄﯿﻊ أن أﻋﻄﻲ أرﻗﺎم ﻟﺘﻠﻚ اﻟﺘﻜﻠﻔﺔ ﻷﻧﻬﺎ ﺗﺘﻐﯿﺮ ﻣﻦ ﻣﻜﺎن إﻟﻰ آﺧﺮ وﻟﻜﻦ أﺳﺘﻄﯿﻊ إﻟﻰ أن أﻧﺒﻬﻚ
إﻟﻰ ﺑﻌﺾ اﻟﻨﻘﺎط وﻫﻲ
ﻛﻠﻤﺎ ازداد اﻟﻮﻗﺖ اﻟﻤﻄﻠﻮب ﻟﻠﺘﺮﻛﯿﺐ واﻟﺘﺸﻐﯿﻞ ،ﻛﻠﻤﺎ ازدادت اﻟﺘﻜﻠﻔﺔ
ﻛﻠﻤﺎ ازداد ﺗﻌﻘﯿﺪ اﻟﻨﻈﺎم ،ﻓﺴﺘﺤﺘﺎج إﻟﻰ ﺧﺒﺮاء ذو ﺧﺒﺮات أﻛﺜﺮ وﺗﻜﻠﻔﺔ أﻋﻠﻰ
ﻛﻠﻤﺎ ﻗﻠﺖ اﻟﻤﺴﺘﻨﺪات اﻟﻤﺘﻮﻓﺮة ،ﻓﺴﯿﺰداد اﻟﻮﻗﺖ اﻟﻤﻄﻠﻮب ﻟﺤﻞ أﯾﺔ ﻣﺸﻜﻠﺔ وﺑﺎﻟﺘﺎﻟﻲ ﺳﺘﺘﻮﻗﻒ
أﻋﻤﺎﻟﻚ ﻟﻤﺪة أﻃﻮل وﺳﺘﺘﺤﻤﻞ ﺧﺴﺎرة اﻛﺒﺮ
ﻛﻤﺎ أن اوراﻛﻞ ﺗﻘﺪم ﺧﺪﻣﺎت ﻣﺪﻓﻮﻋﺔ ﻟﻠﺼﯿﺎﻧﺔ ،ﻋﻜﺲ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ اﻟﺘﻲ ﺗﻘﺪم ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت
واﺳﻌﺔ ﻋﻠﻰ اﻧﺘﺮﻧﺖ ﺗﺤﺘﻮي ﻋﻠﻰ أﻻف اﻟﻤﺸﺎﻛﻞ وﺣﻠﻮﻟﻬﺎ ،ﻛﻤﺎ أﻧﻬﺎ ﺗﺼﺪر ﺑﺮاﻣﺞ ﺻﯿﺎﻧﺔ وﺗﻄﻮﯾﺮ
ﻣﻦ ﻣﺮﺗﯿﻦ ﺣﺘﻰ ﺛﻼﺛﺔ ﻣﺮات ﻛﻞ ﻋﺎم وذﻟﻚ ﻣﺠﺎﻧﺎ
ﺑﺪون ﺣﺘﻰ أن ﺗﺴﺄﻟﻚ إن ﻛﻨﺖ ﺗﺴﺘﺨﺪم ﻧﺴﺨﺔ أﺻﻠﯿﺔ ﻣﻦ اﻟﻨﻈﺎم أو ﺣﺘﻰ ﻣﻨﺴﻮﺧﺔ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
راﺑﻌﺎ :ﺗﻜﻠﻔﺔ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺳﺘﻌﻤﻞ ﻣﻦ ﺧﻼﻟﻬﺎ ﺑﺮاﻣﺠﻚ
ﻛﻤﺎ ﯾﻌﻠﻢ اﻟﺠﻤﯿﻊ ﻓﻤﻦ اﻟﺼﻌﻮﺑﺔ اﺳﺘﺨﺪام ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ﻣﺒﺎﺷﺮةً ﻋﺒﺮ اﻟﺸﺒﻜﺔ ،ﻓﻨﺤﻦ
ﺑﺤﺎﺟﺔ إﻟﻰ ﻛﺘﺎﺑﺔ ﺑﻌﺾ اﻟﺒﺮاﻣﺞ ﻟﺘﻌﻤﻞ ﻣﻦ ﺧﻼﻟﻬﺎ ﻋﻠﻰ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺗﻠﻚ
وﻣﻦ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ اﻟﺘﻲ ﺗﻘﺪﻣﻬﺎ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ واﻟﺘﻲ ﻗﺎدرة ﻟﺒﻨﺎء ﺑﺮاﻣﺞ ﻣﺨﺼﺼﺔ ل
SQL Server 2000
ﻣﻨﻬﺎ
Microsoft Visual Basic 6
Microsoft Access 2000 Developer
وﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﺗﻠﻚ ﺗﺼﻨﻊ ﺑﺮاﻣﺞ ﻣﻤﺘﺎزة ،واﻻﻫﻢ اﻧﻪ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ ﻻ ﺗﻄﻠﺐ ﻣﺒﺎﻟﻎ إﺿﺎﻓﯿﺔ ﻋﻦ ﻛﻞ
ﻧﺴﺨﺔ ﺗﺒﯿﻌﻬﺎ ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﻨﺘﺠﺔ ﻣﻦ ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ ﺗﻠﻚ ،ﻓﺄﻧﺖ ﺣﺮ ﺑﺘﻮزﯾﻌﻬﺎ ﻣﺠﺎﻧﺎ إن ﺷﺌﺖ
ﺑﺎﻟﻨﺴﺒﺔ ﻟﻔﯿﺠﻮال ﺑﯿﺴﻚ ﻓﻬﻨﺎك ﻣﺠﻤﻮﻋﺔ ﻣﻠﻔﺎت
DLL
أﺳﺎﺳﯿﺔ ﻟﺘﺸﻐﯿﻞ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺻﻨﻌﺖ ﻋﻦ ﻃﺮﯾﻖ ﺗﻠﻚ اﻟﻠﻐﺔ و ﺗﻮزﻋﻬﺎ ﺑﺮاﻣﺞ اﻟﺘﺮﻛﯿﺐ ﻣﺠﺎﻧﺎ ﻣﻊ
ﺑﺮﻧﺎﻣﺠﻚ
وﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﺎﯾﻜﺮوﺳﻮﻓﺖ اﻛﺴﺲ ﻓﻬﻨﺎك ﻧﺴﺨﺔ ﻣﺨﺼﺼﺔ ﻟﺘﺸﻐﯿﻞ اﻟﺒﺮاﻣﺞ اﻟﻤﻨﺘﺠﺔ ﻣﻨﻚ وﻫﻲ
Microsoft Access Runtime
وأﻧﺖ ﺣﺮ ﺑﺘﻮزﯾﻌﻬﺎ ﻣﻊ ﺑﺮاﻣﺠﻚ ﻣﺠﺎﻧﺎ
أﻣﺎ ﻓﺎﻷﻣﺮ ﻋﻨﺪ اوراﻛﻞ ﻓﯿﺨﺘﻠﻒ ،ﻓﻬﻲ ﺗﻘﺪم ﻃﺎﻗﻢ ﺑﺮﻣﺠﯿﺎت
Oracle Developer 2000, or R:2 or R:6
وﺗﻄﻠﺐ اوراﻛﻞ ﻣﺒﻠﻎ ﻣﻦ اﻟﻤﺎل ﻣﻘﺎﺑﻞ ﻛﻞ ﻧﺴﺨﺔ ﺗﺒﯿﻌﻬﺎ ﻣﻦ ﺑﺮﻧﺎﻣﺠﻚ اﻟﺬي ﺻﻨﻌﺘﻪ ﺑﻠﻐﺔ اﻟﺒﺮﻣﺠﺔ ﺗﻠﻚ
وذﻟﻚ ﻋﻦ ﻃﺮﯾﻖ ﺑﯿﻊ ﻧﺴﺨﺔ ﻣﻦ
Oracle Developer Runtime
ﻣﻊ ﻛﻞ ﻧﺴﺨﺔ ﺗﺒﯿﻌﻬﺎ ﻣﻦ ﺑﺮﻧﺎﻣﺠﻚ ،واﻟﺬي ﻻ ﺗﺴﺘﻄﯿﻊ ﺑﺮاﻣﺠﻚ و اﻟﺘﻲ ﺻﻨﻌﺖ ﻋﻦ ﻃﺮﯾﻖ اوراﻛﻞ ،
اﻟﻌﻤﻞ ﺑﺪوﻧﻬﺎ
ﻛﻞ اﻟﻨﻘﺎط اﻟﺴﺎﺑﻘﺔ ﺗﻠﻚ ﺗﺆﺛﺮ ﻛﺜﯿﺮا ﻋﻠﻰ ﻋﻤﻠﯿﺔ اﺧﺘﯿﺎرك ﻟﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﻄﻠﻮﺑﺔ
ﻫﻨﺎك ﺑﻌﺾ اﻷﻣﻮر اﻷﺧﺮى اﻟﺘﻲ ﺗﺰﻋﺠﻨﻲ ﻋﻨﺪ اوراﻛﻞ ﻣﺜﻞ ﺳﯿﺎﺳﺔ اﻟﺘﺮﺧﯿﺺ ﻣﺜﻼ ،ﻓﯿﺤﻖ ﻻوراﻛﻞ
أن ﺗﺰورك ﻣﺮة ﻋﻠﻰ اﻷﻗﻞ ﻟﺘﺪﻗﯿﻖ ﻋﻤﻠﻚ ،وﻋﻠﯿﻚ ﻓﺘﺢ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎﺗﻚ ﻟﻬﺎ ﻟﻠﻨﻈﺮ ﻓﯿﻬﺎ ،ﻛﻤﺎ ﺗﻤﻨﻌﻚ
اوراﻛﻞ إﺟﺮاء أﯾﺔ ﻣﻘﺎرﻧﺎت ﻋﻠﻰ ﺳﺮﻋﺔ أﻧﻈﻤﺘﻬﺎ ﺑﺪون اﻟﺮﺟﻮع إﻟﯿﻬﺎ
ﻋﻜﺲ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ واﻟﺘﻲ ﺗﺴﻤﺢ ﻓﻲ ﺳﯿﺎﺳﺔ اﻟﺘﺮﺧﯿﺺ ﻟﺪﯾﻬﺎ ﺗﻮزﯾﻊ اﻟﻨﻈﺎم اﻟﻤﺼﻐﺮ ﻣﻦ
SQL Server 2000
واﻟﻤﺴﻤﻰ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
Microsoft Data Engine
ﻣﺠﺎﻧﺎ ﻣﻊ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺗﺼﻨﻌﻬﺎ
ﻻ أرﯾﺪ أن أزﻋﺠﻜﻢ ﺑﻤﻘﺎرﻧﺎت أﻛﺜﺮ ،ﻓﺎﻧﺎ اﺧﺘﺮت ﻗﺒﻞ ﻣﺪة
SQL Server
وﻫﻨﺎك ﻣﻦ اﺧﺘﺎر
Oracle
وﻛﻞ واﺣﺪ ﺣﺮ ﻓﻲ اﺧﺘﯿﺎره وﻃﺮﯾﻘﺔ ﻣﻘﺎرﻧﺘﻪ
وﻟﻨﻨﺘﻘﻞ إﻟﻰ ﺻﻠﺐ اﻟﻤﻮﺿﻮع وﻧﺒﺪأ ﺑﺎﺳﺘﺨﺪام
Microsoft SQL Server 2000
أﺟﺰاء Microsoft SQL Server 2000وﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻨﻬﺎ
أﺟﺰاء
Microsoft SQL Server 2000
وﺑﻌﺾ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻨﻬﺎ
ﯾﺘﻜﻮن ﺑﺮﻧﺎﻣﺞ
Microsoft SQL Server 2000
ﻣﻦ ﻋﺪة أﺟﺰاء ﻣﻬﻤﺔ ﻣﺘﺮاﺑﻄﺔ ﻣﻊ ﺑﻌﻀﻬﺎ اﻟﺒﻌﺾ ،ﻣﺜﻞ ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ،ﻣﻠﻔﺎت اﻟﺘﺼﻠﯿﺢ ،
ﺷﺎﺷﺔ اﻹدارة واﻟﻤﺮاﻗﺒﺔ وﻏﯿﺮﻫﺎ ﻣﻦ اﻷﺟﺰاء واﻟﺘﻲ ﺳﺄﺣﺎول أن أﺷﺮح ﻣﻌﻈﻤﻬﺎ ﻓﻲ ﻣﻘﺎﻟﻲ ﻫﺬا
واﻷﺟﺰاء ﻫﻲ
SQL Server Enterprise Manager
وﻫﻮ اﻟﺒﺮﻧﺎﻣﺞ اﻷﺳﺎﺳﻲ اﻟﺬي ﯾﻘﻮم ﺑﺈدارة اﻟﻨﻈﺎم ﺑﺎﻟﻜﺎﻣﻞ ،ﻓﻤﻨﻪ ﺗﺴﺘﻄﯿﻊ إﻧﺸﺎء ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ،
وﻧﺴﺨﻬﺎ اﺣﺘﯿﺎﻃﯿﺎً وإﻧﺸﺎء اﻟﺠﺪاول واﻻﺳﺘﻌﻼﻣﺎت ،وإﻋﻄﺎء اﻟﺼﻼﺣﯿﺎت وﻏﯿﺮﻫﺎ ﻣﻦ اﻷﻣﻮر
وﯾﻘﻮم ذﻟﻚ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺘﺼﻨﯿﻒ أﺟﺰاء اﻟﻨﻈﺎم إﻟﻰ ﻛﺎﺋﻨﺎت وﺧﺼﺎﺋﺺ ﻟﺘﻠﻚ اﻟﻜﺎﺋﻨﺎت وذﻟﻚ ﻓﻲ ﺷﻜﻞ
ﻣﺸﺎﺑﻪ ﻟﺸﻜﻞ ﻣﺴﺘﻜﺸﻒ اﻟﻮﯾﻨﺪوس ،وذﻟﻚ ﻟﺘﺴﻬﯿﻞ اﺳﺘﺨﺪاﻣﻪ ﻣﻦ ﻣﻌﻈﻢ اﻟﻤﺴﺘﺨﺪﻣﯿﻦ
SQL Server Client Network Utility
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
وﻫﻮ ﺑﺮﻧﺎﻣﺞ ﺻﻐﯿﺮ ﯾﺴﺎﻋﺪك ﻓﻲ ﺗﻮﺻﯿﻒ أﺟﻬﺰة ﺗﺤﻤﻞ ﻣﺤﺮك ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت ل
SQL Server
ﺗﺠﻬﯿﺰا ﻹدارﺗﻬﺎ ﻋﻦ ﺑﻌﺪ ﻋﻦ ﻃﺮﯾﻖ أل
Enterprise Manager
وﯾﺴﺘﺨﺪم ﻓﻲ ﺣﺎﻟﺔ اﻟﺤﺎﺟﺔ إﻟﻰ إدارة ﺟﻬﺎز ﻣﺮﻛﺰي ﺑﻌﯿﺪ ﻓﻲ ﺷﺒﻜﺔ أﺧﺮى ﻛﺈﻧﺘﺮﻧﺖ ﻣﺜﻼ
SQL Server Network Utility
ﯾﺤﺪد اﻟﺒﺮوﺗﻮﻛﻮﻻت اﻟﺘﻲ ﯾﻤﻜﻦ ﻟﻤﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻣﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻟﺘﻮزﯾﻊ اﻟﺒﯿﺎﻧﺎت ﻋﻠﻰ اﻟﺸﺒﻜﺔ
اﻟﺪاﺧﻠﯿﺔ وﻋﻠﻰ إﻧﺘﺮﻧﺖ
SQL Server Performance Monitor
وﻫﻲ إﺿﺎﻓﺔ ﻟﻨﻈﺎم اﻟﻤﺮاﻗﺒﺔ اﻟﺮﺋﯿﺴﻲ اﻟﺨﺎص ب
Windows NT
ﺣﯿﺚ ﺗﺴﻤﺢ ﻟﻚ ﺗﻠﻚ اﻹﺿﺎﻓﺔ ﻣﺮاﻗﺒﺔ ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ﻋﻦ ﻃﺮﯾﻖ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺴﺎﺑﻖ ،
ﻓﻌﻦ ﻃﺮﯾﻘﻪ ﺗﺴﺘﻄﯿﻊ ﻣﻌﺮﻓﺔ ﺗﻔﺎﺻﯿﻞ دﻗﯿﻘﺔ ﻋﻦ ﻋﺪد اﻟﻤﺘﺼﻠﯿﻦ ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻓﻲ أوﻗﺎت ﻣﺨﺘﻠﻔﺔ ،
أو ﻋﻦ ﺣﺠﻢ اﻟﻀﻐﻂ ﻋﻠﯿﻬﺎ ،ﻋﺪد اﻟﻄﻠﺒﺎت ،ﺣﺠﻤﻬﺎ ﻓﻲ اﻟﻘﺮص اﻟﺼﻠﺐ ،اﻟﺦ
SQL Server Profiler
ﺑﺮﻧﺎﻣﺞ راﺋﻊ ﻟﻤﺮاﻗﺒﺔ ﻛﺎﻓﺔ أواﻣﺮ أل
Transact SQL
اﻟﻤﺮﺳﻠﺔ ﻣﻦ اﻟﻤﺴﺘﺨﺪﻣﯿﻦ إﻟﻰ اﻟﻨﻈﺎم اﻟﻤﺮﻛﺰي ،ﻓﻬﻮ ﯾﻌﺮض ﻟﻚ اﻷواﻣﺮ اﻟﻤﺮﺳﻠﺔ ووﻗﺖ اﻟﺘﻨﻔﯿﺬ
ﻟﺤﻈﺔ ﺑﻠﺤﻈﺔ ،و ﻫﻮ راﺋﻊ ﻻﺳﺘﺨﺪام اﻟﻤﺒﺮﻣﺠﯿﻦ
ﯾﻤﻜﻦ اﺳﺘﺨﺪاﻣﻪ ﻟﻮﺣﺪه أو ﻛﺠﺰء ﻣﻦ ﺑﺮﻧﺎﻣﺞ اﻹدارة اﻟﺮﺋﯿﺴﻲ
SQL Server Query Analyzer
إن رﻏﺒﺖ ﺑﺈﺻﺪار اﻷواﻣﺮ ﻣﺒﺎﺷﺮةً إﻟﻰ ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ﻋﻦ ﻃﺮﯾﻖ ﻟﻐﺔ
Transact SQL
ﻓﻬﺬا ﻫﻮ اﻟﺒﺮﻧﺎﻣﺞ اﻟﺬي ﺳﯿﺴﺎﻋﺪك ﻓﻲ اﻟﻘﯿﺎم ﺑﺬﻟﻚ ،وﻟﻜﻦ ﻻ ﯾﻘﺘﺼﺮ ﻋﻤﻠﻪ ﻋﻠﻰ ﻫﺬا ﻓﻘﻂ ،ﻓﻬﻮ ﻗﺎدر
ﻋﻠﻰ اﺣﺘﺴﺎب اﻟﻮﻗﺖ اﻟﻤﺨﺼﺺ ﻹﺟﺮاء ﺗﻠﻚ اﻷواﻣﺮ ،وإن ﻛﺎﻧﺖ أواﻣﺮ ﻣﻌﻘﺪة ﻓﻬﻮ ﻗﺎدر ﻋﻠﻰ
ﺗﻔﻜﯿﻜﻬﺎ ورﺳﻢ ﺧﺮﯾﻄﺔ رﺳﻮﻣﯿﺔ ﻟﻄﺮﯾﻘﺔ ﺗﻨﻔﯿﺬﻫﺎ واﻟﻮﻗﺖ اﻟﺬي ﺳﺘﺄﺧﺬه ﻛﻞ ﺧﻄﻮة ﺑﻬﺎ ،وﺑﺬﻟﻚ
ﺳﯿﺴﺎﻋﺪك ﺑﺈﻋﺎدة ﻛﺘﺎﺑﺔ اﻷواﻣﺮ ﻟﺘﺠﻌﻠﻬﺎ أﻓﻀﻞ و أﺳﺮع
SQL Server Service Manager
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
وﻫﻮ ﺑﺮﻧﺎﻣﺞ ﺻﻐﯿﺮ ﯾﻌﻤﻞ ﻣﻊ ﺗﺸﻐﯿﻞ اﻟﺠﻬﺎز وﯾﺒﻘﻰ ﻓﻲ ﺷﺮﯾﻂ اﻷدوات ﺑﺠﺎﻧﺐ اﻟﺴﺎﻋﺔ وﯾﺨﺒﺮك ﻋﻦ
ﺣﺎﻟﺔ ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ،أن ﻛﺎﻧﺖ ﺗﻌﻤﻞ أم ﻻ ،ﻛﻤﺎ ﺗﺴﺘﻄﯿﻊ ﺑﻮاﺳﻄﺘﻪ ﺗﺸﻐﯿﻞ وإﯾﻘﺎف
ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت أو اﻟﺒﺮاﻣﺞ اﻟﻤﺘﺮاﺑﻄﺔ ﻣﻌﻪ
SQL Server Books Online
وﻫﻲ ﻣﺠﻤﻮﻋﺔ ﺿﺨﻤﺔ ﻣﻦ اﻟﻜﺘﺐ واﻟﻤﺮاﺟﻊ ﺣﻮل ﻛﻞ ﻣﺎ ﯾﺘﻌﻠﻖ ﺑﺬﻟﻚ اﻟﻨﻈﺎم ﺑﺎﻟﺘﻔﺼﯿﻞ ،ﺣﻮاﻟﻲ
ﻋﺸﺮة آﻻف ﺻﻔﺤﺔ إن ﺣﺎوﻟﺖ ﻃﺒﺎﻋﺘﻬﺎ ،أن ﻛﻨﺖ ﻻ ﺗﺼﺪق ذﻟﻚ ﻓﺤﺎول ،ﻣﺎ ﻋﻠﯿﻚ إﻻ وان ﺗﻀﻐﻂ
ﻋﻠﻰ زر اﻟﻄﺒﺎﻋﺔ أﻋﻠﻰ اﻟﺒﺮﻧﺎﻣﺞ وﻣﻦ ﺛﻢ ﺗﺠﻠﺲ ﺑﺠﺎﻧﺐ اﻟﻄﺎﺑﻌﺔ وﺗﻨﺘﻈﺮ
SQL Server OLAP
ﻫﺬا ﻧﻈﺎم آﺧﺮ ﺿﺨﻢ ﻣﺮﻓﻖ ﻣﻊ
Microsoft SQL Server 2000
وﯾﺴﻤﺢ ﻟﻚ ﺑﻨﺎء ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت ﺛﻼﺛﯿﺔ اﻷﺑﻌﺎد
)ﻛﻤﺎ اﺳﻤﯿﻬﺎ أﻧﺎ(
وذﻟﻚ ﺑﺎﺳﺘﺨﺪام اﻟﺠﺪاول واﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﻮﺟﻮدة ﻣﺴﺒﻘﺎً ،وذﻟﻚ ﺑﻬﺪف ﺗﺤﻠﯿﻠﻬﺎ
واﻟﺤﺼﻮل ﻋﻠﻰ ﺗﻘﺎرﯾﺮ ﻣﻨﻬﺎ ،ذﻟﻚ اﻟﺒﺮﻧﺎﻣﺞ ﻫﻮ ﻣﻦ اﻟﺘﻜﻨﻮﻟﻮﺟﯿﺎ اﻟﺠﺪﯾﺪة واﻟﺘﻲ ﺗﺮﻓﻖ ﻣﺠﺎﻧﺎ ﻣﻊ
SQL Servers
وﻫﻮ ﻣﻜﻠﻒ ﻟﻠﻐﺎﯾﺔ إن ﺣﺎوﻟﺖ ﺷﺮاﺋﻪ ﻣﻦ ﺷﺮﻛﺎت أﺧﺮى ﻣﺜﻞ اوراﻛﻞ أو ﻏﯿﺮﻫﺎ ،وﺳﺄﻗﻮم ﺑﺸﺮح ذﻟﻚ
اﻟﻨﻈﺎم وﻃﺮﯾﻘﺔ ﺑﺮﻣﺠﺘﻪ ﻓﻲ اﻟﻤﺮﺣﻠﺔ اﻟﻤﺘﻘﺪﻣﺔ
ﻫﻨﺎك ﻣﺠﻤﻮﻋﺔ أﺧﺮى ﻣﻦ اﻟﺒﺮﻣﺠﯿﺎت اﻟﺼﻐﯿﺮة واﻟﻤﺨﺼﺼﺔ ﻟﻤﺤﺒﻲ اﺳﺘﺨﺪام ﺷﺎﺷﺎت
DOS
اﻟﻘﺪﯾﻤﺔ ،ﺣﯿﺚ ﺗﺴﻤﺢ ﻟﻬﻢ ﺗﻠﻚ اﻟﺒﺮﻣﺠﯿﺎت ﺑﺎﻟﻘﯿﺎم ﺑﻌﺪة ﻋﻤﻠﯿﺎت ﻋﻠﻰ اﻟﻨﻈﺎم
ﻛﻤﺎ أن ﻫﻨﺎك ﺛﻼﺛﺔ ﻛﺎﺋﻨﺎت ﻣﺨﺼﺼﯿﻦ ﻟﺒﺮﻣﺠﺔ اﻟﻨﻈﺎم ،وﺗﺴﺘﻄﯿﻊ ﺑﻮاﺳﻄﺘﻬﻢ اﻟﻘﯿﺎم ﺑﻜﻞ ﻣﺎ ﯾﻘﻮم ﺑﻪ
ﺑﺮﻧﺎﻣﺞ اﻹدارة اﻟﻤﺮﻛﺰي وذﻟﻚ ﺑﻜﻞ ﺳﻬﻮﻟﺔ ،ﺣﯿﺚ ﺗﺴﺘﻄﯿﻊ ﺻﻨﺎﻋﺔ ﺑﺮﻧﺎﻣﺞ إدارة ﺧﺎص ﺑﻚ ﻟﻮ
رﻏﺒﺖ ﺑﺬﻟﻚ
ﻛﻤﺎ ﻫﻨﺎك أﯾﻀﺎ ﺑﺮﻧﺎﻣﺞ
English Query Language
واﻟﺬي ﺳﺄﺷﺮح ﻃﺮﯾﻘﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﻣﺴﺘﻘﺒﻼً ،وﻛﻤﺎ ذﻛﺮت ﻣﻦ ﻗﺒﻞ ﻓﺄﻧﺖ ﺗﺴﺘﻄﯿﻊ ﺑﺬﻟﻚ اﻟﺒﺮﻧﺎﻣﺞ
إﺻﺪار اﻷواﻣﺮ ﺑﻠﻐﺔ إﻧﺠﻠﯿﺰﯾﺔ ﻋﺎدﯾﺔ إﻟﻰ ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،ﺣﯿﺚ ﺳﯿﻘﻮم ﺑﺘﺤﻠﯿﻠﻬﺎ واﻹﺟﺎﺑﺔ
ﻋﻠﯿﻚ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺗﻠﻚ ﻛﺎﻧﺖ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﯾﺘﻜﻮن ﻣﻨﻬﺎ
Microsoft SQL Server 2000
وﻟﻠﺘﺬﻛﯿﺮ ﻣﻌﻈﻤﻬﺎ ﻣﺪﻣﺞ ﻓﻲ ﺑﺮﻧﺎﻣﺞ اﻹدارة اﻟﺮﺋﯿﺴﻲ ﻟﻬﺬا اﻟﻨﻈﺎم ،أي ﻓﻲ
Microsoft SQL Server 2000 Enterprise Manager
ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻓﻲ Microsoft SQL Server 2000واﻟﻜﺜﯿﺮ ﻋﻨﻪ
ﻣﻦ اﻟﻀﺮوري اﻟﺘﺤﺪث ﻗﻠﯿﻼً ﻋﻦ ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻗﺒﻞ ﺑﺪﺋﻚ ﺑﺎﺳﺘﺨﺪام ﺑﺮﻧﺎﻣﺞ
Microsoft SQL Server 2000
ﺣﯿﺚ ﺳﺄﺣﺎول أن اﺷﺮح ﻃﺮﯾﻘﺔ ﻋﻤﻞ ذﻟﻚ اﻟﻤﺤﺮك وأﺟﺰاﺋﻪ وﺣﺪوده اﻟﻘﺼﻮى ،اﻋﺘﻘﺪ ﺑﺎن ذﻟﻚ
ﻣﻌﻠﻮﻣﺎت ﻣﻬﻤﺔ ﻋﻠﻰ اﻟﺠﻤﯿﻊ أن ﯾﻌﺮﻓﻬﺎ ،أو ﻋﻠﻰ اﻷﻗﻞ ﯾﻌﺮف اﻟﻘﻠﯿﻞ ﻋﻨﻬﺎ
ﯾﺘﻜﻮن اﻟﻤﺤﺮك اﻟﺨﺎص ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﺛﻼﺛﺔ ﺑﺮاﻣﺞ ﻣﻌﺘﻤﺪة ﻋﻠﻰ ﺑﻌﻀﻬﺎ اﻟﺒﻌﺾ ،ﻣﻊ اﻟﻌﻠﻢ
أﯾﻀﺎً اﻧﻪ ﻗﺎدر ﻋﻠﻰ اﻻﺳﺘﻐﻨﺎء ﻋﻨﻬﺎ واﻟﻌﻤﻞ ﻟﻮﺣﺪه ،وﻟﻜﻦ ذﻟﻚ ﺳﯿﻘﻠﻞ ﻣﻦ ﻣﻤﯿﺰاﺗﻪ ﻗﻠﯿﻼُ ،واﻷﺟﺰاء
ﻫﻲ
MS SQL Server
ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،وﻫﻮ اﻟﻤﺴﺌﻮل ﻋﻦ ﻛﻞ اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ اﻟﺒﯿﺎﻧﺎت
SQL Server Agent
ﺑﺮﻧﺎﻣﺞ إدارة ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،وﻫﻮ ﯾﺨﺘﻠﻒ ﻋﻦ اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﺨﺼﺺ ﻹدارة ﻛﻞ اﻟﻨﻈﺎم ،
ﻓﺼﺮاﺣﺔً أﻧﺖ ﻟﻦ ﺗﺘﻌﺎﻣﻞ ﻣﻊ ذﻟﻚ اﻟﺒﺮﻧﺎﻣﺞ ﻣﺒﺎﺷﺮةً ،ﻓﻬﻮ ﯾﺘﻤﯿﺰ ﺑﺒﻌﺾ اﻟﺬﻛﺎء اﻻﺻﻄﻨﺎﻋﻲ وﻫﻮ
ﻣﺨﺼﺺ ﻟﺘﻨﻔﯿﺬ اﻟﻌﻤﻠﯿﺎت اﻟﻤﺠﺪوﻟﺔ ﺣﺴﺐ ﺗﻮﻗﯿﺖ ﻣﻌﯿﻦ ﺑﺪاﺧﻞ ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،ﻣﺜﻞ
إﺻﻼﺣﻬﺎ وﻓﺤﺼﻬﺎ وإﺟﺮاء اﻟﻨﺴﺦ اﻻﺣﺘﯿﺎﻃﯿﺔ ﻣﻨﻬﺎ ،وﻛﺘﺎﺑﺔ اﻟﺘﻘﺎرﯾﺮ ﺣﻮل ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت وﻏﯿﺮﻫﺎ
أﻧﺎ ﺷﺨﺼﯿﺎ اﺳﻤﯿﻪ اﻟﻄﯿﺎر اﻵﻟﻲ
Autopilot
وﻫﻮ ﯾﺴﺎﻋﺪﻧﻲ ﻛﺜﯿﺮا ﻓﻲ إدارة ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،وﺑﺎﻟﻤﻨﺎﺳﺒﺔ ﻫﻮ ﻣﺎ ﯾﻤﯿﺰ ﻧﻈﺎﻣﻨﺎ ﻋﻦ اﻷﻧﻈﻤﺔ
اﻷﺧﺮى اﻟﻤﻮﺟﻮدة ﻓﻲ اﻷﺳﻮاق
Distributed Transaction Coordinator
وﻫﻮ ﻣﺨﺼﺺ ﻟﺮﺑﻂ ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﻤﺤﺮﻛﺎت أﺧﺮي وﺗﻘﺴﯿﻢ اﻟﺤﻤﻞ ﺑﯿﻨﻬﻢ وﺗﻨﻔﯿﺬ ﻋﻤﻠﯿﺎت
ﻣﻌﻘﺪة ﺑﯿﻨﻬﻢ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
وﻛﻼﻫﻤﺎ ﻣﺨﺼﺼﺔ ﻟﻠﻌﻤﻞ ﻋﻠﻰ ﺷﻜﻞ
Services
وﺗﺴﺘﻄﯿﻊ ﺗﺸﻐﯿﻠﻬﺎ وإﯾﻘﺎﻓﻬﺎ ﻋﻦ ﻃﺮﯾﻖ ﻟﻮﺣﺔ أﯾﻘﻮﻧﺔ أل
Services
ﻓﻲ ﻟﻮﺣﺔ اﻟﺘﺤﻜﻢ
ﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ﻓﻬﻮ ﯾﺴﺘﺨﺪم ﺛﻼﺛﺔ ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت ﻓﻲ ﻋﻤﻠﻪ أﻫﻤﻬﻤﺎ ﻗﺎﻋﺪة
اﻟﺒﯿﺎﻧﺎت
Master
واﻟﺘﻲ ﯾﺨﺰن ﺑﻬﺎ اﻟﻤﻌﻠﻮﻣﺎت اﻷﺳﺎﺳﯿﺔ ﻋﻦ ﻛﻞ اﻟﻨﻈﺎم ،ﻣﺜﻞ أﻣﺎﻛﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻷﺧﺮى ،أﺳﻤﺎء
اﻟﺠﺪاول اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﯿﻬﺎ ،وأﻣﻮر أﺧﺮى ﻋﺪﯾﺪة ،ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺗﻠﻚ ﻫﻲ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺻﻐﯿﺮة ،
وﻟﻜﻦ ﻓﻘﺪاﻧﻬﺎ ﯾﺆدي ﻋﻠﻰ ﻓﻘﺪان اﻟﻨﻈﺎم ﻛﻠﻪ ،أي ﻓﻘﺪان ﻛﻞ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت وﻛﻞ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺑﻬﺎ ،
ﻟﺬﻟﻚ ﯾﺠﺐ ﻧﺴﺨﻬﺎ اﺣﺘﯿﺎﻃﯿﺎ دوﻣﺎً
ﺛﺎﻧﻲ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﺴﺘﺨﺪﻣﺔ ﻣﻦ اﻟﻤﺤﺮك ﻫﻲ
Tempdb
وﯾﺴﺘﺨﺪﻣﻬﺎ اﻟﻤﺤﺮك ﻛﻤﺨﺰن ﺗﺨﺰﯾﻦ ﻣﺆﻗﺖ ،وذﻟﻚ ﻓﻲ ﺣﺎل ﻗﯿﺎﻣﻪ ﺑﻌﻤﻠﯿﺎت ﻃﻮﯾﻠﺔ ،وﻫﻲ ﻏﯿﺮ
ﻣﻬﻤﺔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻨﺎ ،ﻓﻬﻮ ﯾﻘﻮم ﺑﻤﺴﺢ ﻣﺤﺘﻮﯾﺎﺗﻬﺎ ﻣﺌﺎت اﻟﻤﺮات ﯾﻮﻣﯿﺎ
ﺛﺎﻟﺚ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻫﻲ
Model
وﯾﺴﺘﺨﺪﻣﻬﺎ اﻟﻨﻈﺎم ﻋﻨﺪ إﻧﺸﺎء ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺟﺪﯾﺪة ،ﺣﯿﺚ ﯾﻘﻮم ﺑﻨﺴﺦ ﻣﺤﺘﻮﯾﺎﺗﻬﺎ إﻟﻰ ﻗﺎﻋﺪة
اﻟﺒﯿﺎﻧﺎت اﻟﺠﺪﯾﺪة ،وﻫﻲ ﻻ ﺗﻬﻤﻨﺎ أﯾﻀﺎ وﻻ ﯾﺠﺐ ﻧﺴﺨﻬﺎ اﺣﺘﯿﺎﻃﯿﺎ ،إﻻ إذا ﻛﻨﺎ ﻋﺪﻟﻨﺎ ﻋﻠﯿﻬﺎ ،ﺣﯿﺚ
ﻧﺴﺘﻄﯿﻊ اﻋﺘﻤﺎد ﻣﻮاﺻﻔﺎت ﻗﯿﺎﺳﯿﺔ ﻟﻜﻞ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺟﺪﯾﺪة ﻧﺼﻨﻌﻬﺎ ،وﻧﺴﺘﻄﯿﻊ ﺗﺨﺰﯾﻦ ﺗﻠﻚ
اﻟﻤﻮاﺻﻔﺎت ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺗﻠﻚ وﻣﻦ ﺛﻢ ﻧﺼﻨﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﺨﺎﺻﺔ ﺑﻨﺎ
أﺟﺰاء ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
ﻛﻤﺎ ﺳﻨﻼﺣﻆ ﻣﺴﺘﻘﺒﻼً ﻋﻨﺪ ﺻﻨﻊ أول ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻟﻨﺎ ،ﺳﻨﻼﺣﻆ ﺑﺎن ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺗﺘﻜﻮن ﻣﻦ
ﻣﻠﻔﯿﻦ ،ﻛﻞ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺑﺪون اﺳﺘﺜﻨﺎء
اﻟﻤﻠﻒ اﻷول واﻣﺘﺪاده
.mdf
وﺑﻪ ﺗﺨﺰن اﻟﺒﯿﺎﻧﺎت
واﻟﻤﻠﻒ اﻟﺜﺎﻧﻲ واﻣﺘﺪاده
.ldf
وﺑﻪ ﺗﺨﺰن ﻛﻞ اﻟﺤﺮﻛﺎت اﻟﺘﻲ ﺗﺘﻢ ﻋﻠﻰ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻛﻤﺎ ﺗﺴﺘﻄﯿﻊ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﺳﺘﺨﺪام أﻛﺜﺮ ﻣﻦ ﻣﻠﻒ ﻣﻦ اﻟﻨﻮع اﻟﺴﺎﺑﻖ ﻣﻌﺎ وذﻟﻚ ﺑﻬﺪف ﺗﻘﺴﯿﻢ
اﻟﺒﯿﺎﻧﺎت ﻋﻠﻰ ﻋﺪة أﻗﺮاص ﺻﻠﺒﺔ
وﯾﺴﺘﺨﺪم ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﻠﻔﯿﻦ ﻣﻌﺎً وذﻟﻚ ﻋﻨﺪ اﻟﻌﻤﻞ ﻋﻠﻰ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﺎ ،واﻟﻬﺪف ﻣﻦ
اﻟﻤﻠﻔﯿﻦ ﻫﻮ ﺣﻤﺎﯾﺔ اﻟﺒﯿﺎﻧﺎت إﻟﻰ أﻗﺼﻰ ﺣﺪ ﻣﻤﻜﻦ ،ﻓﻌﻨﺪ ﺗﻌﺪﯾﻞ ﻗﯿﻤﺔ ﺣﻘﻞ ﻣﻌﯿﻦ ،ﻓﯿﻘﻮم اﻟﻤﺤﺮك
ﺑﺘﺴﺠﯿﻞ ذﻟﻚ ﻓﻲ ﻣﻠﻒ اﻟﺤﺮﻛﺎت واﻟﺬي ﺑﺪوره ﯾﺤﺘﻮي ﻋﻠﻰ ﻧﺴﺨﺔ ﻣﻦ ﻛﻞ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ أﺿﯿﻔﺖ أو
ﺣﺬﻓﺖ أو ﻋﺪﻟﺖ ﻋﻠﻰ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،وﻣﻦ ﺛﻢ ﯾﺴﺠﻠﻪ ﻓﻲ ﻣﻠﻒ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻷﺻﻠﯿﺔ ،وﻣﻦ ﺛﻢ
ﯾﺴﺠﻞ ﻋﻤﻠﯿﺔ اﻻﻧﺘﻬﺎء ﻓﻲ ﻣﻠﻒ اﻟﺤﺮﻛﺎت
ﺑﺤﯿﺚ إن ﺣﺪث وﻗﻄﻌﺖ اﻟﻜﻬﺮﺑﺎء ﻣﺜﻼ ،ﺳﯿﻘﻮم اﻟﻤﺤﺮك ﺑﻤﻘﺎرﻧﺔ اﻟﻌﻤﻠﯿﺎت ﻓﻲ اﻟﻤﻠﻔﯿﻦ وإﺻﻼح
ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
وﻟﻜﻦ اﻟﻤﻮﺿﻮع ﻻ ﯾﻨﺘﻬﻲ ﻋﻨﺪ ذﻟﻚ اﻟﺤﺪ ،ﻓﺎن ﺗﺴﺘﻄﯿﻊ اﻟﻄﻠﺐ ﻣﻦ ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎن ﯾﻘﻮم
ﺑﺈﻟﻐﺎء ﻛﻞ اﻟﺘﻌﺪﯾﻼت اﻟﺘﻲ ﺣﺪﺛﺖ ﻋﻠﻰ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﻓﺘﺮة ﻣﻌﯿﻨﺔ ،أي آﺧﺮ ﺳﺎﻋﺘﯿﻦ ﻣﺜﻼ ،
وﺳﯿﻘﻮم ﻫﻮ ﺑﺬﻟﻚ ﺑﺎﺳﺘﺨﺪام ﻫﺬا اﻟﻤﻠﻒ ،وﺳﯿﺮﺟﻌﻬﺎ ﻛﻤﺎ ﻛﺎﻧﺖ
أﻧﺎ ﺷﺨﺼﯿﺎ اﺳﺘﻔﺪت ﻣﻦ ﺗﻠﻚ اﻟﻤﻤﯿﺰة ﻛﺜﯿﺮا ،ﻋﻨﺪﻣﺎ وﻇﻔﺖ ﻣﺪﺧﻞ ﺑﯿﺎﻧﺎت ﻓﻲ اﻟﺸﺮﻛﺔ اﻟﺘﻲ اﻋﻤﻞ ﺑﻬﺎ
،ﻓﺄراد أن ﯾﻨﻬﻲ ﻋﻤﻠﻪ ﺳﺮﯾﻌﺎ ،ودﻣﺮ ﺟﺰء ﻛﺒﯿﺮ ﻣﻦ اﻟﺒﯿﺎﻧﺎت ،ﻓﻠﻘﺪ أﻟﻐﯿﺖ ﻛﻞ ﻣﺎ ﻗﺎم ﺑﻪ آﺧﺮ ﺳﺎﻋﺔ
وﻧﺼﻒ ،وذﻟﻚ ﺑﻜﻞ ﺑﺴﺎﻃﺔ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻟﺤﺪود اﻟﻘﺼﻮى ﻟﻤﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
٦٫٥ ﻫﺬه ﻣﻘﺎرﻧﺔ ﺣﺼﻠﺖ ﻋﻠﯿﻬﺎ ﻣﻦ ﻣﻠﻒ اﻟﻤﺴﺎﻋﺪة وﺗﺒﯿﻦ اﻟﺤﺪود اﻟﻘﺼﻮى ﻟﻜﻞ ﻣﻦ اﻟﻨﺴﺨﺔ
SQL 2000 ﻣﻦ اﻟﻨﻈﺎم ﻟﯿﺲ ﻟﺪي ﺑﺎﻟﻮﻗﺖ اﻟﺤﺎﻟﻲ أي ﻣﻘﺎرﻧﺔ ﻣﻊ٧٫٠ واﻟﻨﺴﺨﺔ
Configuration values
Affinity mask
allow updates
backup buffer size
Backup threads
cost threshold for
parallelism
cursor threshold
database size
default language
default sort order id
extended memory size
(MB)
fill factor (%)
free buffers
hash buckets
index create memory
(K)
Language in cache
language neutral fulltext indexing
LE threshold
maximum
LE threshold
minimum
LE threshold percent
lightweight pooling
locks
LogLRU buffers
logwrite sleep (ms)
SQL Server 6.5
Minimum
Maximum
0
2,147483,647
0
1
1
32
0
32
SQL Server 7.0
Minimum
Maximum
0
2,147,483,647
0
1
N/A
N/A
N/A
N/A
N/A
N/A
0
32,767
-1
2
0
0
2,147483,647
10,000
9,999
255
-1
N/A
0
0
2,147,483,647
N/A
9,999
255
N/A
N/A
0
2,147,483,647
0
20
4,999
100
524,288
265,003
0
N/A
N/A
100
N/A
N/A
N/A
N/A
704
1,600,000
3
100
3
100
N/A
N/A
0
1
2
500000
N/A
N/A
2
500000
N/A
N/A
1
N/A
5000
0
-1
100
N/A
2,147,483,647
2,147,483,647
500
N/A
0
5000*
N/A
N/A
N/A
1
2,147,483,647*
N/A
N/A
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
max async IO
max degree of
parallelism
max lazywrite IO
max server memory
(MB)
max text repl size
max worker threads
media retention
memory
min memory per
query (K)
min server memory
(MB)
nested triggers (bytes)
network packet size
open databases
open objects
priority boost
procedure cache
Protection cache size
query governor cost
limit
query wait (s)
RA cache hit limit
RA cache miss limit
RA delay
RA pre-fetches
RA slots-per-thread
RA worker threads
recovery flags
recovery interval
(min)
remote access
remote conn timeout
1
1,024
1
255
N/A
N/A
0
32
1
1,024
N/A
N/A
N/A
N/A
4*
2,147,483,647*
0
10
0
2800
2,147,483,647
1,024
365
1,048,576
0
10
0
N/A
2,147,483,647
1,024
365
N/A
N/A
N/A
512
2,147,483,647
N/A
N/A
0*
2,147,483,647*
0
512
5
100
0
1
1
1
32,767
32,767
2,147,483,647
1
99
8,192
0
4,096
N/A
0*
0
N/A
N/A
1
65,535
N/A
2,147,483,647*
1
N/A
N/A
N/A
N/A
0
2,147,483,647
N/A
1
1
0
1
1
0
0
N/A
255
255
500
1,000
255
255
1
-1
N/A
N/A
N/A
N/A
N/A
N/A
N/A
2,147,483,647
N/A
N/A
N/A
N/A
N/A
N/A
N/A
1
32,767
0
32,767
0
-1
1
32,767
0
N/A
1
N/A
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
remote login timeout
remote proc trans
remote query timeout
remote sites
resource timeout
scan for startup procs
set working set size
show advanced
options
SMP concurrency
sort pages
spin counter
tempdb in RAM (MB)
time slice
Unicode comparison
style
Unicode locale id
0
0
0
0
5
N/A
0
2,147,483,647
1
2,147,483,647
256
2,147,483,647
N/A
1
0
0
0
N/A
5
0
0
2,147,483,647
1
2,147,483,647
N/A
2,147,483,647
1
1
0
1
0
1
-1
64
1
0
50
64
511
2,147,483,647
2,044
1,000
N/A
N/A
1
N/A
50
N/A
N/A
2,147,483,647
N/A
1,000
N/A
N/A
0
2,147,483,647
N/A
N/A
0
2,147,483,647
32,767
user connections
5
32,767
0*
(server)*
user options
0
4,095
0
4,095
* Lower or upper limit for objects allocated dynamically.
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻟﺤﺪود اﻟﻌﻠﯿﺎ
Maximum Capacity Specifications
This table specifies the maximum sizes and numbers of various objects
defined in Microsoft® SQL Server™ databases, or referenced in
Transact-SQL statements.
Object
Batch size
Bytes per short string column
Bytes per text, ntext, or image column
Bytes per GROUP BY, ORDER BY
Bytes per index
Bytes per foreign key
Bytes per primary key
Bytes per row
Bytes in source text of a stored
procedure
Clustered indexes per table
Columns in GROUP BY, ORDER BY
Columns or expressions in a GROUP
BY WITH CUBE or WITH ROLLUP
statement
Columns per index
Columns per foreign key
Maximum sizes/numbers
SQL Server 6.5
SQL Server 7.0
65,536* Network
128 KB
Packet Size
255
8000
2 GB-2
2 GB-2
900
8060
900
900
900
900
900
900
1962
8060
Lesser of batch size
65025
or 250 MB
1
1
Limited only by
16
number of bytes
10
10
16
16
16
16
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
Columns per primary key
Columns per base table
Columns per SELECT statement
Columns per INSERT statement
Connections per client
Database size
Databases per server
Filegroups per database
Files per database
File size (data)
File size (log)
Foreign key table references per table
Identifier length (in characters)
Locks per connection
16
250
4096
250
Max. value of
configured
connections
1 TB
32,767
N/A
32
32 GB
32 GB
16
30
Max. locks per
server
16
1024
4096
1024
Max. value of
configured
connections
1,048,516 TB
32,767
256
32,767
32 TB
4 TB
253
128
Max. locks per server
Locks per server
2,147,483,647
Nested stored procedure levels
Nested subqueries
Nested trigger levels
Nonclustered indexes per table
Objects concurrently open in a
server*
Objects in a database*
Parameters per stored procedure
REFERENCES per table
16
16
16
249
2,147,483,647 (static)
40% of SQL Server
memory (dynamic)
32
32
32
249
2 billion
2,147,483,647
Rows per table
SQL string length (batch size)
Tables per database
2 billion
2,147,483,647
255
1024
31
63
Limited by available Limited by available
storage
storage
128 KB
128* TDS packet size
Limited by number
2 billion
of objects in a
database
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
Tables per SELECT statement
16
256
Limited by number
Triggers per table
3
of objects in a
database
UNIQUE indexes or constraints per
249 nonclustered and
249
table
1 clustered
* Database objects include all tables, views, stored procedures, extended stored
procedures, triggers, rules, defaults, and constraints. The sum of the number of
all these objects in a database cannot exceed 2,147,483,647.
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺗﺮﻛﯿﺐ ﺑﺮﻧﺎﻣﺞ Microsoft SQL Server 2000ﻷول ﻣﺮة
ﺗﺮﻛﯿﺐ ﺑﺮﻧﺎﻣﺞ
Microsoft SQL server 2000
و أﺟﺰاﺋﻪ ﻫﻲ أول اﻟﻌﻤﻠﯿﺎت اﻟﺘﻲ ﯾﺠﺐ أن ﻧﻘﻮم ﺑﻬﺎ ﻗﺒﻞ اﺳﺘﺨﺪاﻣﻪ ،وذﻟﻚ ﻓﻲ ﺣﺎل ﻋﺪم وﺟﻮده ﻓﻲ
ﺟﻬﺎزﻧﺎ ،واﻟﺘﺮﻛﯿﺐ ﻫﻲ ﻋﻤﻠﯿﺔ ﺑﺴﯿﻄﺔ ﻟﻠﻐﺎﯾﺔ ،ﻓﺒﻤﺠﺮد وﺿﻊ اﻟﻘﺮص اﻟﻠﯿﺰر ﻓﻲ ﺟﻬﺎزك ﻓﺴﺘﺸﺘﻐﻞ
ﺷﺎﺷﺔ اﻟﺘﺮﻛﯿﺐ أﺗﻮﻣﺎﺗﯿﻜﯿﺎ وذﻟﻚ ﺑﺈﻋﻄﺎﺋﻚ ﺧﯿﺎرات ﻟﻠﺘﺮﻛﯿﺐ
ﯾﺠﺐ ﻋﻠﯿﻚ أوﻻً أن ﺗﺘﺄﻛﺪ ﻣﻦ إﻣﻜﺎﻧﯿﺔ ﺗﺮﻛﯿﺐ ذﻟﻚ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻠﻰ ﺟﻬﺎزك ،وذﻟﻚ ﺑﺎﺧﺘﯿﺎر اﻟﺨﯿﺎر
اﻷول ﻟﻠﺘﺮﻛﯿﺐ وﻫﻮ ﺗﺮﻛﯿﺐ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﯾﺠﺐ أن ﺗﺴﺒﻖ ﻋﻤﻠﯿﺔ ﺗﺮﻛﯿﺐ
Microsoft SQL Server 2000
ﺑﺎﻟﻨﺴﺒﺔ ﻟﻸﺟﻬﺰة اﻟﻌﺎﻣﻠﺔ ﺑﺄﻧﻈﻤﺔ وﯾﻨﺪوس أﻟﻔﯿﻦ وﻣﺎ ﺑﻌﺪه ،ﻓﺘﺴﺘﻄﯿﻊ أن ﺗﺘﺨﻄﻰ ﺗﻠﻚ اﻟﻤﺮﺣﻠﺔ ﺑﻬﺎ ،
وﺗﺬﻫﺐ إﻟﻰ ﻣﺮﺣﻠﺔ اﻟﺘﺮﻛﯿﺐ اﻟﺮﺋﯿﺴﯿﺔ
أﻣﺎ إن ﻛﺎن اﻟﺠﻬﺎز اﻟﺬي ﺗﺮﻏﺐ ﺑﺘﺮﻛﯿﺐ اﻟﻨﻈﺎم ﻋﻠﯿﻪ ﯾﻌﻤﻞ ﻋﻠﻰ
Windows NT 4
ﻓﻌﻠﯿﻚ أن ﺗﺮﻛﺐ أﺧﺮ ﻧﺴﺨﺔ ﻣﻦ ﻣﺘﺼﻔﺢ اﻹﻧﺘﺮﻧﺖ ﻓﻲ ﺟﻬﺎزك ،وﻏﺎﻟﺒﺎً ﻣﺎ ﺗﺮﻓﻖ ﺗﻠﻚ اﻟﻨﺴﺨﺔ ﻣﻊ
ﻗﺮص اﻟﻠﯿﺰر
أﻣﺎ إن ﻛﺎن ﺟﻬﺎزك ﯾﻌﻤﻞ ب وﯾﻨﺪوس ﺧﻤﺴﺔ وﺗﺴﻌﻮن ،ﻓﺄﻧﺖ ﺑﺤﺎﺟﺔ إﻟﻰ ﺗﺮﻛﯿﺐ ﺑﻌﺾ اﻟﺒﺮﻣﺠﯿﺎت
اﻹﺿﺎﻓﯿﺔ واﻟﺘﻲ ﺳﯿﻌﺮﺿﻬﺎ اﻟﻨﻈﺎم ﻋﻠﯿﻚ ،وﻻ أﻋﺘﻘﺪ ﺑﺎن ﻣﺴﺘﺨﺪﻣﻲ وﯾﻨﺪوس ﺛﻤﺎﻧﯿﺔ وﺗﺴﻌﻮن
ﺳﯿﺤﺘﺎﺟﻮا إﻟﻰ ﺗﺮﻛﯿﺐ أﯾﺔ ﺷﻲء إﺿﺎﻓﻲ ،وﻟﻜﻦ ﯾﻔﻀﻞ اﻟﻤﺮور ﻋﻠﻰ ذﻟﻚ اﻟﺨﯿﺎر واﻟﻔﺤﺺ
وﻋﻨﺪ اﻟﺘﺄﻛﺪ ﺑﺎن ﺟﻬﺎزك ﻣﺴﺘﻌﺪ ﻻﺳﺘﻘﺒﺎل أل
SQL Server
ﺗﺴﺘﻄﯿﻊ ﻋﻨﺪﻫﺎ اﻟﺬﻫﺎب إﻟﻰ اﻟﺸﺎﺷﺔ اﻟﺜﺎﻧﯿﺔ ﻓﻲ ﺑﺮﻧﺎﻣﺞ اﻟﺘﺮﻛﯿﺐ وﺗﺤﺘﻮي ﻋﻠﻰ ﻣﺎ ﯾﻠﻲ
Database Server – Standard Edition
وﻫﻮ اﻟﻨﻈﺎم اﻟﻜﺎﻣﻞ وﻣﺨﺼﺺ ﻟﻠﺘﺮﻛﯿﺐ ﻋﻠﻰ اﻷﺟﻬﺰة اﻟﻤﺮﻛﺰﯾﺔ ﻓﻘﻂ ،أي اﻧﻚ ﺗﺴﺘﻄﯿﻊ ﺗﺮﻛﯿﺒﻪ ﻋﻠﻰ
Microsoft Windows 2000 Server or Advance Server
أو
Microsoft Windows 2003 server
وﺗﺤﺘﻮي ﺗﻠﻚ اﻟﻨﺴﺨﺔ ﻋﻠﻰ ﻛﺎﻓﺔ اﻟﻤﻤﯿﺰات وﻫﻲ أﺳﺮع ﻣﻦ اﻟﻨﺴﺦ اﻟﺴﺎﺑﻘﺔ وﯾﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻣﻦ
ﻋﺪد ﻏﯿﺮ ﻣﺤﺪود ﻣﻦ اﻟﻤﺴﺘﺨﺪﻣﯿﻦ ﻋﻠﻰ اﻟﺸﺒﻜﺔ
)اﻟﻌﺪد اﻟﺬي ﻟﺪﯾﻚ ﺗﺮﺧﯿﺺ ﻣﻦ اﺟﻠﻪ(
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
Database Server – Desktop Edition
ﻧﺴﺨﺔ ﻟﻸﺟﻬﺰة اﻟﻌﺎدﯾﺔ وﺗﺴﺘﺨﺪم ﻣﻦ اﻟﻤﺒﺮﻣﺠﯿﻦ ﻏﺎﻟﺒﺎً وﺗﺤﺘﻮي ﻋﻠﻰ ﻛﻞ اﻟﻤﻤﯿﺰات وﻟﻜﻦ
اﺳﺘﺨﺪاﻣﻬﺎ ﻋﻠﻰ اﻟﺸﺒﻜﺔ ﻣﺤﺪود ،ﻓﺒﻌﺾ اﻟﻨﺴﺦ ﺗﺴﻤﺢ ﺑﺨﻤﺴﺔ ﻣﺴﺘﺨﺪﻣﯿﻦ وﺑﻌﻀﻬﺎ ﺑﻤﺴﺘﺨﺪﻣﯿﻦ
وﺑﻌﻀﻬﺎ ﻻ ﯾﺴﻤﺢ ،ﺣﯿﺚ ﯾﺠﺐ ﻣﺮاﺟﻌﻪ اﻷوراق اﻟﺨﺎﺻﺔ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﻌﺮﻓﺔ ﻋﺪد اﻟﻤﺴﺘﺨﺪﻣﯿﻦ
اﻷﻗﺼﻰ
ﻛﻤﺎ ﺗﻔﺘﻘﺮ ﺗﻠﻚ اﻟﻨﺴﺨﺔ ﻟﺒﻌﺾ اﻟﻤﻤﯿﺰات اﻟﺒﺴﯿﻄﺔ واﻟﻤﺘﻘﺪﻣﺔ ﻣﺜﻞ ﻣﻤﯿﺰة
Full text search
وﺑﻌﻀﻬﺎ ﻻ ﯾﺤﺘﻮي ﻋﻠﻰ أل
Replication
وﺑﻌﻀﻬﺎ ﯾﺤﺘﻮي ﻋﻠﯿﻪ
SQL Server 2000 OLAP Services
وﻫﻮ ﻧﻈﺎم اﻟﺘﺤﻠﯿﻞ اﻟﻤﺘﻘﺪم اﻟﻤﺮﻓﻖ ﻣﻊ اﻟﻨﻈﺎم ،أﻧﺎ اﺳﻤﯿﻪ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﺜﻼﺛﯿﺔ اﻷﺑﻌﺎد ،أو
اﻟﻤﺠﺴﻤﺔ ،ﻓﻬﻮ ﯾﺠﻤﻊ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺠﺪاول ﻣﻦ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت وﯾﻌﺮﺿﻬﺎ ﻋﻠﻰ ﺷﻜﻞ ﻣﻜﻌﺐ ،ﺑﺪﻻً
ﻣﻦ ﺷﻜﻞ اﻟﺠﺪول اﻟﺬي اﻋﺘﺪﻧﺎ ﻋﻠﯿﻪ
English Query
وﯾﺴﻤﺢ ذﻟﻚ اﻟﺒﺮﻧﺎﻣﺞ ﻟﻚ ﺑﺈﻣﻜﺎﻧﯿﺔ ﺗﻮﺟﯿﻪ أواﻣﺮ ﺑﻠﻐﺔ إﻧﺠﻠﯿﺰﯾﺔ ﺑﺴﯿﻄﺔ إﻟﻰ ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،
ﺑﺪﻻ ﻣﻦ اﺳﺘﺨﺪام ﻟﻐﺔ
SQL
وﯾﻤﻜﻦ اﺳﺘﺨﺪاﻣﻪ ﻣﺒﺎﺷﺮةً ،أو ﻣﻤﻜﻦ أن ﺗﺪﻣﺠﻪ ﻓﻲ ﺑﺮاﻣﺠﻚ أو ﻓﻲ ﺻﻔﺤﺎت اﻹﻧﺘﺮﻧﺖ اﻟﺨﺎﺻﺔ ﺑﻚ
ﺗﺮﻛﯿﺐ
Database Server – Desktop Edition
ﻻ ﺗﺨﺘﻠﻒ ﻃﺮﯾﻘﺔ ﺗﺮﻛﯿﺐ اﻟﻨﻈﺎﻣﯿﻦ اﻟﺴﺎﺑﻘﯿﻦ ﻋﻦ ﺑﻌﺾ ،ﻛﻤﺎ ﻟﻦ اﻣﺸﻲ ﻣﻌﻚ ﺧﻄﻮة ﺑﺨﻄﻮة ﻓﻲ
ﻋﻤﻠﯿﺔ اﻟﺘﺮﻛﯿﺐ ،ﻷﻧﻬﺎ ﻋﻤﻠﯿﺔ ﺗﺮﻛﯿﺐ ﻋﺎدﯾﺔ ،وﻟﻜﻨﻨﻲ أرﯾﺪ أن أﻟﻔﺖ اﻧﺘﺒﺎﻫﻚ إﻟﻲ ﺑﻌﺾ اﻟﻨﻘﺎط أﺛﻨﺎء
اﻟﺘﺮﻛﯿﺐ
ﻫﻨﺎك ﻃﺮﯾﻘﺘﯿﻦ ﻟﻠﺘﺮﻛﯿﺐ وﻫﻤﺎ ﺗﺮﻛﯿﺐ ﻣﺤﻠﻲ وﺗﺮﻛﯿﺐ ﻋﻠﻰ ﺟﻬﺎز أﺧﺮ ﻋﻦ ﻃﺮﯾﻖ اﻟﺸﺒﻜﺔ وﻫﻤﺎ
Local or Remote Installation
وﻓﻲ ﻣﻌﻈﻢ اﻷﺣﯿﺎن ﻧﻘﻮم ﺑﺘﺮﻛﯿﺒﻪ ﻓﻲ ﺟﻬﺎزﻧﺎ ،وﻟﻜﻦ إن ﻗﺮرﻧﺎ ﺗﺮﻛﯿﺒﻪ ﻓﻲ ﺟﻬﺎز آﺧﺮ ﻋﻦ ﻃﺮﯾﻖ
ﺟﻬﺎزﻧﺎ ،ﻓﯿﺠﺐ أن ﯾﻜﻮن ذﻟﻚ اﻟﺠﻬﺎز ﻣﻠﻘﻢ ﺷﺒﻜﺔ ،وﯾﺠﺐ أن ﺗﻜﻮن ﻟﺪﯾﻨﺎ ﺻﻼﺣﯿﺎت ﻣﺪﯾﺮ ﻋﻠﯿﻪ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻛﻜﻞ اﻟﺒﺮاﻣﺞ اﻷﺧﺮى ﺳﯿﻄﻠﺐ ﻣﻨﻚ إدﺧﺎل اﻻﺳﻢ واﺳﻢ اﻟﺸﺮﻛﺔ ورﻗﻢ اﻟﻨﺴﺨﺔ
ﻫﻨﺎك ﺛﻼﺛﺔ ﺧﯿﺎرات ﻟﻠﺘﺮﻛﯿﺐ
Typical
ﺗﺮﻛﺐ ﻣﻌﻈﻢ اﻟﺨﯿﺎرات اﻟﻤﺨﺼﺼﺔ ﻟﻜﻞ اﻟﻤﺴﺘﺨﺪﻣﯿﻦ وﻟﻜﻦ ﻻ ﺗﺮﻛﺐ ﻛﻞ أﺟﺰاء اﻟﺒﺮﻧﺎﻣﺞ
Minimum
ﺗﺮﻛﺐ اﻟﺒﺮﻣﺠﯿﺎت اﻷوﻟﯿﺔ اﻟﻤﺴﺌﻮﻟﺔ ﻋﻦ ﺗﺸﻐﯿﻞ أل
SQL Server
وﻫﻲ ﻓﻲ ﻣﻌﻈﻢ اﻷﺣﯿﺎن ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت وﺑﻌﺾ اﻟﻤﻠﻔﺎت اﻟﺨﺎﺻﺔ ﺑﻪ ﻓﻘﻂ
ﻣﻼﺣﻈﺔ :ﻻ ﺗﺮﻛﺐ اﻟﻜﺘﺐ وﺑﺮاﻣﺞ اﻹدارة
Custom
أﻧﺖ ﺣﺮ ﺑﺎﺧﺘﯿﺎر ﻣﺎ ﯾﺮﻛﺐ ﻣﻦ إﺿﺎﻓﺎت ﻋﻠﻰ ﺟﻬﺎزك
ﺳﯿﻄﻠﺐ ﻣﻨﻚ اﻟﻨﻈﺎم ﺗﺤﺪﯾﺪ أﻣﺎﻛﻦ اﻟﻤﻠﻔﺎت ،ﻣﻜﺎن ﺗﺨﺰﯾﻦ اﻟﺒﺮاﻣﺞ وﻣﻜﺎن ﺗﺨﺰﯾﻦ اﻟﺒﯿﺎﻧﺎت ،ﯾﻔﻀﻞ
أن ﺗﺨﺰن اﻟﺒﯿﺎﻧﺎت ﻓﻲ أﻗﺮاص ﺻﻠﺒﺔ ﺳﺮﯾﻌﺔ
ﻟﻐﺔ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
ﻛﻦ ﺣﺮﯾﺺ ﻫﻨﺎ ،ﻓﺄﻧﺖ ﺗﺨﺘﺎرﻫﺎ ﻟﻤﺮة واﺣﺪة ﻓﻘﻂ وﻣﻦ ﺛﻢ ﻻ ﺗﺴﺘﻄﯿﻊ ﺗﻐﯿﺮ ذﻟﻚ اﻟﺨﯿﺎر اﺑﺪأ ،ﯾﻄﻠﺐ
ﻣﻨﻚ اﻟﻨﻈﺎم ﻟﻮﺣﺔ اﻟﻤﺤﺎرف اﻟﺘﻲ ﺳﯿﺨﺰن ﻋﻦ ﻃﺮﯾﻘﻬﺎ اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﺠﻬﺎز ،ﻛﻤﺎ ﻫﻨﺎك ﺑﻌﺾ
اﻟﺨﯿﺎرات اﻷﺧﺮى اﻟﺘﻲ ﻻ اﻧﺼﺢ اﻟﻤﺒﺘﺪﺋﯿﻦ ﺑﺘﻌﺪﯾﻠﻬﺎ
أن ﻛﻨﺖ ﺗﺮﻏﺐ ﺑﺎﻟﻜﺘﺎﺑﺔ ﺑﺎﻟﻌﺮﺑﯿﺔ ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﺨﺎﺻﺔ ﺑﻚ ،ﻓﺄﻓﻀﻞ ﺷﻲء أن ﺗﺨﺘﺎر ﻟﻮﺣﺔ
اﻟﻤﺤﺎرف
)Multilingual (850
ﻓﻲ اﻟﻘﺎﺋﻤﺔ اﻟﻌﻠﯿﺎ و
Unicode
ﻓﻲ اﻟﻘﺎﺋﻤﺔ اﻟﺴﻔﻠﻰ ،وﺑﺬﻟﻚ ﺳﺘﻀﻤﻦ ﻋﻤﻞ ﺑﺮاﻣﺠﻚ ﺑﺪون ﻣﺸﺎﻛﻞ ﻣﻊ اﻟﻠﻐﺔ اﻟﻌﺮﺑﯿﺔ
ﺻﺮاﺣﺔً ﯾﻤﻜﻦ اﻟﻜﺘﺎﺑﺔ ﺑﺎﻟﻠﻐﺔ اﻟﻌﺮﺑﯿﺔ ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺣﺘﻰ وﻟﻮ اﻧﻚ ﻟﻢ ﺗﺨﺘﺎر ﺗﻠﻚ اﻟﺨﯿﺎرات ،
وﻟﻜﻨﻚ ﺳﺘﻮاﺟﻪ اﻟﻜﺜﯿﺮ ﻣﻦ اﻟﻤﺸﺎﻛﻞ ﻣﻊ ﺑﻌﺾ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺳﺘﻌﻤﻞ ﻣﻊ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺗﻠﻚ
ﺳﯿﻄﻠﺐ ﻣﻨﻚ اﻟﻨﻈﺎم أن ﺗﺤﺪد اﺳﻢ ﻣﺴﺘﺨﺪم وﻛﻠﻤﺔ ﺳﺮ ﺧﺎﺻﺔ ﺑﻪ ،أن ﻛﻨﺖ ﺗﺮﻏﺐ ﺑﻤﺮاﻗﺒﺔ ﻗﺎﻋﺪة
اﻟﺒﯿﺎﻧﺎت واﻟﻤﻠﻔﺎت اﻟﺘﻲ ﺗﺼﻞ إﻟﯿﻬﺎ ،ﻓﺘﺴﺘﻄﯿﻊ أن ﺗﺼﻨﻊ ﻟﻬﺎ اﺳﻢ ﻣﺴﺘﺨﺪم ﺑﺼﻼﺣﯿﺎت ﻣﺪﯾﺮ وﻛﻠﻤﺔ
ﺳﺮ ،وﺗﻌﺮﻓﻬﻢ ﻓﻲ ﺷﺎﺷﺔ اﻟﺘﺮﻛﯿﺐ ،وﺑﺬﻟﻚ ﺳﯿﻌﺎﻣﻞ اﻟﻨﻈﺎم ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻛﻤﺴﺘﺨﺪم ﻣﻨﻔﺼﻞ
،أﻣﺎ إن ﻛﺎن ﻧﻈﺎم ﻣﺮاﻗﺒﺔ اﻟﺸﺒﻜﺔ ﻟﺪﯾﻚ ﻻ ﯾﺘﻄﻠﺐ اﻟﺘﻌﻘﯿﺪ اﻟﺴﺎﺑﻖ ،ﻓﺘﺴﺘﻄﯿﻊ اﻻﺧﺘﯿﺎر ﺑﺎن ﺗﻌﻤﻞ
ﻛﺠﺰء ﻣﻦ اﻟﻨﻈﺎم
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻫﺬه أﻫﻢ ﻧﻘﺎط ﻋﻤﻠﯿﺔ اﻟﺘﺮﻛﯿﺐ
أﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺒﺮﻧﺎﻣﺠﯿﻦ اﻵﺧﺮﯾﻦ ،ﻓﺘﺮﻛﯿﺒﻬﻤﺎ ﻻ ﯾﺘﻄﻠﺐ أﯾﺔ ﺗﻌﻘﯿﺪات ﻋﻠﻰ اﻹﻃﻼق
ﺑﻌﺪ اﻻﻧﺘﻬﺎء ﻣﻦ ﻋﻤﻠﯿﺔ اﻟﺘﺮﻛﯿﺐ وإﻋﺎدة ﺗﺸﻐﯿﻞ اﻟﺠﻬﺎز ،أﻧﺼﺤﻚ ﺑﺰﯾﺎرة إﻧﺘﺮﻧﺖ و إﻧﺰال آﺧﺮ
ﺑﺮاﻣﺞ إﺻﻼح أل
Microsoft SQL Server 2000
أﺧﺮ ﻧﺴﺨﺔ ﺗﺼﻠﯿﺢ ﻣﺘﻮﻓﺮة ﻫﻲ
Service Pack 2
ﺣﯿﺚ ﺳﺘﺴﺎﻋﺪك ﺗﻠﻚ اﻟﺒﺮاﻣﺞ ﻓﻲ إﺻﻼح اﻟﻌﺪﯾﺪ ﻣﻦ اﻟﻤﺸﺎﻛﻞ ﻓﻲ ذﻟﻚ اﻟﺒﺮﻧﺎﻣﺞ
وﻟﻜﻦ ﻗﺒﻞ أن ﺗﻘﻮم ﺑﺬﻟﻚ ﯾﺠﺐ أن ﺗﺘﺄﻛﺪ ﻣﻦ رﻗﻢ اﻟﻨﺴﺨﺔ اﻟﺨﺎﺻﺔ ﺑﻚ ورﻗﻢ آﺧﺮ ﺗﻌﺪﯾﻞ ﻓﻲ إﻧﺘﺮﻧﺖ ،
ﺣﯿﺚ ﺗﻘﻮم ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ داﺋﻤﺎ ﺑﺪﻣﺞ ﺗﻠﻚ اﻟﺘﻌﺪﯾﻼت ﻓﻲ ﻧﺴﺨﺔ اﻟﺘﺮﻛﯿﺐ اﻟﺮﺋﯿﺴﯿﺔ
واﻟﺘﺄﻛﺪ ﻣﻦ ذﻟﻚ اﻟﺮﻗﻢ ﻋﻠﯿﻚ اﻟﺬﻫﺎب إﻟﻰ اﻟﻘﺎﺋﻤﺔ
Help -> About
وﺗﻨﻈﺮ رﻗﻢ أل
Service Pack
اﻟﺘﻲ ﺑﻬﺎ ،وان ﻟﻢ ﯾﻮﺟﺪ ،أو ﻛﺎن اﻟﺮﻗﻢ اﻗﻞ ﻣﻦ اﻟﺮﻗﻢ اﻟﻤﻮﺟﻮد ﻓﻲ إﻧﺘﺮﻧﺖ ،ﻓﻌﻠﯿﻢ إﻧﺰال اﻟﻨﺴﺨﺔ
ﻣﻦ إﻧﺘﺮﻧﺖ
إدارة Microsoft SQL Server 2000ﻋﻦ ﻃﺮﯾﻖ أل Enterprise Manager
اﻋﺘﻘﺪ ﺑﺄﻧﻪ ﺣﺎن اﻟﻮﻗﺖ ﻟﻠﻘﯿﺎم ﺑﺄول ﺗﺸﻐﯿﻞ ﻟﻞ
SQL Server 2000
ﻟﻠﻘﯿﺎم ﺑﺬﻟﻚ اذﻫﺐ إﻟﻰ
Start -> Programs -> Microsoft SQL server 2000 -> Enterprise
Manager
وﺳﺘﻈﻬﺮ ﻟﻚ اﻟﺸﺎﺷﺔ اﻟﺘﺎﻟﯿﺔ
وﻫﻲ ﻋﺒﺎرة ﻋﻦ ﺑﺮﻧﺎﻣﺞ اﻟﺘﺤﻜﻢ اﻟﺮﺋﯿﺴﻲ ﺑﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ،وﻋﻦ ﻃﺮﯾﻘﺔ ﺗﺴﺘﻄﯿﻊ أن
ﺗﺘﺤﻜﻢ ﺑﻜﻞ اﻷﺟﻬﺰة اﻟﻤﺮﻛﺰﯾﺔ اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ
SQL Server 2000
وذﻟﻚ إن ﻛﺎﻧﺖ ﻫﻨﺎك أﺟﻬﺰة أﺧﺮى ﻏﯿﺮ ﺟﻬﺎز ﻓﻲ اﻟﺸﺒﻜﺔ
ﺳﯿﻼﺣﻆ اﻟﻌﺪﯾﺪ ﺑﺎن ذﻟﻚ اﻟﺒﺮﻧﺎﻣﺞ ﻣﺸﺎﺑﻪ ﻓﻲ ﻃﺮﯾﻘﺔ ﻋﻤﻠﻪ ﻟﻠﻌﺪﯾﺪ ﻣﻦ ﺑﺮاﻣﺞ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ اﻷﺧﺮى
اﻟﻤﺨﺼﺼﺔ ﻟﻠﺸﺒﻜﺎت ،ﻧﻌﻢ ذﻟﻚ ﺻﺤﯿﺢ ،ﻓﻠﻘﺪ ﺑﻨﻲ ﺑﺮﻧﺎﻣﺞ اﻹدارة ﻟﯿﻌﻤﻞ ﺑﺪاﺧﻞ ﻧﻈﺎم
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
)Microsoft Management Console (MMC
وﻫﻨﺎك اﻟﻌﺪﯾﺪ ﻣﻦ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺗﻌﻤﻞ ﺗﺤﺖ ذﻟﻚ اﻟﻨﻈﺎم اﻟﯿﻮم ،وﻣﻦ أﻫﻢ ﻣﻤﯿﺰات ذﻟﻚ اﻟﻨﻈﺎم اﻧﻪ
ﯾﻤﻜﻨﻨﺎ ﺑﺪﻣﺞ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺒﺮاﻣﺞ ﻣﻌﺎ ﻣﺜﻞ دﻣﺞ ﺑﺮﻧﺎﻣﺠﻲ
Sql Server 2000
و
Transaction Server
ﻣﺜﻼ
وﻟﺬﻟﻚ ﺳﺘﺠﺪوا ﺑﺎن اﻟﻘﺎﺋﻤﺔ اﻟﺮﺋﯿﺴﯿﺔ ﻟﺒﺮﻧﺎﻣﺞ اﻹدارة ﻻ ﻋﻼﻗﺔ ﻟﻬﺎ ﺑﺎل
SQL Server
وﻟﻜﻨﻬﺎ ﻣﺨﺼﺼﺔ ﻹﻏﻼق اﻟﺒﺮﻧﺎﻣﺞ وﻟﻠﺘﺤﺮك ﺑﯿﻦ ﺑﺮاﻣﺞ اﻹدارة اﻟﻤﺨﺘﻠﻔﺔ وﻟﻠﺤﺼﻮل ﻋﻠﻰ اﻟﻤﺴﺎﻋﺪة
ﺣﻮل ﺑﺮﻧﺎﻣﺞ اﻹدارة وﻟﯿﺲ ﺣﻮل ال
SQL Server 2000
وﺳﻨﺘﺤﺪث ﻋﻦ دﻣﺞ اﻟﺒﺮاﻣﺞ ﻣﻊ ﺑﻌﻀﻬﺎ اﻟﺒﻌﺾ وإدارﺗﻬﺎ ﻋﻦ ﻃﺮﯾﻖ ﻧﻈﺎم ﻣﻮﺣﺪ ﻓﻲ أﺟﺰاء ﻗﺎدﻣﺔ
ﻣﻦ رﺳﺎﺋﻠﻨﺎ
أﻣﺎ اﻟﻘﺎﺋﻤﺔ اﻟﺜﺎﻧﯿﺔ ﻓﻬﻲ اﻟﺨﺎﺻﺔ ﺑﺈدارة ﻧﻈﺎﻣﻨﺎ
وﺗﻠﻚ اﻟﻘﺎﺋﻤﺔ دﯾﻨﺎﻣﯿﻜﯿﺔ ،أي أن ﻣﺤﺘﻮﯾﺎﺗﻬﺎ ﺗﺘﻐﯿﺮ ﺣﺴﺐ اﻟﻌﻤﻞ اﻟﺬي ﻧﻘﻮم ﺑﻪ ﺑﺪاﺧﻞ ال
SQL Server
وذﻟﻚ ﯾﺘﻌﻠﻖ ﻛﺜﯿﺮا ﺑﺄول ﻗﺎﺋﻤﺔ وﻫﻲ
Action
ﻓﻬﻲ اﻷﻛﺜﺮ ﺗﻐﯿﺮا
أﻣﺎ ﺑﺎﻟﻨﺴﺒﺔ ﻟﻘﺎﺋﻤﺔ
Tools
ﻓﻬﻲ ﺛﺎﺑﺘﺔ وﺗﺤﺘﻮي ﻋﻠﻰ ﺑﻌﺾ اﻟﻌﻤﻠﯿﺎت اﻟﻤﻬﻤﺔ واﻟﻤﺨﺼﺼﺔ ﻟﺪﻋﻢ اﻟﻨﻈﺎم
ﯾﺘﻜﻮن ﺑﺮﻧﺎﻣﺞ اﻹدارة ﻛﻤﺎ ﻻﺣﻈﻨﺎ ﻓﻲ اﻟﺮﺳﻤﺔ اﻟﺴﺎﺑﻘﺔ ﻣﻦ ﺷﺠﺮة ﻛﺎﺋﻨﺎت و ﺧﺼﺎﺋﺺ ﺗﻠﻚ اﻟﻜﺎﺋﻨﺎت
،وﺗﻠﻚ اﻟﺸﺠﺮة ﻣﻘﺴﻤﺔ ﺑﻄﺮﯾﻘﺔ ﻣﻨﻄﻘﯿﺔ ﻟﻠﻐﺎﯾﺔ ،ﻓﺘﺮى أﻋﻼﻫﺎ
Microsoft SQL Servers
ﺣﯿﺚ ﺗﻮﺟﺪ ﺗﺤﺘﻬﺎ ﻣﺠﻤﻮﻋﺎت اﻷﺟﻬﺰة اﻟﻤﺮﻛﺰﯾﺔ وذﻟﻚ إن ﻛﺎن ﻟﺪﯾﻨﺎ اﻟﻌﺪﯾﺪ ﻣﻦ اﻷﺟﻬﺰة اﻟﻤﺮﻛﺰﯾﺔ ،
ﻛﻤﺎ ﺗﻮﺟﺪ ﻓﻲ ﻛﻞ ﻣﺠﻤﻮﻋﺔ اﻷﺟﻬﺰة اﻟﻤﺮﻛﺰﯾﺔ اﻟﺘﻲ ﺑﻬﺎ
وﻓﻲ ﻣﺜﺎﻟﻨﺎ اﻟﺴﺎﺑﻖ ﻫﻨﺎك ﻣﺠﻤﻮﻋﺔ واﺣﺪة وﺟﻬﺎز ﻣﺮﻛﺰي واﺣﺪ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
وﯾﺤﺘﻮي ﻛﻞ ﺟﻬﺎز ﻣﺮﻛﺰي ﻋﻠﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻜﺎﺋﻨﺎت ﻣﻘﺴﻢ ﺗﺤﺖ أرﺑﻌﺔ ﻓﺮوع رﺋﯿﺴﯿﺔ وﻫﻤﺎ
Databases
|_ master
|_ model
|_ tempdb
|_ …
Data Transformation Services
|_ Local Packages
|_ Repository Packages
|_ Metadata
Management
|_ SQL Server Agent
|_ Backup
|_ Current Activity
|_ Database Maintenance Planes
|_ SQL Server Logs
|_ Web Publishing
Security
|_ Logins
|_ Server Roles
|_ Linked Servers
|_ Remote Servers
Support Services
|_ Distributed Transaction Coordinator
|_ SQL Mail
ﻛﻤﺎ اﻧﻪ ﻗﺪ ﯾﺤﺘﻮي ﻋﻠﻰ، وﯾﺤﺘﻮي ﻛﻞ ﻛﺎﺋﻦ ﻣﻦ ﺗﻠﻚ اﻟﻜﺎﺋﻨﺎت ﺧﺼﺎﺋﺺ أو ﻋﻤﻠﯿﺎت ﻣﻤﻜﻨﺔ ﻋﻠﯿﻪ
ﻛﺎﺋﻨﺎت ﻓﺮﻋﯿﻪ ﺗﺤﺘﻪ
وذﻟﻚ، وﺳﺄﺗﻄﺮق ﻓﻲ ﺷﺮﺣﻲ ﻫﺬا ﻋﻦ ﻧﺒﺬة ﺑﺴﯿﻄﺔ ﻋﻦ ﻛﻞ ﻣﺠﻤﻮﻋﺔ وﻋﻦ اﻟﻜﺎﺋﻨﺎت اﻟﺘﻲ ﺗﺤﺘﻮﯾﻬﺎ
ﻟﺘﺴﻬﯿﻞ ﻓﻬﻢ اﻟﻨﻈﺎم ﻋﻨﺪ اﻟﺸﺮح اﻟﻤﺘﻘﺪم
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻟﻔﺮع اﻷولDatabases :
وﯾﺤﺘﻮي ﻋﻠﻰ ﺟﻤﯿﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺨﺰﻧﺔ ﻓﻲ اﻟﺠﻬﺎز اﻟﻤﺮﻛﺰي ،وﻟﻜﻨﻪ ﯾﺤﺘﻮي أﯾﻀﺎ ﻋﻠﻰ ﺛﻼث
ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت ﻣﻬﻤﺔ وأﺳﺎﺳﯿﺔ وﻻ ﯾﺴﺘﻄﯿﻊ اﻟﻨﻈﺎم ﺑﺪوﻧﻬﺎ اﻟﻘﯿﺎم ﺑﺄﯾﺔ ﺷﻲء ،ﻛﻤﺎ أن ﺿﯿﺎع اﺣﺪﻫﻢ
ﻗﺪ ﯾﻌﻄﻞ اﻟﻨﻈﺎم
Databases
|_ master
وﻫﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺗﺨﺰن ﺑﻬﺎ ﻛﻞ اﻟﻤﻌﻠﻮﻣﺎت ﻋﻦ اﻟﻨﻈﺎم وﻋﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻷﺧﺮى و
ﺿﯿﺎع ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺗﻠﻚ ﯾﺆدي إﻟﻰ ﺿﯿﺎع اﻟﻨﻈﺎم ﺑﺄﻛﻤﻠﻪ ،وﻟﺬﻟﻚ ﻋﻠﯿﻨﺎ اﻟﻤﺤﺎﻓﻈﺔ ﻋﻠﯿﻬﺎ وﻧﺴﺨﻬﺎ
اﺣﺘﯿﺎﻃﯿﺎ ﺑﺎﻧﺘﻈﺎم
Databases
|_ model
ﺗﺤﺘﻮي ﻋﻠﻰ اﻟﺸﻜﻞ اﻷول ﻟﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﺠﺪﯾﺪة اﻟﺘﻲ ﺳﻨﺼﻨﻌﻬﺎ ،ﻓﻠﻮ ﻛﺎن ﻟﺪﯾﻨﺎ ﻣﻮاﺻﻔﺎت
ﻗﯿﺎﺳﯿﺔ ﻓﻲ اﻟﻤﺆﺳﺴﺔ اﻟﺘﻲ ﻧﻌﻤﻞ ﺑﻬﺎ ،وﺗﻄﻠﺒﺖ ﺗﻠﻚ اﻟﻤﻮاﺻﻔﺎت ﺑﺎن ﺗﺤﺘﻮي ﻛﻞ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺟﺪﯾﺪة
ﻧﺼﻨﻌﻬﺎ ﻋﻠﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻌﯿﻨﺔ ﻣﻦ اﻟﻜﺎﺋﻨﺎت ،ﻓﻨﺴﺘﻄﯿﻊ وﺿﻌﻬﻢ ﻫﻨﺎ ،وﻋﻨﺪ ﺻﻨﺎﻋﺔ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت
ﺟﺪﯾﺪة ﺳﺘﻨﺘﻘﻞ ﺗﻠﻚ اﻟﻜﺎﺋﻨﺎت إﻟﯿﻬﺎ
Databases
|_ tempdb
وﻫﻲ اﻟﻤﺨﺰن اﻟﻤﺆﻗﺖ ﻟﺒﯿﺎﻧﺎت
SQL Server
ﻓﻠﻮ ﻃﻠﺒﻨﺎ ﻣﻬﻤﺔ ﻣﻌﻘﺪة ﺳﯿﻘﻮم اﻟﻨﻈﺎم ﺑﺘﺨﺰﯾﻦ اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺳﯿﻌﻤﻞ ﻋﻠﯿﻬﺎ ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺗﻠﻚ ،
وﺳﯿﺠﺮى ﻣﺎ ﻃﻠﺐ ﻣﻨﻪ ،وﺑﻌﺪ ذﻟﻚ ﺳﯿﻌﻄﯿﻨﺎ اﻟﻨﺘﺎﺋﺞ وﺳﯿﺤﺬف اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺗﻠﻚ
اﻟﻔﺮع اﻟﺜﺎﻧﻲ:
Data Transformation Services
|_ Local Packages
|_ Repository Packages
|_ Metadata
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
وﯾﺤﺘﻮى ﻋﻠﻰ اﻟﻜﺎﺋﻨﺎت اﻟﻤﺴﺆﻟﺔ ﻋﻦ ﺗﺒﺎدل اﻟﺒﯿﺎﻧﺎت ﺑﯿﻦ اﻷﺟﻬﺰة اﻟﻤﺮﻛﺰﯾﺔ ،وذﻟﻚ ﻟﺘﻮﺣﯿﺪ إدارة
اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﻤﺆﺳﺴﺎت اﻟﻀﺨﻤﺔ
وﺑﻄﺒﯿﻌﺘﻬﺎ ﺗﺤﺘﻮي ﻋﻠﻰ ﺛﻼﺛﺔ أﻧﻮاع ﻣﻦ اﻟﺮزم و ﻫﻲ اﻟﺠﺰء اﻷﺳﺎﺳﻲ ﻓﻲ ﻧﻈﺎم ﺗﺒﺎدل اﻟﺒﯿﺎﻧﺎت ،
ﺣﯿﺚ ﺗﺤﺘﻮي ﻛﻞ رزﻣﺔ ﻋﻠﻰ ﻣﺨﻄﻂ ﺗﺒﺎدل ﻟﻠﺒﯿﺎﻧﺎت ،ﺣﯿﺚ ﯾﺠﺐ أن ﯾﺘﻢ ﺗﺒﺎدل اﻟﺒﯿﺎﻧﺎت ﻋﻦ ﻃﺮﯾﻖ
ذﻟﻚ اﻟﻤﺨﻄﻂ ،ﺳﻨﻘﻮم ﺑﺸﺮح ذﻟﻚ ﻣﻔﺼﻼ ﻓﻲ اﻷﺟﺰاء اﻟﻤﺘﻘﺪﻣﺔ ﻣﻦ رﺳﺎﺋﻠﻨﺎ وذﻟﻚ ﻷﻧﻨﺎ ﺳﻨﺴﺘﺨﺪم
ﻟﻐﺔ اﻟﻔﯿﺠﻮال ﺑﯿﺴﻚ ﻟﺘﻜﻮﯾﻦ ﺗﻠﻚ اﻟﺮزم
اﻟﻔﺮع اﻟﺜﺎﻟﺚ :اﻹدارة
Management
ﯾﺤﺘﻮي ذﻟﻚ اﻟﻔﺮع ﻋﻦ ﻛﻞ ﻣﺎ ﯾﺨﺺ إدارة ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ ﺑﺼﻔﺔ ﻋﺎﻣﺔ
Management
|_ SQL Server Agent
وﻛﯿﻞ ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،أو ﻛﻤﺎ اﺳﻤﯿﻪ اﻟﻄﯿﺎر اﻵﻟﻲ ،ﻓﻬﻮ اﻟﺬي ﯾﺴﺎﻋﺪك ﻓﻲ ﺟﻌﻞ أﻣﻮر إدارة
اﻟﻨﻈﺎم ﺳﻬﻠﺔ ،ﺣﯿﺚ ﺗﺴﺘﻄﯿﻊ ﺑﺮﻣﺠﺘﻪ ﺑﺎﻟﻘﯿﺎم ﺑﺎﻟﻌﺪﯾﺪ ﻣﻦ اﻷﻣﻮر ﺑﺪون ﺗﺪﺧﻠﻚ
Management
|_ Backup
اﻟﻨﺴﺦ اﻻﺣﺘﯿﺎﻃﻲ ،ﻫﻨﺎ ﺗﻌﺮف أﺟﻬﺰة اﻟﻨﺴﺦ اﻻﺣﺘﯿﺎﻃﻲ واﻟﺘﻲ ﺳﯿﺴﺘﺨﺪﻣﻬﺎ اﻟﻨﻈﺎم
Management
|_ Current Activity
ﻣﺮاﻗﺒﺔ اﻟﻌﻤﻠﯿﺎت اﻟﺤﺎﻟﯿﺔ ﻋﻠﻰ اﻟﺒﯿﺎﻧﺎت
Management
|_ Database Maintenance Planes
ﯾﺤﺘﻮي ﻋﻠﻰ ﻣﺨﻄﻄﺎت اﻟﺼﯿﺎﻧﺔ اﻟﺪورﯾﺔ ﻋﻠﻰ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ،ﻓﻜﻤﺎ ﯾﻌﻠﻢ اﻟﺒﻌﺾ ﺗﺤﺘﺎج ﻗﻮاﻋﺪ
اﻟﺒﯿﺎﻧﺎت اﻟﻀﺨﻤﺔ واﻟﺘﻲ ﺗﻌﺪل ﺑﺎﺳﺘﻤﺮار ﻋﻠﻰ ﺻﯿﺎﻧﺔ ﯾﻮﻣﯿﺔ ﻣﺜﻞ إﻋﺎدة ﻓﻬﺮﺳﺔ ﻣﻔﺎﺗﯿﺢ اﻟﺠﺪاول ،
ﻓﺤﺺ ﺗﻜﺎﻣﻞ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت وﻏﯿﺮﻫﺎ ﻣﻦ اﻷﻣﻮر
Management
|_ SQL Server Logs
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﯾﺤﺘﻮي ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﻌﻤﻠﯿﺎت اﻷﺳﺎﺳﯿﺔ اﻟﺘﻲ ﻗﺎم ﺑﻬﺎ ال
SQL Server
ﻣﺜﻞ ﻣﺘﻰ ﺗﻢ ﺗﺸﻐﯿﻠﻪ ،ﻣﺘﻰ اﺳﺘﺨﺪﻣﺖ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﻌﯿﻨﺔ ،أو ﻫﻞ ﻫﻨﺎك ﻣﺸﺎﻛﻞ ﻗﺪ ﺣﺪﺛﺖ ،وأﻣﻮر
أﺧﺮى
Management
|_ Web Publishing
ﻟﺮﺑﻂ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﺎ ﻣﻊ ﺻﻔﺤﺎت وﯾﺐ ،ﺑﺤﯿﺚ ﺗﺴﺘﻄﯿﻊ أن ﺗﺼﻨﻊ ﺻﻔﺤﺎت وﯾﺐ ﺳﺘﺎﺗﯿﻜﯿﺔ ،
ﺗﻌﺪل ﻛﻠﻤﺎ ﻋﺪﻟﺖ اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،أو ﻛﻞ ﻓﺘﺮة زﻣﻨﯿﺔ ﻣﻌﯿﻨﺔ وذﻟﻚ ﻟﺘﺨﻔﯿﻒ اﻟﻀﻐﻂ ﻋﻠﻰ
ﻣﺤﺮك ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰي
اﻟﻔﺮع اﻟﺮاﺑﻊ :اﻟﻨﻈﺎم اﻷﻣﻨﻲ
Security
وﯾﺤﺘﻮي ﻋﻠﻰ اﻟﻜﺎﺋﻨﺎت اﻟﻤﺴﺌﻮﻟﺔ ﻋﻦ ﺣﻤﺎﯾﺔ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت وﺗﻮزﯾﻊ اﻟﺼﻼﺣﯿﺎت
Security
|_ Logins
ﯾﺤﺘﻮي ﻋﻠﻰ ﻣﺴﺘﺨﺪﻣﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت وﻛﻠﻤﺎت اﻟﺴﺮ اﻟﺨﺎﺻﺔ ﺑﻬﻢ
Security
|_ Server Roles
اﻟﻤﺴﺘﺨﺪﻣﯿﻦ ﻣﻘﺴﻤﯿﻦ إﻟﻰ ﻣﺠﻤﻮﻋﺎت ﻟﺘﺴﻬﯿﻞ ﻋﻤﻠﯿﺔ اﻹدارة
Security
|_ Linked Servers
أﺟﻬﺰة ﻣﺮﻛﺰﯾﺔ أﺧﺮى ﺗﺤﺘﻮي ﻋﻠﻰ ﻧﻈﺎم
SQL Server
ﻣﺮﺗﺒﻄﺔ ﻣﻊ ﺟﻬﺎزﻧﺎ وﺻﻼﺣﯿﺎﺗﻨﺎ ﻋﻠﯿﻬﺎ
Security
|_ Remote Servers
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
إدارة اﻟﺼﻼﺣﯿﺎت ﻋﻠﻰ أﺟﻬﺰة ﻣﺮﻛﺰﯾﺔ ﻣﺮﺗﺒﻄﺔ ﺑﻨﺎ
اﻟﻔﺮع اﻟﺨﺎﻣﺲ :ﺧﺪﻣﺎت داﻋﻤﺔ ﻟﻠﻨﻈﺎم
Support Services
ﻫﻨﺎك ﺑﻌﺾ اﻟﺒﺮاﻣﺞ اﻟﻤﺴﺎﻋﺪة ﻟﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﻛﺰﯾﺔ
Support Services
|_ Distributed Transaction Coordinator
ﺗﺨﻔﯿﻒ اﻟﺤﻤﻞ ﻋﻠﻰ اﻟﻤﻌﺎﻟﺞ وﺗﻮزﯾﻊ اﻟﻌﻤﻠﯿﺎت ﻋﻠﻰ أﺟﻬﺰة أﺧﺮى
Support Services
|_ SQL Mail
ﻧﻈﺎم اﻹدارة ﻋﻦ ﻃﺮﯾﻖ اﻟﺒﺮﯾﺪ اﻻﻟﻜﺘﺮوﻧﻲ ،وﻫﻮ اﺣﺪ اﻷﺷﯿﺎء اﻟﻤﺜﯿﺮة ﻓﻲ
SQL Server
ﺣﯿﺚ ﯾﻤﻜﻨﻚ ﻣﻦ أدارﺗﻪ ﻋﻦ ﻃﺮﯾﻖ اﻟﺒﺮﯾﺪ اﻻﻟﻜﺘﺮوﻧﻲ ،ﻓﻠﻮ ﺳﺎﻓﺮت وﻧﺴﯿﺖ ﺑﺎن ﺗﻘﻮم ﺑﻨﺴﺦ
اﺣﺘﯿﺎﻃﻲ ﻟﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ،ﻓﺘﺴﺘﻄﯿﻊ ﺑﺎن ﺗﺘﻮﺟﻪ إﻟﻰ إي ﻣﻘﻬﻰ اﻧﺘﺮﻧﺖ وﺗﺮﺳﻞ ﺑﺮﯾﺪ إﻟﻰ اﻟﺠﻬﺎز
اﻟﻤﺮﻛﺰي ﺗﻄﻠﺐ ﻣﻨﻪ ذﻟﻚ
ﺑﻞ أﻛﺜﺮ ﻣﻦ ذﻟﻚ ،ﻓﺎن ﻗﺎدر ﻋﻠﻰ ﺗﻮﺟﯿﻪ اﻻﺳﺘﻌﻼﻣﺎت إﻟﯿﻪ ،ﻓﻘﺪ ﺗﻄﻠﺐ ﻣﻌﻠﻮﻣﺎت ﻋﻦ اﻟﺰﺑﺎﺋﻦ ﻣﻦ
ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت اﻟﺰﺑﺎﺋﻦ ،أو ﻏﯿﺮﻫﺎ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت وﻛﻞ ذﻟﻚ ﻋﻦ ﻃﺮﯾﻖ
SQL
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
SQL أواﻣﺮ ﻟﻐﺔ اﻻﺳﺘﻌﻼم أل
DROP
اﻷﻣﺮ
Drop index index_name ;
Drop index key1 ;
Drop table dd ;
اﻟﻮﺻﻒ
PK ,FK ﺣﺬف اﻟﻔﻬﺮس ﺣﺬف
key1 اﺣﺬف اﻟﻔﻬﺮس
ﺑﺎﻟﻜﺎﻣﻞdd ﺣﺬف ﺟﺪول
ALTER
اﻷﻣﺮ
ALTER TABLE Ppr ADD COLUMN Price
DOUBLE ;
alter table student add
اﻟﻮﺻﻒ
Ppr إﻟﻰ اﻟﺠﺪولPrice إﺿﺎﻓﺔ ﺣﻘﻞ
Add st_age in student table
(st_age number (5) ) ;
Alter table student modify ( st_age char (10) ) ;
، ﻣﻦ ﺣﯿﺚ ) اﻟﻨﻮعst_age ﺗﻌﺪﯾﻞ اﻟﺤﻘﻞ
( null ، اﻟﺤﺠﻢ
ﻓﺎرغST_age وﯾﺸﺘﺮط أن ﯾﻜﻮن اﻟﺤﻘﻞ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
CROSS
اﻷﻣﺮ
Cross tabulation
TRANSFORM Sum(Qty) AS Total
اﻟﻮﺻﻒ
ﻟﺠﻌﻞ ﺳﺠﻼت ﺣﻘﻞ ﻣﻌﯿﻦ ﻛﺄﻋﻤﺪة ﻓﻲ ﺟﺪول
pivot
p.city è ﻋﻨﺎوﯾﻦ اﻷﻋﻤﺪة
SELECT S.SNo
select s.sno èﻋﻨﺎوﯾﻦ اﻟﺴﻄﻮر
FROM ( ( S INNER JOIN SP ON S.SNo =
SP.SNo) INNER JOIN P ON P.PNo = SP.PNo)
transform sum(qty) ﻣﺪاﺧﻞ اﻟﺠﺪول
as total è
GROUP BY S.SNo
ﻷﻧﻬﺎgroup by ﻓﻲp.city ﻻﺗﻜﺘﺐ
pivot p.city اﺳﺘﺨﺪﻣﻦ ﻓﻲ
PIVOT P.City ;
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
INSERT
اﻟﻮﺻﻒ
ﻛﺘﺎﺑﺔ ﻗﯿﻢ اﻓﺘﺮاﺿﯿﺔ ﻟﺤﻘﻮل ﻣﻌﯿﻨﺔ
اﻷﻣﺮ
INSERT INTO S (SNo , SName) VALUES
; ) '('S0' , 'TBA
ﻧﺴﺦ ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎت اﻟﺤﻘﻮل ﻣﻦ اﻟﺠﺪول Sp
إﻟﻰ اﻟﺠﺪول اﻟﺠﺪﯾﺪ S2shipments
إﻧﺸﺎء ﺟﺪول ﺟﺪﯾﺪ ﻣﻦ اﻟﺠﺪول اﻷﺳﺎﺳﻲ
وﻓﻮاﺋﺪه اﻷﺗﻲ :
.١ﺳﺮﻋﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺠﺪول اﻟﺠﺪﯾﺪ ) ﻻن
ﺣﺠﻤﻪ ﺻﻐﯿﺮ (
* INSERT INTO SP SELECT
; FROM S2shipments
٢ﻋﺪم ﺗﻌﻄﯿﻞ اﻟﺠﺪول اﻷﺳﺎﺳﻲ
ﻹﺿﺎﻓﺔ اﻟﻘﯿﻢ إﻟﻰ اﻟﺠﺪول
ﻣﻼﺣﻈﺔ :إذا ﻛﺎن اﻟﻤﺘﻐﯿﺮ ﻣﺘﻐﯿﺮ ﺣﺮﻓﻲ ﻓﯿﺠﺐ
ﻣﺮاﻋﺎة أن ﺗﻜﻮن اﻟﻘﯿﻤﺔ اﻟﻤﺪﺧﻠﺔ ﺑﯿﻦ ﻋﻼﻣﺘﻲ
ﺗﻨﺼﯿﺺ ‘ ‘ ali
أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ وﺿﻊ اﻟﻤﺘﻐﯿﺮ واﻹﺷﺎرة ﺑﯿﻦ
ﻋﻼﻣﺘﻲ ﺗﻨﺼﯿﺺ ﻓﻼ داﻋﻲ ﻹدﺧﺎﻟﻬﺎ ﺑﯿﻦ
ﻋﻼﻣﺘﻲ ﺗﻨﺼﯿﺺ
ﻹﺿﺎﻓﺔ اﻟﺒﯿﺎﻧﺎت إﻟﻰ اﻟﺠﺪول ﯾﺸﺘﺮط أن ﯾﻜﻮن
ﻋﺪد اﻟﻘﯿﻢ ﻣﺴﺎوي ﻋﺪد اﻟﺤﻘﻮل
ﻟﺘﺤﻮﯾﻞ اﻟﺘﺎرﯾﺦ ﻣﻦ ﻧﺺ إﻟﻰ ﺗﺎرﯾﺦ
to_date :
ﻹﺿﺎﻓﺔ اﻟﺒﯿﺎﻧﺎت إﻟﻰ اﻟﺠﺪول ﯾﺸﺘﺮط أن ﯾﻜﻮن
ﻋﺪد اﻟﻘﯿﻢ ﻣﺴﺎوي ﻋﺪد اﻟﺤﻘﻮل
ﻟﺘﺤﻮﯾﻞ اﻟﺘﺎرﯾﺦ ﻣﻦ ﻧﺺ إﻟﻰ ﺗﺎرﯾﺦ
to_date :
)insert into student (st_no , st_name
;)'values (&no , '&name
insert into student (st_no,st_name ,
st_birth_day,st_age ) values
(11, ‘ali’ ,to_date
;) ('12/07/1399' , 'DD/MM/YYYY') , null
insert into student values
(11, ‘ali’ ,to_date
;) ('12/07/1399' , 'DD/MM/YYYY') , null
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
CREATE
اﻷﻣﺮ
اﻟﻮﺻﻒ
PK ﻟﻌﻤﻞ ﻣﻔﺘﺎح أﺳﺎﺳﻲunique
FK وﻣﻔﺘﺎح ﺛﺎﻧﻮي
اﺳﻢ اﻟﻤﻔﺘﺎحindex_name
Create [unique] index index_name on
table(column1 , [column2],…..)
CREATE INDEX SSNoIndex ON S (SNo)
WITH PRIMARY ;
Create table st (temp1 , temp2 ) as
Select st_no , st_name from student ;
CREATE TABLE S ( SNO TEXT(4) , SName
TEXT(12) , Status SHORT , City TEXT(12) ) ;
اﺳﻢ اﻟﺤﻘﻞ اﻟﺬي ﺳﯿﺘﻢ اﻋﺘﻤﺎدهcolumn1
PK
اﺳﻢ اﻟﺤﻘﻞ اﻟﺬي ﺳﯿﺘﻢ اﻋﺘﻤﺎد هcolumn2
وﻫﻮ اﺧﺘﺎريFK
ssnoindex إﻧﺸﺎء ﻓﻬﺮس ﺟﺪﯾﺪ أﺳﻤﻪ
ﻣﻊ ﻣﻔﺘﺎحSno ﻋﻠﻰ اﻟﺤﻘﻞS ﻟﻠﺠﺪول
أﺳﺎﺳﻲ
إﻧﺸﺎء ﻣﻠﻒ ﺑﺎﻻﺳﺘﻌﺎﻧﺔ ﺑﻤﻮاﺻﻔﺎت ﺣﻘﻮل
ﻣﻠﻒ ﻣﻨﺸﺄ ﻣﺴﺒﻘﺎ إﻧﺸﺎء اﻟﻤﻠﻒ ﺳﻒ اﻟﻤﻜﻮن
( temp1 , temp2 ) ﻣﻦ اﻟﺤﻘﻠﯿﻦ
ﺑﻤﻮاﺻﻔﺎت ﻣﻄﺎﺑﻘﺔ ﺗﻤﺎﻣﺎ ﻟﻤﻮاﺻﻔﺎت اﻟﺤﻘﻠﯿﻦ
( st_no , st_name )
، temp1 = st_no :وﯾﺠﺐ اﻟﺘﺮﺗﯿﺐ
temp2 = st_name
وﺑﻪ اﻟﺤﻘﻮلS إﻧﺸﺎء ﺟﺪول ﺟﺪﯾﺪ أﺳﻤﻪ
: اﻟﺘﺎﻟﯿﺔ
Sno , Sname ,Status , City
ﺗﺴﻤﺢ ﺑﻘﯿﻤﺔ ﻓﺎرﻏﺔ: NULL
create table student ( st_no number(6) not null ,
st_name char(40) not null ,
ﻻﺗﺴﻤﺢ ﺑﻘﯿﻤﺔ ﻓﺎرﻏﺔ: NOT NULL
table name : student
st_birth_day date
);
field : st_no , st_name ,
st_birth_day , st_mark
اﺳﻢ اﻟﻤﻔﺘﺎحKey1
Create unique index key1 on emp_inf (emp_no) ;
اﺳﻢ اﻟﺤﻘﻞ اﻟﺬي ﺗﻢ اﺧﺘﺎرهEmp_no
ﻣﻔﺘﺎح أﺳﺎﺳﻲ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
DEFINE
اﻷﻣﺮ
اﻟﻮﺻﻒ
define
Define descount = ‘ st_no * 10 ' ;
ﻻﺳﺘﻌﺮاض ﺟﺪول ﻣﺤﺘﻮﯾﺎت اﻟﻤﺘﻐﯿﺮات
ﻟﺘﻌﺮﯾﻒ ﻣﺘﻐﯿﺮ
Select st_name ,& descount from student ;
ﺛﻢ اﺳﺘﺨﺪاﻣﻪ
DELETE
اﻷﻣﺮ
DELETE * FROM SP
اﻟﻮﺻﻒ
WHERE SNo = 'S2' ;
DELETE CASCADE * FROM SP
SNo = 'S2' ;
WHERE
Delete from student where st_name='ali' ;
واﻟﺘﻲ ﺗﺤﻘﻖSp ﺣﺬف ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎت اﻟﺠﺪول
where اﻟﺸﺮوط ﺑﻌﺪ ﻛﻠﻤﺔ
واﻟﺘﻲ ﺗﺤﻘﻖSp ﺣﺬف ﺟﻤﯿﻊ ﺑﯿﺎﻧﺎت اﻟﺠﺪول
where اﻟﺸﺮوط ﺑﻌﺪ ﻛﻠﻤﺔ
وﺟﻤﯿﻊ اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮﺗﺒﻄﺔ ﺑﻬﺎ ﻓﻲ اﻟﺠﺪول
s اﻷﺳﺎﺳﻲ
ﺣﺬف اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺗﺤﻘﻖ اﻟﺸﺮط
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
DECODE
اﻷﻣﺮ
اﻟﻮﺻﻒ
ﻟﻠﺒﺤﺚ ﻋﻦ ﻗﯿﻤﺔ ﻣﺘﻐﯿﺮ أو أﻛﺜﺮ داﺧﻞ ﺟﺪول
وﯾﺘﻄﻠﺐ ﻫﺬا اﻷﻣﺮ أرﺑﻊ ﻣﺘﻐﯿﺮات ﻓﻲ ﺷﻜﻠﻪ
اﻟﻌﺎم
ﺣﻘﻞ أو ﺗﻌﺒﯿﺮcol | expression
Docode ( col | expression , search1 , result1 , [
search2 . result2 , …] ,default )
اﻟﻘﯿﻤﺔ اﻷول ﻟﻠﺒﺤﺚsearch1
اﻟﻘﯿﻤﺔ اﻟﺘﻲ ﯾﻈﻬﺮﻫﺎ إن وﺟﺪresult1
search1 = col | expression result2
search2 = اﻟﻘﯿﻤﺔ اﻟﺘﻲ ﯾﻈﻬﺮﻫﺎ إن وﺟﺪ
col | expression
اﻟﻘﯿﻤﺔ اﻟﺘﻲ ﯾﻌﺮﺿﻬﺎ إذا ﻟﻢ
ﯾﺠﺪ اﻟﻘﯿﻤﺔ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
default
UPDATE
اﻷﻣﺮ
UPDATE SP SET SNo = 'S0' WHERE SNo =
'S4' ;
Update student set st_name
اﻟﻮﺻﻒ
ﺗﻌﺪﯾﻞ ﺑﯿﺎﻧﺎت ﺣﻘﻞ ﻣﻌﯿﻦ
=(select st_name from st_inf
where st_inf.st_no = student.st_no )
ﺑﻘﯿﻤﺔ أﺧﺮى، اﺳﺘﺒﺪال ﻗﯿﻤﺔ ﺣﻘﻞ ﻓﻲ ﻣﻠﻒ
ﻣﺨﺰﻧﻪ ﻓﻲ ﻣﻠﻒ أﺧﺮ
where st_no in ( select st_no
from st_inf ) ;
ﻟﺘﻌﺪﯾﻞ ﻗﯿﻤﺔ ﻓﻲ اﻟﺠﺪول
Update student set st_name = 'ahmad’
Where st_name = 'ali' ;
update student set st_name = ltrim(st_name) ;
update student set st_name = rtrim(st_name) ;
، اوراﻛﻞ ﻻﯾﻤﯿﺰ ﺑﯿﻦ اﻟﺤﺮوف ) ﻛﺒﯿﺮة
(ﺻﻐﯿﺮة
وﻟﻜﻦ ﻓﻲ إدﺧﺎل اﻟﺒﯿﺎﻧﺎت ﯾﺠﺐ اﻟﺘﻘﯿﺪ ﺑﺤﺎﻟﺔ
( ﺻﻐﯿﺮة، اﻷﺣﺮف ) ﻛﺒﯿﺮة
ﺣﺬف اﻟﻔﺮاغ ﻓﻲ ﺑﺪاﯾﺔ اﻟﺤﻘﻞ
ﺣﺬف اﻟﻔﺮاغ ﻓ ﻲ ﻧﻬﺎﯾﺔ اﻟﺤﻘﻞ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ACCEPT
اﻷﻣﺮ
Accept password char prompt 'password : ' hide
;
Accept st_no number noprompt ;
Accept st_no number prompt 'enter number : ' ;
اﻟﻮﺻﻒ
إدﺧﺎل ﻛﻠﻤﺔ اﻟﺴﺮ ﻣﻊ ﺣﺠﺐ ﻛﻠﻤﺔ اﻟﺴﺮ أي
** ﺗﻈﻬﺮ ﻓﻲ ﺷﻜﻞ
إدﺧﺎل رﻗﻢ
إدﺧﺎل رﻗﻢ ﻣﻊ إﻇﻬﺎر اﻟﺮﺳﺎﻟﺔ
accept command أﻣﺮ اﻹدﺧﺎل
Number or char : type of
varibles
ﻃﺒﺎﻋﺔ رﺳﺎﻟﺔPrompt ‘text’ :
ﻟﻠﻤﺴﺘﺨﺪم ﻟﺘﻌﺮﯾﻒ ﺑﺎﻟﺤﻘﻞ اﻟﺬي ﺳﯿﺪﺧﻠﻪ
Accept varible [number or char ] [ prompt or
noprompt ‘text’ ] [ hide ] ;
ﻗﺒﻮل اﻟﻤﺘﻐﯿﺮ دون ﻋﺮضNopromp
رﺳﺎﻟﺔ ﻟﻠﻤﺴﺘﺨﺪم
ﺗﺴﺘﺨﺪم ﻟﻤﻨﻊ ﻇﻬﻮر ﻣﺎ ﯾﻄﺒﻊ ﻣﻦHide
ﻟﻮﺣﺔ اﻟﻤﻔﺎﺗﯿﺢ ﻋﻠﻰ اﻟﺸﺎﺷﺔ ) ﻣﻔﯿﺪة ﻓﻲ ﻛﻠﻤﺔ
( اﻟﺴﺮ
Acc = accept
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
SELESCT 1
اﻷﻣﺮ
Select ……. UNION select
…………
Select power ( st_ digit, 2 ) , power ( 3
, 2) from student ;
SELECT * FROM S ;
SELECT * INTO Ppr FROM P ;
Select * from student ;
Select abc (st_ digit) from student ;
Select AVG ( column ) , COUNT (
distinct | all | exp)
, MAX ( distinct | all | exp) , MIN (
distinct | all | exp) , SUM ( distinct | all
| exp) , STDDEV ( distinct | all )
group by col having count(*)> 2
from student ;
اﻟﻮﺻﻒ
select
ﺗﺴﺘﺨﺪم ﻟﺮﺑﻂ ﺟﻤﻠﺘﯿﻦUNION
أي ﻋﺮض اﻟﺴﺠﻼت اﻟﺘﻲ ﺗﺤﻘﻖ اﺣﺪ اﻟﺸﺮﻃﯿﻦ
داﻟﺔ اﻟﺮﻓﻊ إﻟﻰ ﻗﻮة
3^2 = 3 * 3 = 9
S ﻋﺮض ﺟﻤﯿﻊ اﻟﺴﺠﻼت ﻓﻲ اﻟﺠﺪول
Ppr إﻟﻰ اﻟﺠﺪولP ﻧﺴﺦ اﻟﺠﺪول
ﻟﻤﺸﺎﻫﺪة اﻟﺠﺪول
داﻟﺔ إﯾﺠﺎد اﻟﻘﯿﻤﺔ اﻟﻤﻄﻠﻘﺔ
اﻟﻤﻌﺪل
AVG
ﻋﺪاد ﻟﻌﺪ ﻋﺪد اﻟﺤﻘﻮل
Count
أﻋﻠﻰ ﻗﯿﻤﺔ ﻓﻲ اﻟﺤﻘﻞMax
اﺻﻐﺮ ﻗﯿﻤﺔ ﻓﻲ اﻟﺤﻘﻞMin
ﻣﺠﻤﻮع ﻗﯿﻢ اﻟﺤﻘﻞSum
اﻻﻧﺤﺮاف اﻟﻤﻌﯿﺎري
Stddev
ﺗﺠﺰا اﻟﺠﺪول إﻟﻰ ﺟﺪاول اﺻﻐﺮ ﻣﻨﻪ ﺣﺴﺐGroup by
ﺷﺮط ﻣﻌﯿﻦ
group by اﻟﺸﺮط اﻟﺬي ﯾﺤﺘﺎﺟﻪHaving
select AVG(st_age) , COUNT(distict
all st_name) , MAX(st_age) ,
MIN(st_age) ,SUM(st_age) ,
STDDEV(st_age) group by avg
having count(*) >2
ﺟﻤﯿﻊ اﻟﺤﻘﻮل ﻣﻊ اﻟﺤﻘﻮل اﻟﻤﺘﻜﺮرةAll
ﺣﻘﻞColumn
ﺑﺪون ﺗﻜﺮارDistinct
from student ;
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
Select ceil ( st_ digit) , ceil (2.99) from
student ;
SELECT Count(* ) AS N
FROM SP
WHERE PNo = 'P2' ;
SELECT Count(s.sno) AS N
FROM S ;
Select distinct st_name from student ;
SELECT DISTINCT SNo
FROM SP ;
Select distinct st_no , st_name from
student;
Select emp_name , emp_sal from
emp_inf , emp_name where
emp_name.emp_no = emp_inf.emp_no
and emp_inf.emp_sal between 120 and
200
Select emp_no from emp_inf where
emp_sal >3000
Interset select emp_no from emp_inf
where emp_no=100
Select emp_no from emp_inf where
emp_sal>3000
Union select emp_no from emp_in
where emp_no<100
Select floor ( st_ digit) , floor (100.77)
from student ;
select initcap ( st_name) , initcap
(st_no) from student;
Select jop_name from emp_inf
Where emp_sal = (select min
(emp_sal) from emp_inf)
( 2.99 ) داﻟﺔ إﯾﺠﺎد اﻟﻌﺪد اﻷﻛﺒﺮ ﻣﻦ اﻟﻌﺪد اﻟﻤﻌﻄﻰ
( 3 ) ﺑﺤﯿﺚ ﯾﻜﻮن ﻋﺪد ﺻﺤﯿﺢ
S ﻣﻦ اﻟﺠﺪولN ﻋﺮض ﻋﺪد اﻟﺴﺠﻼت ﻓﻲ ﺣﻘﻞ أﺳﻤﻪ
WHERE واﻟﺘﻲ ﺗﺤﻘﻖ اﻟﺸﺮوط اﻟﺘﺎﻟﯿﺔ ﻟﻜﻠﻤﺔ
S ﻣﻦ اﻟﺠﺪولN ﻋﺮض ﻋﺪد اﻟﺴﺠﻼت ﻓﻲ ﺣﻘﻞ اﺳﻤﻪ
ﻋﺪم ﺗﻜﺮار اﻻﺳﻢ
ﺑﺪونSP ﻣﻦ اﻟﺠﺪولSno
ﺗﻜﺮار
ﻋﺮض ﺑﯿﺎﻧﺎت اﻟﺤﻘﻞ
اﻻﺳﻢ، ﻋﺪم ﺗﻜﺮار اﻟﺮﻗﻢ
ﻃﺒﺎﻋﺔ ﻗﯿﻢ ﻣﻦ ﻋﺪة ﺟﺪاول
ﻟﺮﺑﻂ ﺑﯿﻦ ﺷﺮﻃﯿﻦ أو: ﻋﻤﻠﯿﺔ اﻟﺘﻘﺎﻃﻊIntersect
أي ﻋﺮض اﻟﺴﺠﻼت اﻟﺘﻲ ﺗﺤﻘﻖselect ﺣﻤﻠﺘﯿﻦ
اﻟﺸﺮﻃﯿﻦ ﻣﻌﺎ
أو
٣٠٠٠ ﻋﺮض أرﻗﺎم اﻟﻤﻮﻇﻔﯿﻦ اﻟﺬﯾﻦ راﺗﺒﻬﻢ
١٠٠ رﻗﻤﻬﻢ ﻗﺒﻞ
(100.77 ) داﻟﺔ إﯾﺠﺎد اﻟﻌﺪد اﻷﺻﻐﺮ ﻣﻦ اﻟﻌﺪد اﻟﻤﻌﻄﻰ
( 100 ) ﺑﺤﯿﺚ ﯾﻜﻮن ﻋﺪد ﺻﺤﯿﺢ
ﺗﺤﻮﯾﻞ اﻟﺤﺮف اﻷول ﻣﻦ ﺣﺮف ﺻﻐﯿﺮ أو ﻛﺒﯿﺮ إﻟﻰ ﺣﺮف
ﻛﺒﯿﺮ
: اﻻﺳﺘﻔﺴﺎراتSubqueries
اﺳﺘﻔﺴﺎر اﻟﺼﻒ اﻟﻮاﺣﺪ ﺗﻌﻮد ﺑﻘﯿﻤﺔ واﺣﺪة-١
( اﺻﻐﺮ راﺗﺐ: ) ﻣﺜﺎل
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﺳﺘﻔﺴﺎرات اﻟﺼﻔﻮف اﻟﻤﺘﻌﺪدة ﺗﻌﻮد ﺑﻌﺪة ﺻﻔﻮف-٢
( ﻋﺮض ﻛﻞ وﻇﯿﻔﺔ واﻗﻞ راﺗﺐ ﻓﯿﻬﺎ: ) ﻣﺜﺎل
Select jop_name , emp_sal from
emp_inf where emp_sal in (select
min(emp_sal)from emp_inf group by
jop_name) ;
Select last-day (sysdate) from student ;
select length ('wellcome') , length
(st_name) from student ;
select lower(st_name),lower('SMALL
LETTER') from student ;
select lpad (st_name , 50 ,'-' ) ,
lpad(st_no ,10,'$') from student;
إﯾﺠﺎد اﻟﯿﻮم اﻷﺧﯿﺮ ﻓﻲ اﻟﺸﻬﺮ
st_name ‘ أو ﺣﻘﻞwellcome’ ﻋﺮض ﻃﻮل ﻣﺘﻐﯿﺮ
ﺗﺤﻮﯾﻞ ﻗﯿﻢ ﺣﻘﻞ ﻣﻦ أﺣﺮف ﻛﺒﯿﺮ إﻟﻰ أﺣﺮف ﺻﻐﯿﺮة
أو ﺗﺤﻮﯾﻞ ﻧﺺ ﻣﻦ أﺣﺮف ﻛﺒﯿﺮ إﻟﻰ أﺣﺮف ﺻﻐﯿﺮة
‘أو-‘ ﻣﻠﻰْ اﻟﻔﺮاغ ﻣﻦ اﻟﺤﻘﻞ اﻟﻤﺤﺪد ﻋﻦ اﻟﯿﺴﺎر ﺑﺎﻟﻘﯿﻤﺔ
‘$’ أي رﻣﺰ ﻛﻢ ﻓﻲ
اﻛﺒﺮ ﻣﻦ ﺣﺠﻢ اﻟﺤﻘﻞ اﻟﻤﺤﺪد ﻋﻨﺪn=50 ﻻﺑﺪ أن ﺗﻜﻮن
إﻧﺸﺎﺋﻪ
st_no number(6) or
SELECT Max(Qty ) AS MAXP2Qty
FROM SP
st_name char(40)
ﻣﻦQty ﻋﺮض اﻛﺒﺮ ﻗﯿﻤﺔ ﻓﻲ اﻟﺴﺠﻼت اﻟﺘﺎﺑﻌﺔ ﻟﻠﺤﻘﻞ
واﻟﺘﻲ ﺗﺤﻘﻖ اﻟﺸﺮوط اﻟﺘﺎﻟﯿﺔ ﻟﻜﻠﻤﺔSP اﻟﺠﺪول
WHERE
WHERE PNo = 'P2' ;
Select mod ( st_average , 10 ) from
student ;
داﻟﺔ إﯾﺠﺎد ﺑﺎﻗﻲ اﻟﻘﺴﻤﺔ
١٠ = اﻟﻤﻘﺴﻮم ﻋﻠﯿﺔ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
SELECT 2
اﻷﻣﺮ
select next-day(‘30-jun-96’ ,'FRIDAY') , nextday(sysdate,'friday') from student ;
SELECT P.PNo , S.SNo , SName , Status , S.City
FROM (P INNER JOIN SP ON P.PNo = SP.PNo)
INNER JOIN S ON SP.SNo = S.Sno
اﻟﻮﺻﻒ
إذا ﻛﺎن اﻟﯿﻮم اﻷﺣﺪ ﻓﺄﻧﻪ ﯾﺄﺗﻲ ﺑﺄول ﺟﻤﻌﺔ
ﺑﻌﺪة
أي ﺗﻘﻮم اﻟﺪاﻟﺔ ﺑﺈﯾﺠﺎد اﻟﯿﻮم اﻟﻤﻮاﻓﻖ ﻟﯿﻮم
اﻟﺠﻤﻌﺔ
ﻣﻦSELECT ﻋﺮض اﻟﺤﻘﻮل ﺑﻌﺪ
P,Sp,S اﻟﺠﺪاول اﻟﺜﻼﺛﺔ
WHERE P.City = S.City
ORDER BY P.PNo , S.SNo ;
SELECT PName , City , SNo , Qty
FROM SP1 RIGHT JOIN P ON SP1.PNo =
P.PNo ;
SELECT PNo , Sum(Qty) AS TotalQty
FROM SP
GROUP BY PNo
HAVING Sum(Qty) >= 500
ORDER BY Sum(Qty) DESC , PNo ;
Select round ( st_ digit, 2 ) from student ;
Select round ( st_digit , 1 ) from student ;
Pname , ﻋﺮض ﺑﯿﺎﻧﺎت اﻟﺤﻘﻮل اﻟﺘﺎﻟﯿﺔ
city , Sno , QTY
SP1 ﻣﻦ اﻟﺠﺪول
RIGHT واﻟﺮﺑﻂ ﺑﯿﻦ ﺟﺪوﻟﯿﻦ ﺑﺎﺳﺘﺨﺪام
JOIN
وﻣﺠﻤﻮعPno ﻋﺮض ﺑﯿﺎﻧﺎت اﻟﺤﻘﻞ
SP ﻣﻦ اﻟﺠﺪولQty ﺑﯿﺎﻧﺎت اﻟﺤﻘﻞ
اﻟﻔﺮق ﺑﯿﻦ اﻟﺸﺮط اﻟﺬي ﯾﺘﺒﻊ ﻛﻠﻤﺔ
واﻟﺸﺮط اﻟﺬي ﯾﺘﺒﻊ ﻛﻠﻤﺔWHERE
إن اﻟﺸﺮط اﻟﺬي ﯾﺘﺒﻊ, HAVING
ﯾﻜﻮن ﻋﻠﻰ اﻟﺤﻘﻮلWHERE
أﻣﺎ اﻟﺬي ﯾﺘﺒﻊ، اﻷﺳﺎﺳﯿﺔ ﻓﻲ اﻟﺠﺪول
ﻓﯿﻜﻮن ﻋﻠﻰ اﻟﻌﻤﻠﯿﺎت ﻣﺜﻞHAVING
Sum ()
اﻟﺘﻘﺮﯾﺐ إﻟﻰ اﻗﺮب ﻣﻨﺰﻟﺘﯿﻦ ﻋﺸﺮﯾﺔ
اﻟﺘﻘﺮﯾﺐ إﻟﻰ اﻗﺮب ﻣﻨﺰﻟﺔ ﻋﺸﺮﯾﺔ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
-
اﻟﺘﻘﺮﯾﺐ ﺑﺎﺳﺘﺨﺪام اﻟﺸﻬﺮ
:
إذا ﻛﺎن اﻟﺘﺎرﯾﺦ ﻟﻢ ﯾﺘﺠﺎوز ١٥ﻓﺄﻧﻪ
ﯾﻌﺮض أول ﯾﻮم ﻣﻦ ﺑﺪاﯾﺔ ﻫﺬا اﻟﺸﻬﺮ
وإذا ﺗﺠﺎوز ١٥ﻓﺄﻧﻪ ﯾﻌﺮض أول ﯾﻮم ﻣﻦ
اﻟﺸﻬﺮ اﻟﺘﺎﻟﻲ
-
اﻟﺘﻘﺮﯾﺐ ﺑﺎﺳﺘﺨﺪام اﻟﺴﻨﺔ
:
Select round (sysdate , ‘MONTH’ ) , round
; (sysdate , ‘YEAR’ ) from student
إذا ﻛﺎن اﻟﺘﺎرﯾﺦ ﻟﻢ ﯾﺘﺠﺎوز ٦اﺷﻬﺮ ﻓﺄﻧﻪ
ﯾﻌﺮض أول ﯾﻮم ﻣﻦ ﺑﺪاﯾﺔ اﻟﺴﻨﺔ اﻟﺤﺎﻟﯿﺔ
وإذا ﻛﺎن اﻟﺘﺎرﯾﺦ ﺗﺠﺎوز ٦اﺷﻬﺮ ﻓﺄﻧﻪ
ﯾﻌﺮض أول ﯾﻮم ﻣﻦ اﻟﺴﻨﺔ اﻟﺘﺎﻟﯿﺔ
ﻣﻠﻰْ اﻟﻔﺮاغ ﻣﻦ اﻟﺤﻘﻞ اﻟﻤﺤﺪد ﻋﻦ اﻟﯿﻤﯿﻦ
ﺑﺎﻟﻘﯿﻤﺔ ‘‘-أو أي رﻣﺰ ﻛﻢ ﻓﻲ ’‘$
ﻻﺑﺪ أن ﺗﻜﻮن n=50اﻛﺒﺮ ﻣﻦ ﺣﺠﻢ اﻟﺤﻘﻞ
اﻟﻤﺤﺪد ﻋﻨﺪ إﻧﺸﺎﺋﻪ
)'select rpad (st_name , 50 ,'-' ) , rpad(st_no ,10,'$
;from student
st_no number(6) or
)st_name char(40
SELECT S.SNo , SName , Sum(Qty * Price) AS
Payment
ﻋﺮض اﻟﺤﻘﻮل واﻟﻌﻤﻠﯿﺎت ﺑﻌﺪ ﻛﻠﻤﺔ
SELECT
ﻣﻦ ﺛﻼﺛﺔ ﺟﺪاول Ppr , SP , S
واﻟﺘﻲ ﺗﺤﻘﻖ اﻟﺸﺮط ﺑﻌﺪ ﻛﻠﻤﺔ HAVING
= FROM (Ppr INNER JOIN SP ON Ppr.PNo
SP.PNo) INNER JOIN S ON SP.SNo = S.SNo
GROUP BY S.SNo , SName
HAVING Sum(Qty * Price ) <= 5000
; ORDER BY S.SNo
ﺗﻔﺤﺺ اﻟﺪاﻟﺔ إﺷﺎرة اﻟﺮﻗﻢ وﺗﺮﺟﻊ ﺑﺎﻟﻘﯿﻢ
اﻟﺘﺎﻟﯿﺔ :
; Select sign ( st_digit ) , sign (-1) from student
١-اﻟﺮﻗﻢ ﺳﺎﻟﺐ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺻﻔﺮ اﻟﺮﻗﻢ ﺻﻔﺮ
اﻟﺮﻗﻢ ﻣﻮﺟﺐ١
SELECT SName
FROM S
Tree SELECT
WHERE SNo IN (SELECT SNo
FROM SP
WHERE PNo IN (SELECT PNo
FROM P
ﻣﻦSname ﻋﺮض ﺑﯿﺎﻧﺎت ﺣﻘﻞ
S اﻟﺠﺪول
WHERE Color = 'Red' ) ) ;
SELECT SName
TOW SELECT USE
EXISTS
FROM S
WHERE EXISTS (SELECT *
FROM SP
ﻣﻦSname ﻋﺮض ﺑﯿﺎﻧﺎت ﺣﻘﻞ
S اﻟﺠﺪول
WHERE PNo = 'P2' And SNo = S.SNo );
SELECT SName
TOW SELECT USE NOT
EXISTS
FROM S
WHERE NOT EXISTS (SELECT *
FROM SP
ﻣﻦSname ﻋﺮض ﺑﯿﺎﻧﺎت ﺣﻘﻞ
S اﻟﺠﺪول
WHERE PNo = 'P2' And SNo = S.SNo );
SELECT SName
TREE SELECT USE NOT
EXISTS
FROM S
WHERE NOT EXISTS ( SELECT * FROM P
WHERE NOT EXISTS (SELECT * FROM SP
WHERE SNo = S.SNo And PNo = P.PNo ) ) ;
SELECT SName
FROM S
WHERE (SELECT Count(* )
FROM SP
ﻣﻦSname ﻋﺮض ﺑﯿﺎﻧﺎت ﺣﻘﻞ
S اﻟﺠﺪول
TREE SELECT USE NOT
EXISTS
ﻣﻦSname ﻋﺮض ﺑﯿﺎﻧﺎت ﺣﻘﻞ
S اﻟﺠﺪول
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
WHERE SP.SNo = S.SNo)
= (SELECT Count(* ) FROM P) ;
TOW SELECT
SELECT SName FROM S
WHERE SNo IN (SELECT SNo FROM SP
WHERE PNo = 'P2' ) ;
SELECT SName , City
FROM S INNER JOIN SP ON S.SNo = SP.SNo
ﻣﻦ اﻟﺠﺪولSname ﻋﺮض ﺑﯿﺎﻧﺎت ﺣﻘﻞ
S
واﻟﺘﻲ ﺗﺤﻘﻖ اﻟﺸﺮوط اﻟﺘﺎﻟﯿﺔ ﻟﻜﻠﻤﺔ
WHERE
INNER JOIN رﺑﻂ ﺟﺪوﻟﯿﻦ ﺑﺎﺳﺘﺨﺪام
ﺷﺮط اﻟﺮﺑﻂ ﺑﯿﻦ اﻟﺠﺪوﻟﯿﻦ اﻟﺬي ﺑﻌﺪ ﻛﻠﻤﺔ
وﻫﻮ اﻟ ﺤﻘﻞ اﻟﻤﺸﺘﺮك ﺑﯿﻦ اﻟﺠﺪوﻟﯿﻦON
WHERE PNo = 'P2' ;
ﺷﺮط اﻟﻤﻘﺎرﻧﺔ اﻟﺬي ﺑﻌﺪ ﻛﻠﻤﺔ
WHERE
SELECT SName , PNo , Qty
LEFT JOIN رﺑﻂ ﺟﺪوﻟﯿﻦ ﺑﺎﺳﺘﺨﺪام
FROM S LEFT JOIN SP ON S.SNo = SP.SNo ;
ﺷﺮط اﻟﺮﺑﻂ ﺑﯿﻦ اﻟﺠﺪوﻟﯿﻦ اﻟﺬي ﺑﻌﺪ ﻛﻠﻤﺔ
ON
SELECT SNo
TOW SELECT
FROM S
WHERE Status > (SELECT Avg(Status) FROM
S);
SELECT SNo FROM SP ;
S ﻣﻦ اﻟﺠﺪولSNo ﻋﺮض ﺑﯿﺎﻧﺎت ﺣﻘﻞ
ﻣﻦ اﻟﺠﺪولSno ﻋﺮض ﺑﯿﺎﻧﺎت اﻟﺤﻘﻞ
ﻣﻊ اﻟﺘﻜﺮارSP
SELECT SNo FROM S
TOW SELECT
WHERE City = (SELECT City FROM S
WHERE SNo = 'S1' ) And SNo <> 'S1' ;
Select sqrt ( abs ( st_ digit ) , sqrt (9 ) from
student ;
select st_age
NVL (st_age , 0 ) from student ;
select st_name , instr (st_name , 'a' , 1,2) from
S ﻣﻦ اﻟﺠﺪولSNo ﻋﺮض ﺑﯿﺎﻧﺎت ﺣﻘﻞ
إﯾﺠﺎد اﻟﺠﺬر اﻟﺘﺮﺑﯿﻌﻲ
<==
NULL ﻟﺘﺤﻮﯾﻞ ﻗﯿﻤﺔ
NVL : 0
‘ ﻓﻲ اﻟﻜﻠﻤﺔa’ ﺣﺮف٢= اﻟﺒﺤﺚ ﻋﻦ ﺛﺎﻧﻲ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
student;
select st_name , ltrim (st_name ,'a') from student
;
١ وﻣﻮﻗﻌﺔ وﯾﺒﺪأ اﻟﺒﺤﺚ ﻣﻦ اﻟﺤﺮف رﻗﻢ
n = 2 ، pos = 1
‘ ﻣﻦ ﺑﺪاﯾﺔba’ ‘ أوab’ ﺣﺬف اﻟﺤﺮف
اﻟﺤﻘﻞ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
SELECT 3
اﻟﻮﺻﻒ
ﺣﺬف اﻟﺤﺮف ’ ‘abأو ’ ‘baﻣﻦ ﻧﻬﺎﯾﺔ اﻟﺤﻘﻞ
ﻟﻌﺮض اﻟﻤﺘﻐﯿﺮ اﻟﺤﺮﻓﻲ اﻟﻤﻮﺟﻮد ﻓﻲ ﺟﺪول ،وﺑﺤﯿﺚ ﯾﻜﻮن اﻟﻠﻔﻆ
اﻟﺼﻮﺗﻲ ﻟﻬﺎ ﻣﺘﺸﺎﺑﻪ ،ﺣﺘﻰ وان اﺧﺘﻠﻔﺖ ﻓﻲ اﻷﺣﺮف اﻟﻬﺠﺎﺋﯿﺔ ،
ﻣﺜﻞ ali = ale = ALIﻣﻦ ﺣﯿﺚ اﻟﻠﻔﻆ
ﻋﺮض اﻟﻄﻼب اﻟﺘﻲ ﻣﻌﺪﻟﻬﻢ = NULL
ﻋﺮض اﻟﻄﻼب اﻟﺘﻲ ﻣﻌﺪﻟﻬﻢ >< NULL
اﻷﻣﺮ
select st_name , rtrim
; (st_name ,'a') from student
select st_name , soundex
(st_name) from student
= )where soundex (st_name
; )'soundex('ali
Select st_name , st_average
from student
; Where st_avreage is null
Select st_name , st_average
from student
Where st_avreage is not null
;
ادﺧﻞ ﻗﯿﻤﺔ exp =st_no * 10
& ) اﺳﺘﺨﺪام اﻟﻤﺘﻐﯿﺮ دون ﺗﻌﺮﯾﻒ أي ﻻ ﯾﺒﻘﻰ ﻓﻲ اﻟﺬاﻛﺮة (
ادﺧﻞ ﻗﯿﻤﺔ exp =st_no * 10
Select st_name , st_no , & exp
; from student
واﻟﻔﺮق ﺑﯿﻨﻬﺎ وﺑﯿﻦ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ أن && وﻟﯿﺴﺖ & وذﻟﻚ ﯾﻌﻨﻲ
أن اﻟﺬاﻛﺮة ﺗﺤﺘﻔﻆ ﺑﻘﯿﻤﺔ expوﯾﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻻﺣﻘﺎ
أي ﻓﻲ اﻟﺬاﻛﺮة exp = st_no * 10
&& Select st_name , st_no ,
; exp from student
أﻣﺎ & ﻓﺎﻟﺬاﻛﺮة ﻻ ﺗﺤﺘﻔﻆ ﺑﻘﯿﻤﺔ exp
&& ) ﻣﻠﺨﺺ :ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮ ) ﯾﺒﻘﻰ ﻓﻲ اﻟﺬاﻛﺮة( ﺛﻢ اﺳﺘﺨﺪاﻣﻪ
ﻓﻲ ﻧﻔﺲ اﻟﺨﻄﻮة (
ﻧﻔﺬ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﯿﺔ
.٤
.٥
اﺣﻔﻆ اﻟﺠﻤﻠﺔ ﻓﻲ SS
اﺳﺘﺪﻋﻲ اﻟﺠﻤﻠﺔ SS
.٦
ﺗﺤﻮﯾﻞ ﻗﯿﻢ ﺣﻘﻞ ﻣﻦ أﺣﺮف ﺻﻐﯿﺮة إﻟﻰ أﺣﺮف ﻛﺒﯿﺮة إذا ﺣﻘﻖ
اﻟﺸﺮط
; Select st_name from student
; Save ss
; Start ss
Select st_name from student
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
where
St_name = upper (‘&
st_name’ ) ;
Select st_name from student
where st_name = ' & st_enter
';
Select st_name from student
where st_no= & 1 ;
Save ss ;
Start ss 12 ;
select
st_name,instr(st_name,'a')
from student;
select st_no , decode(st_no ,
'11' , 1 , '33' , 1, 0) from
student;
Select st_no , st_name , st_no
* 3 from student ;
select st_no , st_name , st_no
- st_no from student ;
select st_no , st_name , st_no
*3 m from student ;
Select st_no , st_name from
student ;
Select st_no , st_name from
student order by st_no
,st_name ;
Select st_no , st_name from
student order by st_no ;
Select st_no , st_name from
student order by st_no DESC
;
Select st_no , st_name from
student where st_name not
إذا ﻛﺎن اﻟﻤﺘﻐﯿﺮ ﻣﺘﻐﯿﺮ ﺣﺮﻓﻲ ﻓﯿﺠﺐ ﻣﺮاﻋﺎة أن ﺗﻜﻮن: ﻣﻼﺣﻈﺔ
‘ waleed ‘ اﻟﻘﯿﻤﺔ اﻟﻤﺪﺧﻠﺔ ﺑﯿﻦ ﻋﻼﻣﺘﻲ ﺗﻨﺼﯿﺺ
أﻣﺎ ﻓﻲ ﺣﺎﻟﺔ وﺿﻊ اﻟﻤﺘﻐﯿﺮ واﻹﺷﺎرة ﺑﯿﻦ ﻋﻼﻣﺘﻲ ﺗﻨﺼﯿﺺ ﻓﻼداﻋﻲ
‘ & st_enter ' ﻹدﺧﺎﻟﻬﺎ ﺑﯿﻦ ﻋﻼﻣﺘﻲ ﺗﻨﺼﯿﺺ ﻣﺜﻞ
ﻧﻔﺬ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﯿﺔ
.١
SS اﺣﻔﻆ اﻟﺠﻤﻠﺔ ﻓﻲ
.٢
st_no = ﻣﻊ إﺿﺎﻓﺔSS اﺳﺘﺪﻋﻲ اﻟﺠﻤﻠﺔ
12
‘ ﻓﻲ اﻟﻜﻠﻤﺔ وﻣﻮﻗﻌﺔa’ اﻟﺒﺤﺚ ﻋﻦ وﺟﻮد أول ﺣﺮف
.٣
’ ﻓﻲ اﻟﻜﻠﻤﺔ ﯾﺄﺗﻲ ﺑﻤﻮﻗﻊ اﻟﺤﺮف اﻷولa’ وإذا وﺟﺪ أﻛﺜﺮ ﻣﻦ ﺣﺮف
وإذا ﻟﻢ ﯾﺠﺪﻫﺎ ﯾﻄﺒﻊ١ ﻓﺈذا وﺟﺪﻫﺎ ﯾﻄﺒﻊ٣٣ و١١ اﻟﺒﺤﺚ ﻋﻦ
ﺻﻔﺮ
ﻋﺮض ﺑﻌﺾ اﻟﻘﯿﻢ ﻣﻦ اﻟﺠﺪول ﻣﻊ ﻋﺮض ﻧﺎﺗﺞ
( - ، + ، / ، * ) ﻋﻤﻠﯿﺔ ﺣﺴﺎﺑﯿﺔ
ﻋﺮض ﺑﻌﺾ اﻟﻘﯿﻢ ﻣﻦ اﻟﺠﺪول ﻣﻊ ﻋﺮض ﻧﺎﺗﺞ ﻋﻤﻠﯿﺔ ﺣﺴﺎﺑﯿﺔ ﻣﻊ
ﺗﺴﻤﯿﺔ ﻋﻨﻮان اﻟﺤﻘﻞ
ﻋﺮض ﺑﻌﺾ اﻟﻘﯿﻢ ﻣﻦ اﻟﺠﺪول
ﺗﺮﺗﯿﺐ اﻟﺠﺪول ﺣﺴﺐ ﺣﻘﻞ اﻟﺮﻗﻢ ﺛﻢ ﺣﺴﺐ ﺣﻘﻞ اﻻﺳﻢ ﺗﺮﺗﯿﺐ
ﺗﺼﺎﻋﺪي
ﺗﺮﺗﯿﺐ اﻟﺠﺪول ﺣﺴﺐ ﺣﻘﻞ اﻟﺮﻗﻢ ﺗﺮﺗﯿﺐ ﺗﺼﺎﻋﺪي
ﺗﺮﺗﯿﺐ اﻟﺠﺪول ﺣﺴﺐ ﺣﻘﻞ اﻟﺮﻗﻢ ﺗﺮﺗﯿﺐ ﺗﻨﺎزﻟﻲ
( A) ﻋﺮض ﺟﻤﯿﻊ اﻟﻘﯿﻢ اﻟﺘﻲ ﻻ ﯾﺒﺪأ اﻻﺳﻢ ﻓﯿﻬﺎ ﺑـ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
like ‘A%’ ;
Select st_no , st_name from
student where st_name like
‘%A%’ ;
Select st_no , st_name from
student where st_name like
‘%A’ ;
Select st_no , st_name from
student where st_name like
‘A%’ ;
Select st_no , st_name from
student where st_name (‘ali’ ,
‘waleed’ ) ;
Select st_no , st_name from
student where st_no in (4 , 6
, 11 ) ;
Select st_no , st_name from
student where st_no =12 or (
st_name = 'ali' and
st_average =80) ;
sea , lamp ﻣﺜﻞ
( A) ﻋﺮض ﺟﻤﯿﻊ اﻟﻘﯿﻢ اﻟﺘﻲ ﯾﺤﺘﻮي اﻻﺳﻢ ﺣﺮف
ali , amer , hassan , ikea ﻣﺜﻞ
( A) ﻋﺮض ﺟﻤﯿﻊ اﻟﻘﯿﻢ اﻟﺘﻲ ﯾﻨﺘﻬﻲ ﻓﯿﻬﺎ اﻻﺳﻢ ﺑـ
ikea ﻣﺜﻞ
( A) ﻋﺮض ﺟﻤﯿﻊ اﻟﻘﯿﻢ اﻟﺘﻲ اﻻﺳﻢ ﯾﺒﺪأ ﻓﯿﻬﺎ ﺑـ
ali , amer ﻣﺜﻞ
ali or hassan = ﻋﺮض اﻟﻘﯿﻢ اﻟﺘﻲ ﺗﺤﻘﻖ اﻟﺸﺮط
١١ أو٦ أو٤ = ﻋﺮض اﻟﻘﯿﻢ اﻟﺘﻲ ﺗﺤﻘﻖ اﻟﺸﺮط
select ( ﻣﻊor , and ) اﺳﺘﺨﺪام
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
SELECT 4
اﻷﻣﺮ
Select st_no , st_name from student
where st_no >11;
Select st_no , st_name from student
where st_no between 5 and 11 ;
Select st_no , st_name from student
where st_no not between 5 and 11 ;
Select st_no , st_name from student
where st_no not in (4 , 6 , 11 ) ;
select st_no || st_name st from student
;
اﻟﻮﺻﻒ
، >= ، < ، > ، = ) ﻋﺮض اﻟﻘﯿﻢ اﻟﺘﻲ ﺗﺤﻘﻖ اﻟﺸﺮط
( <=
( ١١ ، ٥ ) ﻋﺮض اﻟﻘﯿﻢ اﻟﺘﻲ ﺑﯿﻦ
(١١ ، ٥ ) ﻋﺮض اﻟﻘﯿﻢ اﻟﺘﻲ ﻟﯿﺴﺖ ﺑﯿﻦ
١١ أو٦ أو٤ <> ﻋﺮض اﻟﻘﯿﻢ اﻟﺘﻲ ﺗﺤﻘﻖ اﻟﺸﺮط
ﻟﺠﻤﻊ ﻗﯿﻢ ﺣﻘﻠﯿﻦ ﻓﻲ ﺣﻘﻞ واﺣﺪ
( أو ﺟﺰء ﻣﻦst_name ,st_no) ﻷﺧﺬ ﺟﺰء ﻣﻦ اﻟﺤﻘﻞ
ﻗﯿﻤﺔ ﻣﻌﻄﺎة
Select substr ( st_name , POS, N) ,
substr (st_no , POS ) , substr
(‘waleed’, POS,N) from student ;
select sysdate , sysdate-10 , sysdate+10
,
sysdate - 11/3/1999 from student;
select sysdate from dual ;
( waleed )
ﺑﺪاﯾﺔ اﻟﻘﻄﻊpos
ﻋﺪد اﻷﺣﺮف اﻟﻤﻘﻄﻮﻋﺔN
date + number
-١
date – number
-٢
date – date
sysdate = ﺗﺎرﯾﺦ اﻟﯿﻮم
-٣
dual ﺟﺪول ﯾﺨﺰن ﻓﯿﻪ اﻟﺘﺎرﯾﺦ
select to_char (sysdate , 'DAY , DDTH
MONTH YYYY') ,
إﺷﻜﺎل ﻟﻌﺮض اﻟﺘﺎرﯾﺦ
to_char (sysdate , 'HH:MI:SS') from
dual ;
select to_char (sysdate , 'SCC' ) from
٢٠ ﻋﺮض اﻟﻘﺮن اﻟﺤﺎﻟﻲ
dual ;
select to_char (sysdate,'ww') from dual ﻋﺮض ﻋﺪد اﻷﯾﺎم ﻣﻦ ﺑﺪاﯾﺔ اﻟﺴﻨﺔ ﺣﺘﻰ اﻟﺘﺎرﯾﺦ اﻟﺤﺎﻟﻲ
;
sysdate
select to_date ('june 4 ,1984' ,
ﺗﺤﻮﯾﻞ اﻟﺘﺎرﯾﺦ اﻟﻤﺨﺰن ﻋﻠﻰ ﺷﻜﻞ ﻗﯿﻤﺔ ﺣﺮﻓﯿﺔ إﻟﻰ ﺗﺎرﯾﺦ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
'MONTH DD YYYY') from dual ;
select to_number('123') from dual ;
Select trunc ( sysdate , ‘MONTH’ ) ,
trunc ( sysdate , ‘YEAR’ ) from dual ;
select trunc (st_ digit, 1 ) from student
;
select trunc (st_ digit, 2 ) from student
;
SELECT X.SNo , Y.SNo
FROM S AS X , S AS Y
WHERE X.City = Y.City AND X.SNo
<> Y.SNo ;
١٢٣ = "١٢٣"
ﺗﺤﻮﯾﻞ اﻟﻘﯿﻤﺔ اﻟﺤﺮﻓﯿﺔ إﻟﻰ رﻗﻢ
إﯾﺠﺎد أول ﯾﻮم ﻓﻲ اﻟﺸﻬﺮ واوا ﯾﻮم ﻓﻲ اﻟﺴﻨﺔ
اﻟﺘﻘﺮﯾﺐ ﻣﻊ اﻟﺤﺬف ﺧﺎﻧﺔ ﻋﺸﺮﯾﺔ
اﻟﺘﻘﺮﯾﺐ ﻣﻊ اﻟﺤﺬف ﺧﺎﻧﺘﯿﻦ ﻋﺸﺮﯾﺘﯿﻦ
S AS X
X ﻋﻠﻰ اﻧﻪS ﻓﺘﺢ اﻟﺠﺪول
S AS Y
Y ﻋﻠﻰ اﻧﻪS و ﻓﺘﺢ اﻟﺠﺪول
where واﻟﺬي ﯾﺤﻘﻖ اﻟﺸﺮط ﺑﻌﺪ ﻛﻠﻤﺔ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
DESGRIBE
اﻟﻮﺻﻒ
ﻋﺮض ﻣﻮاﺻﻔﺎت اﻟﺠﺪول student
اﻷﻣﺮ
Describe student
TRANSLATE
اﻟﻮﺻﻒ
اﻷﻣﺮ
اﺳﺘﺒﺪال اﻟﺤﺮف ’ ‘aﺑﺎﻟﺤﺮف ’‘wa
ﯾﺠﺐ أن ﯾﻜﻮن اﻟﺤﺮف ﻓﻲ ﺟﻤﻠﺔ select
ﻣﻄﺎﺑﻖ ﻣﻦ ﺣﯿﺚ ﺣﺎﻟﺔ اﻷﺣﺮف ) ﻛﺒﯿﺮة ،
ﺻﻐﯿﺮة( ﻟﻤﺎ ﻫﻮ ﻣﻮﺟﻮد ﻓﻲ اﻟﺤﻘﻞ
; translate ( st_name ,'a' , 'wa') from student
ﺗﻢ ﺑﺤﻤﺪ اﷲ اﻟﺠﺰء اﻷول ﻣﻦ اﻟﻜﺘﺎب واﻟﻤﺘﻌﻠﻖ ﺑﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت SQLSERVERوﻧﻨﺘﻘﻞ إﻟﻰ
اﻟﺠﺰء اﻟﺜﺎﻧﻲ و اﻟﻤﺘﻌﻠﻖ ﺑﺒﺮﻣﺠﺔ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت داﺧﻞ إﺣﺪى ﻟﻐﺎت اﻟﺒﺮﻣﺠﺔ وﺳﺘﻜﻮن اﻟﻔﯿﺠﻮال
ﺑﯿﺰك ﻣﺤﻮر دراﺳﺘﻨﺎ .
ﻓﻌﻠﻰ ﺑﺮﻛﺔ اﷲ ،،،
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻟﻘﺴﻢ اﻟﺜﺎﻧﻲ :
وﺻﻠﻨﺎ اﻵن إﻟﻰ اﻟﻘﺴﻢ اﻟﺜﺎﻧﻲ واﻟﻤﺘﻌﻠﻖ ﺑﺎﺳﺘﺨﺪام ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻣﻊ ﻟﻐﺔ اﻟﺒﺮﻣﺠﺔ ﻓﯿﺠﻮال ﺑﯿﺰك
ﺳﯿﻜﻮن ﻫﺬا اﻟﻘﺴﻢ ﻋﺒﺎرة ﻋﻦ دروس ﻣﺘﺴﻠﺴﻠﺔ أرﺟﻮ أن ﻧﻜﻮن ﻓﻲ ﻧﻬﺎﯾﺘﻬﺎ ﻗﺎدرﯾﻦ ﻋﻠﻰ ﺑﺮﻣﺠﺔ
ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺑﺸﻜﻞ ﺟﯿﺪ ،،،
ﻋﻠﻰ ﺑﺮﻛﺔ اﷲ ﻧﻨﻄﻠﻖ إﻟﻰ اﻟﺪروس ،،،،
ﻻﺗﻨﺴﻮﻧﺎ ﻣﻦ دﻋﻮة ﺻﺎﻟﺤﺔ ﻓﻲ ﻇﻬﺮ اﻟﻐﯿﺐ ﻟﻲ وﻟﻮاﻟﺪيّ وﻟﻠﻤﺆﻣﻨﯿﻦ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻟﻤﻘﺪﻣﺔ:
ﻛﺎﻧﺖ و ﻣﺎزاﻟﺖ ﺑﺮﻣﺠﺔ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺷﻲء ﻏﺎﻣﺾ ﻟﺪى اﻟﺒﻌﺾ إﻻ ﻣﺎ ﯾﺴﻤﻌﻪ ﻣﻦ ﺻﻌﻮﺑﺘﻬﺎ و
ﺗﻌﻘﯿﺪﻫﺎ ،و ﻻ ﺳﺒﺐ أﻋﺰوه ﻷﺧﺬ ﺗﻠﻚ اﻟﻔﻜﺮة إﻻ ﺿﻌﻒ اﻟﻤﺼﺎدر ﻟﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﻠﻐﺔ اﻟﻌﺮﺑﯿﺔ و
ﻋﺪم ﻣﺤﺎوﻟﺔ ﺗﻌﻠﻤﻬﺎ أو ﻓﻬﻤﻬﺎ ﺑﻄﺮﯾﻘﺔ ﺧﺎﻃﺌﺔ أﻧﺸﺄت ﻟﺪى اﻟﺒﻌﺾ ﻧﻈﺮة ﺳﻠﺒﯿﺔ ﺗﺠﺎﻫﻬﺎ
و ﻧﺤﻦ ﻓﻲ ﻫﺬا اﻟﻤﻮﻗﻊ ﻧﺤﺎول ﺟﺎﻫﺪﯾﻦ أن ﻧﻐﯿﺮ ﻫﺬه اﻟﺼﻮرة و أن ﻧﻨﻄﻠﻖ ﺑﺪرﺟﺔ ﺿﺪ اﻻﺗﺠﺎه اﻟﺴﺎﺋﺪ
ﻋﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و أﻧﺎ واﺛﻖ ﺑﺈذن اﷲ أن ﻣﻦ ﺳﯿﺘﺎﺑﻊ ﻫﺬه اﻟﺪروس ﺳﯿﺨﺮج وﻟﺪﯾﻪ ﺧﻠﻔﯿﺔ ﻛﺎﻣﻠﺔ
ﯾﻨﺎﻓﺲ ﺑﻬﺎ اﻟﻤﺤﺘﺮﻓﯿﻦ ،و ﺳﻨﻨﻬﺞ ﻃﺮﯾﻘﺔ اﻟﺨﻼﺻﺔ و اﻟﺘﻄﺒﯿﻖ ﺑﺤﯿﺚ ﻻ ﯾﻜﺜﺮ اﻟﻜﻼم اﻟﺬي ﻻ ﻃﺎﺋﻞ
ﻣﻨﻪ ﻣﻘﺎﺑﻞ ﺧﺮوﺟﻚ ﻣﺘﻘﻨﺎ اﻟﺪرس ﺑﻌﺪ ﺗﻄﺒﯿﻘﻪ ،ﻛﻤﺎ ﺳﯿﺘﻢ وﺿﻊ ﻣﺜﺎل ﺟﺎﻫﺰ ﻣﺸﺮوح ﺑﺎﻟﻠﻐﺔ اﻟﻌﺮﺑﯿﺔ
ﻟﻜﻞ ﻣﺜﺎل ﻋﻠﻰ ﻫﺬا اﻟﻤﻮﻗﻊ ﻟﻜﻲ ﺗﻘﺎرن ﺑﯿﻦ ﻣﺎ ﻋﻤﻠﺖ و اﻟﺤﻞ اﻟﺼﺤﯿﺢ ﻣﻤﺎ ﯾﺠﻌﻠﻚ ﺗﻜﺘﺸﻒ اﻷﺧﻄﺎء
ﺑﻨﻔﺴﻚ ﻓﯿﻮﻟﺪ ذﻟﻚ ﻟﺪﯾﻚ ﻣﻮﻫﺒﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت.
ﻻ أرﯾﺪ أن أﻃﯿﻞ ﺑﻬﺬه اﻟﻤﻘﺪﻣﺔ ﺧﺼﻮﺻﺎ أﻧﻨﺎ ذﻛﺮﻧﺎ أن ﻣﻨﻬﺠﻨﺎ ﯾﻌﺘﻤﺪ ﻋﻠﻰ اﻟﺨﻼﺻﺔ و اﻟﺘﻄﺒﯿﻖ
اﻟﺪرس١
*
1
DATA
2
اﻟﻜﻮد
3
ADO
ﻃﺮق اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﻓﯿﺠﻮال ﺑﯿﺴﻚ
و ﻫﻲ إﺣﺪى اﻟﻤﻜﻮﻧﺎت اﻟﻤﻮﺟﻮدة ﺿﻤﻨﺎ ﻓﻲ ﻓﯿﺠﻮال ﺑﯿﺴﻚ ﺗﺠﺪﻫﺎ ﻓﻲ ﺻﻨﺪوق اﻷدوات و
ﺗﻌﺘﺒﺮ أداة ﺳﻬﻠﺔ ﻟﺮﺑﻂ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت اﻟﺒﺴﯿﻄﺔ و ﺗﺆدي ﻫﺬه اﻷداة ﺑﻌﺾ اﻹﺟﺮاءات ﻣﺜﻞ
اﻟﺤﺬف و اﻹﺿﺎﻓﺔ و اﻟﺘﺤﺮﯾﺮ و اﻟﺘﺤﺪﯾﺚ ،و ﺳﻨﺸﺮح ﻫﺬه اﻷداة ﺑﺎﻟﺘﻔﺼﯿﻞ ﻓﻲ دروس
ﻗﺎدﻣﺔ.
اﻟﺮﺑﻂ ﺑﺎﻟﻜﻮد ﻃﺮﯾﻘﺔ ﯾﺠﺐ ﻋﻠﻰ ﻛﻞ ﻣﺒﺮﻣﺞ ﻛﻮﻋﺪ ﺑﯿﺎﻧﺎت أن ﯾﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ و ﯾﺘﻘﻨﻬﺎ ﻟﻜﻲ
ﯾﻔﺘﺢ أﻣﺎﻣﻪ أﻓﺎق ﺑﺮﻣﺠﺔ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و ﺣﯿﻦ ﻧﺸﺮﺣﻬﺎ ﺑﺎﻟﺘﻔﺼﯿﻞ ﺳﺘﺠﺪ أﻧﻬﺎ ﻟﯿﺲ ﺑﺘﻠﻚ
اﻟﺼﻌﻮﺑﺔ ﻛﻤﺎ ﺗﺘﻮﻗﻊ ﻣﻦ اﺳﻤﻬﺎ ﻓﻬﻲ ﻋﺒﺎرة ﻋﻦ أواﻣﺮ ﻣﻌﯿﻨﺔ ﺛﺎﺑﺘﺔ ﺗﻘﺮﯾﺒﺎ إذا اﺳﺘﻄﻌﺖ أن
ﺗﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻓﻲ ﻣﺜﺎل واﺣﺪ ﺳﺘﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻓﻲ ﺟﻤﯿﻊ ﻣﺎ ﯾﻮاﺟﻬﻚ ﻣﻦ أﻣﺜﻠﺔ و ﺳﯿﺄﺗﻲ
ﺷﺮﺣﻬﺎ ﻣﻔﺼﻼ
و ﻫﻲ ﺗﻘﻨﯿﺔ ﺟﺪﯾﺪة ﻣﻦ ﻣﺎﯾﻜﺮوﺳﻮﻓﺖ و ﻋﻨﺪﻣﺎ ﺗﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﺳﺘﺠﺪ ﺗﺸﺎﺑﻬﺎ ﺑﯿﻨﻬﺎ و ﺑﯿﻦ
اﻟﻄﺮﯾﻘﺔ اﻷوﻟﻰ اﻟﺘﻲ ذﻛﺮﻧﺎﻫﺎ ﻟﻠﺘﻮ ،وﻟﻜﻦ ﻫﺬه اﻟﻄﺮﯾﻘﺔ ﺗﻌﻄﯿﻚ ﻣﺪى أوﺳﻊ و ﺧﯿﺎرات
أﻓﻀﻞ و ﺳﺘﺴﺘﻤﺘﻊ ﺑﻬﺬه اﻟﻄﺮﯾﻘﺔ ﻋﻨﺪﻣﺎ ﺗﺘﻌﺎﻣﻞ ﻣﻊ ﻣﻨﺸﻲء ﺑﯿﺌﺔ اﻟﺒﯿﺎﻧﺎت اﻟﺬي ﯾﻌﻄﯿﻚ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺗﺤﻜﻢ أﻛﺒﺮ ﻣﻤﺎ ﺗﺘﺼﻮر ﻓﻲ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و ﺑﺴﻬﻮﻟﺔ ﻛﺒﯿﺮة ،أﻋﺮف أﻧﻚ ﻛﻤﺒﺘﺪأ ﻟﻢ
ﺗﺴﺘﻮﻋﺐ اﻟﻜﺜﯿﺮ ﻣﻤﺎ ﻗﻠﺖ ﻟﻜﻦ ﻻ ﺗﻘﻠﻖ ﻓﺴﺘﻔﻬﻢ ذﻟﻚ ﻣﻦ ﺧﻼل اﻟﺪروس اﻟﺘﺎﻟﯿﺔ و ﻣﺎ ذﻛﺮﺗﻪ
ﻫﻨﺎ ﻟﯿﺲ إﻻ ﻟﯿﺠﻌﻞ ﻋﻨﺪك ﻣﻌﺮﻓﺔ ﺑﺴﯿﻄﺔ ﺑﺒﻌﺾ اﻟﻤﺼﻄﻠﺤﺎت اﻟﺘﻲ ﺳﻨﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ ﻻﺣﻘﺎ
ﻣﻨﺸﻲء ﺑﯿﺌﺔ اﻟﺒﯿﺎﻧﺎت و ﻫﻲ ﺗﻘﻨﯿﺔ ﺟﺪﯾﺪة أﯾﻀﺎ ﻓﻲ ﻓﯿﺠﻮال ﺑﯿﺴﻚ ٦وﺗﺘﻌﻠﻖ ﻛﺜﯿﺮا ﺑﺎﻟﺘﻘﻨﯿﺔ
Data
Environment 4اﻟﺴﺎﺑﻘﺔ ﻟﻦ أﻃﯿﻞ اﻟﺘﺤﺪث ﻓﯿﻬﺎ ﻓﺴﻮف ﻧﺮى ﺷﺮﺣﺎ ﻣﻔﺼﻼ ﻟﻬﺎ ﻓﻲ اﻟﺪروس اﻟﻼﺣﻘﺔ ﺑﺈذن
اﷲ ﺗﻌﺎﻟﻰ
Designee
ﻛﻞ ﻣﺎ ﻫﻮ ﻣﻄﻠﻮب ﻣﻨﻚ ﻓﻲ ﻫﺬه اﻟﻤﺮﺣﻠﺔ أن ﺗﻌﺮف أن ﻫﻨﺎك ﻋﺪة ﻃﺮق ﻟﺒﺮﻣﺠﺔ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت
ﺗﺤﺪد أﯾﻬﺎ ﺗﺴﺘﺨﺪم ﻋﻠﻰ ﻗﺪر ﺣﺎﺟﺘﻚ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻛﯿﻒ ﺗﻨﺸﻲء ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻓﻲ ﻓﯿﺠﻮال ﺑﯿﺴﻚ
اﻟﻤﻘﺪﻣﺔ:
ﻫﺬه أوﻟﻰ ﻃﺮق رﺑﻂ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت
ﻟﻜﻲ ﺗﻘﻮم ﺑﺮﺑﻂ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻣﻊ ﺑﺮﻧﺎﻣﺠﻚ ﻓﻲ ﻓﯿﺠﻮال ﺑﯿﺴﻚ ﺳﺘﺤﺘﺎج أوﻻ إﻟﻰ و ﺟﻮد ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت
ﻟﻜﻲ ﺗﺮﺑﻄﻬﺎ ﺑﺒﺮﻧﺎﻣﺠﻚ و ﯾﺘﯿﺢ ﻟﻚ ﻓﯿﺠﻮال ﺑﯿﺴﻚ أن ﺗﺮﺑﻂ ﻣﻊ أﻧﻮاع ﻛﺜﯿﺮ ﻣﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻣﺮورا
ﺑﺄﻛﺴﺲ و ﻟﻮﺗﺲ و اﻧﺘﻬﺎء ﺑﻔﻮﻛﺲ ﺑﺮو و أوراﻛﻞ ،ﻛﻤﺎ ﯾﻮﻓﺮ ﻟﻚ ﻓﯿﺠﻮال ﺑﯿﺴﻚ ﻋﻤﻞ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت
ﺑﻮاﺳﻄﺔ ﺑﺮﻧﺎﻣﺞ ﻣﻠﺤﻖ ﻣﻌﻪ و ﻫﻮ ﻏﺎﻟﺒﺎ ﯾﻔﻲ ﺑﺤﺎﺟﺘﻚ ﺳﯿﻜﻮن درﺳﻨﺎ ﻫﺬا ﻫﻮ إﻧﺸﺎء ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت
ﺑﻬﺬا اﻟﺒﺮﻧﺎﻣﺞ اﻟﻤﺮﻓﻖ ﻣﻊ ﻓﯿﺠﻮال ﺑﯿﺴﻚ
اﻟﺪرس٢
ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺳﻨﻨﺸﺄﻫﺎ ﺗﺤﺘﻮي ﺟﺪول ﯾﺤﺘﻮي ﻋﻠﻰ أﺳﻤﺎء اﻟﻄﻼب و أرﻗﺎﻣﻬﻢ
اﻟﺨﻄﻮة اﻷوﻟﻰ ﻓﺘﺢ ﻓﯿﺠﻮال ﺑﯿﺴﻚ ﻛﺎﻟﻤﻌﺘﺎد و ﻣﻦ ﺛﻢ اﻟﺬﻫﺎب إﻟﻰ ﻗﺎﺋﻤﺔ
Add-ins >> visual data manager...
ﺑﻌﺪ ذﻟﻚ ﺳﺘﻔﺘﺢ ﻟﻚ ﻧﺎﻓﺬة اﻟﺒﺮﻧﺎﻣﺞ أذﻫﺐ إﻟﻰ
File>>new>>microsoft access>>version 7.0 mdb..
ﺳﯿﻈﻬﺮ ﻟﻚ ﻣﺮﺑﻊ ﺣﻔﻆ ﺣﺪد اﻟﻤﻮﻗﻊ اﻟﺬي ﺗﺮﯾﺪ أن ﺗﺤﻔﻆ ﻓﯿﻪ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎﺗﻚ ﺛﻢ اﺧﺘﺮ ﺣﻔﻆ
ﺑﻌﺪ ذﻟﻚ ﺳﺘﻈﻬﺮ ﻟﻚ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺣﺪد
properties
ﺑﺎﻟﺰر اﻷﯾﻤﻦ ﺛﻢ أﺧﺘﺮ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
New Table
ﺑﻌﺪ ذﻟﻚ ﺳﺘﻔﺘﺢ ﻟﻚ ﻧﺎﻓﺬة ﺗﻜﺘﺐ ﻓﯿﻬﺎ اﺳﻢ اﻟﺠﺪول و ﺛﻢ ﻧﺬﻫﺐ ﻹﺿﺎﻓﺔ اﻟﺤﻘﻮل ﻛﻤﺎ ﻫﻮ ﻣﺒﯿﻦ
ﺳﯿﻔﺘﺢ ﻟﻨﺎ ﻧﺎﻓﺬة إﺿﺎﻓﺔ اﻟﺤﻘﻮل ﻧﻜﺘﺐ اﺳﻢ اﻟﺤﻘﻞ ﻓﻲ اﻟﻤﻜﺎن اﻟﻤﺨﺼﺺ و ﻧﺤﺪد ﻧﻮع ﺑﯿﺎﻧﺎت اﻟﺤﻘﻞ
ﻫﻞ ﻫﻲ رﻗﻤﯿﺔ أو ﺣﺮﻓﯿﺔ اﻟﺦ ،و ﻧﻜﺮر اﻟﻌﻤﻠﯿﺔ ﺣﺘﻰ ﻧﻨﻬﻲ ﺟﻤﯿﻊ اﻟﺤﻘﻮل اﻟﺘﻲ ﻧﺮﯾﺪﻫﺎ و ﻓﻲ ﻣﺜﺎﻟﻨﺎ
ﻫﺬا ﻧﺮﯾﺪ ﺣﻘﻠﯿﻦ اﻷول اﺳﻤﻪ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
name
و ﻧﻮع ﺑﯿﺎﻧﺎﺗﻪ
text
و اﻟﺜﺎﻧﻲ
number
و ﻧﻮع ﺑﯿﺎﻧﺎﺗﻪ
long
ﻣﻼﺣﻈﺔ ﻣﻬﻤﺔ إذا ﻛﺎن ﻣﺎﺳﯿﻜﺘﺐ ﻓﻲ اﻟﺤﻘﻞ ﻣﻦ أرﻗﺎم ﺧﻤﺴﺔ أرﻗﺎم أو أﻗﻞ ﻧﺨﺘﺎر ﻧﻮع اﻟﺒﯿﺎﻧﺎت
integer
و ﻟﻸرﻗﺎم اﻟﻄﻮﯾﻠﺔ ﻧﺨﺘﺎر
Long
ﺑﺬﻟﻚ ﻧﻜﻮن ﻗﺪ أﻧﺸﺄﻧﺎ ﻗﺎﻋﺪ ﺑﯿﺎﻧﺎت ﺗﺤﺘﻮي ﻋﻠﻰ ﺟﺪول ﺑﻪ ﺣﻘﻠﯿﻦ اﻻﺳﻢ و اﻟﺮﻗﻢ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
رﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎﺳﺘﺨﺪام اﻷداة data
اﻟﻤﻘﺪﻣﺔ:
ﺑﻌﺪ أن ﻗﻤﻨﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﺑﺈﻧﺸﺎء ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺗﺄﺗﻲ اﻟﺨﻄﻮة اﻟﺘﺎﻟﯿﺔ وﻫﻲ أول ﺧﻄﻮة ﻟﻚ ﻓﻲ
رﺑﻂ ﻗﺎﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺳﻨﻘﻮم ﺑﺮﺑﻂ اﻟﻘﺎﻋﺪة اﻟﺘﻲ أﻧﺸﺄﻧﻬﺎ و اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﺣﻘﻠﯿﻦ ﻫﻤﺎ اﺳﻢ اﻟﻄﺎﻟﺐ و
رﻗﻤﻪ و اﻵن ﻟﻨﻨﻄﻠﻖ ﻟﻠﺨﻄﻮة اﻟﺘﺎﻟﯿﺔ
اﻟﺪرس٣
ﺗﻔﺘﺢ ﻣﺸﺮوع ﺟﺪﯾﺪ ﺛﻢ ﺗﻀﯿﻒ اﻷداة dataﻣﻦ ﺻﻨﺪوق اﻷدوات ﻛﻤﺎ ﻓﻲ اﻟﺸﻜﻞ
ﻧﺮﺳﻢ اﻷداة ﻋﻠﻰ اﻟﻔﻮرم و أﯾﻀﺎ ﻧﺮﺳﻢ ﺻﻨﺪوﻗﻲ ﻧﺺ ﻟﻜﻲ ﻧﻈﻬﺮ ﻓﯿﻬﻤﺎ اﻟﺤﻘﻮل
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻵن ﺳﻨﻘﻮم ﺑﺮﺑﻂ ﻣﺮﺑﻌﺎت اﻟﻨﺺ ﻣﻊ ﻛﺎﺋﻦ اﻟﺒﯿﺎﻧﺎت و ﺳﻨﻮرد أوﻻ ﺧﺼﺎﺋﺺ ﻛﺎﺋﻦ data
ﻣﻦ ﻣﺮﺑﻊ اﻟﺨﺼﺎﺋﺺ ﻧﻀﺒﻂ اﻟﺨﺼﺎﺋﺺ اﻟﺘﺎﻟﯿﺔ ﻟﻸداة data
اﻟﺠﺪول اﻟﺘﺎﻟﻲ و ﺑﺎﻟﻨﺴﺒﺔ ﻟﻤﺮﺑﻌﻲ اﻟﻨﺺ ﻧﻀﺒﻂ ﺧﺼﺎﺋﺼﻬﻤﺎ ﻛﻤﺎ ﻓﻲ
اﺳﻢ اﻟﺨﺎﺻﯿﺔ
datasource
ﻗﯿﻤﺘﻬﺎ
data1
datafield
اﺳﻢ اﻟﺤﻘﻞ اﻟﻤﺮاد اﻟﺮﺑﻂ ﻣﻌﻪ
ﺷﺮح
وﻫﻮ اﺳﻢ اﻟﻜﺎﺋﻦ اﻟﺬي ﺳﯿﺮﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
ﻃﺒﻌﺎ ﯾﻮﺟﺪ ﻟﺪﯾﻨﺎ ﻣﺮﺑﻌﻲ ﻧﺺ ﻟﻜﻞ واﺣﺪ ﻗﯿﻤﺔ ﻣﺨﺘﻠﻔﺔ
ﻟﻜﻲ ﯾﻜﻮن أﺣﺪﻫﺎ ﻻﺳﻢ اﻟﻄﺎﻟﺐ و اﻵﺧﺮ ﻟﺮﻗﻤﻪ
ﻫﻜﺬا ﺗﻜﻮن ﻗﺪ رﺑﻄﺖ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎﺗﻚ ﻓﻲ ﺑﺮﻧﺎﻣﺞ و ﻟﺘﺮى اﻟﻨﺘﯿﺠﺔ ﻗﻢ ﺑﺘﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ و ذﻟﻚ
ﺑﻀﻐﻂ F5
ﻃﺒﻌﺎ ﻟﻦ ﯾﻈﻬﺮ ﻟﻚ ﺷﻲء ﻷن ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻓﺎرﻏﺔ و ﻟﻜﻲ ﻧﻘﻮم ﺑﻮﺿﻊ ﺑﻌﺾ اﻟﺤﻘﻮل ﻗﻢ ﺑﺎﻟﺘﺎﻟﻲ
ﺷﻐﻞ ﻣﻨﺸﻲء ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ و اذﻫﺐ إﻟﻰ
File>>Opendatabase>>microsoft access
ﺳﯿﻔﺘﺢ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎﺗﻚ و ﺳﯿﻈﻬﺮ اﺳﻢ اﻟﺠﺪول اﻟﺬي أﻧﺸﺄﺗﻪ ﻗﻢ ﺑﺎﻟﻨﻘﺮ ﻋﻠﯿﻪ ﻣﺮﺗﯿﻦ و ﺳﯿﻔﺘﺢ ﻟﻚ ﻧﺎﻓﺬة
أﺿﻒ ﻣﻨﻬﺎ ﻣﺎ ﺗﺮﯾﺪ ﻣﻦ ﺳﺠﻼت
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
إﺿﺎﻓﺔ ﻛﺎﺋﻦ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﺧﺼﺎﺋﺼﻪ
رﺑﻂ اﻟﻜﺎﺋﻦ ﻣﻊ ﻣﺮﺑﻌﺎت اﻟﻨﺺ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
رﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎﺳﺘﺨﺪام اﻟﻤﻌﺎﻟﺞ اﻟﺴﺤﺮي
اﻟﻤﻘﺪﻣﺔ:
ﻻ ﯾﻌﻨﻲ ﻛﺘﺎﺑﺘﻚ ﻟﻤﺌﺎت اﻷﺳﻄﺮ ﻣﻦ اﻟﻜﻮد و ﺑﺤﺜﻚ ﻋﻦ اﻟﻄﺮق اﻟﺼﻌﺒﺔ وﻋﺪم اﺳﺘﺨﺪام ﻣﺎ ﯾﺴﺎﻋﺪك
أﻧﻚ اﻟﻤﺒﺮﻣﺞ اﻟﻤﺤﺘﺮف ﺑﻞ اﻟﻌﻜﺲ ﻓﺈن ذﻟﻚ ﺳﯿﻀﯿﻊ وﻗﺘﻚ و ﺗﻜﻮن ﻛﻤﻦ وﺿﻊ ﺟﻬﺪا ﻣﺎ ﻛﺎن ﯾﺠﺐ
ﻋﻠﯿﻪ ﻓﻌﻠﻪ ﻟﻮﺟﻮد ﻃﺮق أﺳﻬﻞ و إن اﺳﺘﻤﺮﯾﺖ ﻋﻠﻰ ﻫﺬه اﻟﺤﺎﻟﺔ ﻓﻤﺼﯿﺮك اﻟﻤﺼﺢ اﻟﻨﻔﺴﻲ
أﻧﺖ ﻛﻤﺒﺮﻣﺞ ﯾﺠﺐ أن ﺗﺒﺤﺚ ﻋﻦ اﻟﻄﺮق اﻟﺴﻬﻠﺔ ﻟﻜﻲ ﺗﺆدي ﻋﻤﻠﻚ ﺑﺴﻼﺳﺔ و ﺗﻮﻓﺮ ﺟﻬﺪك ﻟﻤﺎ
ﯾﺴﺘﺤﻖ وﻫﺬا ﻻ ﯾﻘﻠﻞ ﻣﻦ ﺷﺄﻧﻚ ﻛﻤﺒﺮﻣﺞ ،ﻃﺒﻌﺎ ﻻ ﯾﺠﺐ أن ﺗﻨﺘﻘﻞ إﻟﻰ ﻫﺬه اﻟﻤﺮﺣﻠﺔ إﻻ ﺑﻌﺪ أن ﺗﺘﻘﻦ
اﻟﻄﺮﯾﻘﺔ اﻷﺻﻌﺐ ﻟﻠﺘﻌﺎﻣﻞ ﻣﻊ اﻷﺳﻬﻞ ﺑﯿﺴﺮ و ﺳﻬﻮﻟﺔ ﻛﻤﺎ ﺳﺘﺮى ﻓﻲ درﺳﻨﺎ ﻫﺬا ﻫﯿﺎ ﺑﻨﺎ ﻧﻨﻄﻠﻖ
ﻟﻠﺪرس
اﻟﺪرس٤
أذﻫﺐ إﻟﻰ ﻗﺎﺋﻤﺔ Add-insو اﺧﺘﺮ اﻻﺧﺘﯿﺎر Add-in managerﺳﯿﻔﺘﺢ ﻟﻚ ﻧﺎﻓﺬة اﻧﻘﺮ ﻧﻘﺮا
ﻣﺰدوﺟﺎ ﻋﻠﻰ اﻟﺴﻄﺮ Vb 6 Data FormWizardﯾﺠﺐ أن ﺗﻈﻬﺮ اﻟﻌﺒﺎرة اﻟﺘﺎﻟﯿﺔ ﺑﺠﺎﻧﺐ
اﻟﺴﻄﺮ loadedﺑﻌﺪ ذﻟﻚ اﺧﺘﺮ ﻣﻮاﻓﻖ و اذﻫﺐ إﻟﻰ اﻟﻘﺎﺋﻤﺔ Add-Insاﺿﻐﻂ ﻋﻠﻰ اﻟﺨﯿﺎر اﻟﺘﺎﻟﻲ
Data Form Wizardﺳﺘﻈﻬﺮ ﻟﻚ ﻧﺎﻓﺬة اﻟﻤﻌﺎﻟﺞ اﻟﺴﺤﺮي ﻗﻢ ﺑﺎﺧﺘﯿﺎر Nextاﺧﺘﺮ ﻧﻮع ﻗﺎﻋﺪة
اﻟﺒﯿﺎﻧﺎت و ﻫﻮ ﻓﻲ ﺣﺎﻟﺘﻨﺎ Accessو اﺧﺘﺮ Nextﺣﺪد ﻣﻮﻗﻊ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﻤﺮاد رﺑﻄﻬﺎ و ذﻟﻚ
ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ Browseﺑﻌﺪ ذﻟﻚ اﺧﺘﺮ اﺳﻤﺎ ﻟﻠﻔﻮرم و ﺣﺪد ﻃﺮﯾﻘﺔ اﻟﺮﺑﻂ و اﻟﻌﺮض ﻛﻤﺎ ﻗﻮ ﻣﺒﯿﻦ ﺛﻢ
اﺿﻐﻂ ﻋﻠﻰ Next
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺑﻌﺪ ذﻟﻚ ﺣﺪد اﺳﻢ اﻟﺠﺪول اﻟﻤﺮاد رﺑﻄﻪ ﻣﻦ اﻟﺤﻘﻞ Record sourceواﻟﺤﻘﻮل اﻟﻤﺮاد ﻇﻬﻮرﻫﺎ ﻣﻦ
اﻟﻘﺎﺋﻤﺔ available fieldsو ذﻟﻚ ﻋﻦ ﻃﺮﯾﻖ ﺗﺤﺪﯾﺪ اﻟﺤﻘﻞ و اﻟﻀﻐﻂ ﻋﻠﻰ اﻷﺳﻬﻢ اﻟﺘﻲ ﻓﻲ
اﻟﻤﻨﺘﺼﻒ ﺑﻌﺪ ذﻟﻚ ﺣﺪ اﻟﺤﻘﻞ اﻟﺬي ﺗﺮﯾﺪ أن ﯾﻜﻮن اﻟﻔﺮز ﻋﻠﻰ أﺳﺎﺳﻪ و ذﻟﻚ ﻣﻦ column to sort
byﺑﻌﺪ ذﻟﻚ اﺿﻐﻂ Nextو ﺳﺘﺄﺗﯿﻚ ﻧﺎﻓﺬة ﻟﺘﺤﺪد اﻷزرار اﻟﺘﻲ ﺗﺮﯾﺪﻫﺎ أن ﺗﻈﻬﺮ ﻓﻲ ﻣﺸﺮوﻋﻚ ﻣﺜﻞ
ﺣﺬف و إﺿﺎﻓﺔ و ﺗﺤﺪﯾﺚ و ﻣﺎ ﺷﺎﺑﻪ ﺣﺪد ﻣﺎ ﺗﺮﯾﺪ ﺛﻢ اﺧﺘﺮ Nextﺛﻢ Finish
اﻻﻓﺘﺮاﺿﯿﺔ ﻋﻨﺪ ﺗﺸﻐﯿﻞ اﻟﺒﺮﻧﺎﻣﺞ و ﺳﺘﻈﻬﺮ ﻟﻚ اﻵن اﻟﻨﺎﻓﺬة اﻟﺘﻲ أﻧﺸﺄﻧﺎﻫﺎ و ﻟﻜﻦ ﯾﺠﺐ أن ﺑﺠﻌﻠﻬﺎ
ﺛﻢ ﺣﺪد اﻟﻔﻮرم اﻟﺬي ﺗﺮﯾﺪ أن Project>>project1proprtis..ﻟﻜﻲ ﺗﺠﻌﻠﻬﺎ ﻛﺬاﻟﻚ اذﻫﺐ إﻟﻰ
form11و ﻫﻲ ﻓﻲ ﺣﺎﻟﺘﻨﺎ Startup Objectاﻟﻘﺎﺋﻤﺔ ﺗﺠﻌﻠﻪ اﻓﺘﺮاﺿﻲ ﻣﻦ
ﻗﻢ ﺑﺘﺸﻐﯿﻞ اﻟﺒﺮﻧﺎﻣﺞ و اﻧﻈﺮ ﻟﻤﺎ ﻋﻤﻠﺖ .....ﻫﻞ أﻧﺖ ﺳﻌﯿﺪ ﺑﺎﻟﻨﺘﯿﺠﺔ رﻏﻢ أﻧﻬﺎ ﻟﻢ ﺗﺄﺧﺬ ﺟﻬﺪا ﻣﻨﺎ
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
إﺿﺎﻓﺔ اﻟﻤﻌﺎﻟﺞ اﻟﺴﺤﺮي ﻟﻠﻘﺎﺋﻤﺔ Add-Ins
اﻟﺘﻌﺎﻣﻞ و ﻓﻬﻢ ﺧﻄﻮات اﻟﻤﻌﺎﻟﺞ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻣﻘﺪﻣﺔ ﻋﻦ رﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﻜﻮد١
اﻟﻤﻘﺪﻣﺔ:
اﻟﺪروس اﻟﺘﻲ ﺷﺮﺣﻨﺎﻫﺎ ﻛﺎﻧﺖ ﻣﻘﺪﻣﺔ ﻟﺒﺮﻣﺠﺔ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻟﻜﻨﻬﺎ ﻓﻲ اﻟﻮﻗﺖ ذاﺗﻪ ﻣﻬﻤﺔ ﻟﻜﻲ ﺗﻜﻮن
اﻷﺳﺎس اﻟﺬي ﺳﻨﺒﻨﻲ ﻋﻠﯿﻪ اﻟﺪروس اﻟﻘﺎدﻣﺔ ،ﻃﺒﻌﺎ ﯾﻬﻤﻨﺎ ﺑﺎﻟﺪرﺟﺔ اﻷوﻟﻰ أن ﻧﺴﺘﻄﯿﻊ أن ﻧﻮﺻﻞ
ﻃﺮﯾﻘﺔ اﻟﺘﻔﻜﯿﺮ ﻟﺪﯾﻚ إﻟﻰ اﻟﻤﺴﺘﻮى اﻷﻣﺜﻞ ﻣﻦ ﺣﯿﺚ أن اﻟﺒﺮﻣﺠﺔ ﯾﺠﺐ أن ﺗﻜﻮن ﻣﺒﺮﻣﺠﺔ ﻓﻲ ذﻫﻨﻚ
ﻟﻜﻲ ﺗﻨﻔﺬﻫﺎ ﻋﻠﻰ اﻟﻮاﻗﻊ ،و ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﺗﺤﺘﻮي ﻋﻠﻰ ﺟﻤﻠﺔ ﻣﻦ اﻷﻓﻜﺎر و اﻟﺤﯿﻞ اﻟﺜﺎﺑﺘﺔ ﺗﻘﺮﯾﺒﺎ
ﻓﻤﺠﺮد ﺗﻄﺒﯿﻘﻚ ﻟﻬﺎ ﻣﻦ ﺧﻼل اﻷﻣﺜﻠﺔ و اﻟﺪروس اﻟﻘﺎدﻣﺔ ﯾﻌﻨﻲ أﻧﻚ ﻗﺪ ﺗﻤﻜﻨﺖ ﻣﻦ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ و
ﻓﻬﻤﻬﺎ و ﺳﺘﺴﺘﺨﺪﻣﻬﺎ ﻓﻲ ﺟﻤﯿﻊ ﻣﺸﺎرﯾﻌﻚ ،ﻟﺬﻟﻚ أﺣﺐ أن اﻧﻮه ﻋﻠﻰ ﻋﺪم ﺗﺮك ﺑﻌﺾ اﻟﻨﻘﺎط ﻓﻲ
اﻟﺪروس ﻻﻋﺘﻘﺎدك ﺑﻌﺪم أﻫﻤﯿﺘﻬﺎ ﺑﻞ ﺧﺬ ﻛﻞ ﺷﻲء ﻋﻠﻰ ﻣﺤﻤﻞ اﻟﺠﺪ ﻓﻘﺪ ﺗﺴﺘﻐﺮب ﻣﻦ ﺑﻌﺾ اﻷﻣﻮر و
ﺳﺘﻘﻮل أن ﻫﺬا ﻟﯿﺲ ﻣﺴﺘﻮى اﻟﺒﺮﻣﺠﺔ ﺑﻞ اﻟﺒﺮﻣﺠﺔ أﻋﻠﻰ ﺑﻜﺜﯿﺮ ﻣﻦ ذﻟﻚ ،و ﻫﺬا ﻗﻮل ﺧﺎﻃﻲء ﻓﺴﺘﺠﺪ
ﺑﻌﺪ اﻧﺘﻬﺎﺋﻚ ﻣﻦ اﻏﻠﺐ اﻟﺪروس أن اﻟﺒﺮاﻣﺞ اﻟﻜﺒﯿﺮة اﻟﺘﻲ ﻛﻨﺖ ﺗﻌﺘﻘﺪ أﻧﻬﺎ ﻣﻦ اﻟﻤﻌﺠﺰات ﻗﺪ ﻋﻤﻠﺖ
ﺑﻄﺮق ﻗﺪ ﺗﺤﺘﻘﺮﻫﺎ إن ﺻﺢ اﻟﺘﻌﺒﯿﺮ ﻟﺬﻟﻚ اﻋﻠﻢ أن اﻟﺒﺮﻣﺠﺔ ﻗﺎﺋﻤﺔ ﻋﻠﻰ أﻓﻜﺎر و ﺣﯿﻞ ﺛﺎﺑﺘﺔ ﺗﻘﺮﯾﺒﺎ و
أﻧﺖ ﺗﺴﺨﺮﻫﺎ ﻟﻠﻌﻤﻞ اﻟﺬي ﺗﺮﯾﺪه و ﺗﺼﻨﻊ ﻣﻨﻬﺎ ﻣﺎ ﺗﺮﯾﺪ ،و اﻵن دﻋﻮﻧﺎ ﻧﺬﻫﺐ ﻟﻠﺪرس اﻟﺬي ﺳﯿﻜﻮن
اﻧﻄﻼﻗﺘﻚ إﻟﻰ اﻟﺒﺮﻣﺠﺔ ﺑﻮاﺳﻄﺔ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت و ﺳﯿﻜﻮن ﻣﺠﺮد ﻣﻘﺪﻣﺔ ﻓﻘﻂ
اﻟﺪرس٥
ﻟﻜﻲ ﺗﺮﺑﻂ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺑﺎﻟﻜﻮد ﯾﺠﺐ أن ﯾﻜﻮن ﻟﺪﯾﻚ اﻷﺗﻲ:
-١ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺟﺎﻫﺰة و ﯾﻔﻀﻞ أن ﯾﻮﺟﺪ ﺑﻬﺎ ﺑﻌﺾ اﻟﺤﻘﻮل اﻟﺠﺎﻫﺰة
-٢ﻣﻌﺮﻓﺔ ﺟﯿﺪة ﺑﺈﺿﺎﻓﺔ أدوات اﻟﺘﺤﻜﻢ اﻷﺳﺎﺳﯿﺔ ﻣﺜﻞ اﻷزرار و اﻟﻌﻨﺎوﯾﻦ و ﻣﺮﺑﻌﺎت اﻟﻨﺺ ﻻن
اﻟﺪروس ﻟﻦ ﺗﺤﺘﻮي ﻋﻠﻰ ﻫﺬه اﻟﺘﻔﺎﺻﯿﻞ ﻷﻧﻬﺎ ﻣﻦ اﻷﺳﺎﺳﯿﺎت
-٣ﯾﺠﺐ أن ﺗﻌﺮف أن ﻛﻞ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻋﺒﺎرة ﻋﻦ ﺳﺠﻼت وﻛﻞ ﺳﺠﻞ ﻋﺒﺎرة ﻋﻦ ﺣﻘﻮل
اﻟﻜﻼم اﻟﺘﺎﻟﻲ رﺑﻤﺎ ﻟﻦ ﺗﻔﻬﻢ ﻣﻨﻪ اﻟﻜﺜﯿﺮ ﻟﻜﻨﻪ ﻣﻬﻢ ﺣﯿﺚ ﺳﺘﻌﺮﻓﻪ ﻓﻲ اﻟﺪروس اﻟﻘﺎدﻣﺔ ﻟﺬا ﻻ ﺗﻬﻤﻠﻪ
ﻋﻨﺪﻣﺎ ﻧﺮﯾﺪ رﺑﻂ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺑﺎﻟﻜﻮد ﯾﺠﺐ أن ﻧﻌﻠﻦ ﻋﻦ ﻣﺘﻐﯿﺮﯾﻦ ﻓﻲ ﻣﻮدﯾﻮل ﻋﻠﻰ أﻧﻬﻤﺎ ﻗﺎﻋﺪة
ﺑﯿﺎﻧﺎت و ﺟﺪول و ﻧﻀﻊ اﻟﻘﺎﻋﺪة اﻷﺻﻠﯿﺔ ﻓﻲ اﻟﻤﺘﻐﯿﺮ اﻟﺬي أﻧﺸﺄﻧﺎه ﻟﻜﻲ ﻻ ﺗﺘﻐﯿﺮ اﻟﻘﯿﻢ اﻷﺻﻠﯿﺔ ﻋﻨﺪ
اﻟﻤﻌﺎﻟﺠﺔ اﻟﻘﯿﻢ اﻟﻤﺆﻗﺘﺔ ،ﻃﺒﻌﺎ ﻧﻀﻊ ﻣﺎ ذﻛﺮﻧﺎ ﻓﻲ ﻣﻮدﯾﻮل و ﻧﺠﻌﻠﻪ اﻷﺳﺎﺳﻲ ﻋﻨﺪ اﻟﺘﺤﻤﯿﻞ ﺛﻢ ﻧﻈﻬﺮ
ﺑﻌﺪ ذﻟﻚ اﻟﻔﻮرم ﻟﻜﻲ ﯾﺘﻢ ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮﯾﻦ و إﺳﻨﺎد ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻟﻠﻤﺘﻐﯿﺮ ،ﻃﺒﻌﺎ ﻟﻦ ﻧﺴﻨﺪ ﻗﯿﻤﻪ
ﻟﻠﺠﺪول إﻻ ﻓﻲ اﻟﻔﻮرم و ﻋﺎدة ﻓﻲ ﺣﺪث اﻟﺘﺤﻤﯿﻞ loadﻻ ﺗﺴﺄل ﻋﻦ اﻟﺴﺒﺐ اﻵن ﺳﺘﻌﺮف ﻓﯿﻤﺎ ﺑﻌﺪ
و اﻵن ﺳﺄذﻛﺮ اﻟﺨﻄﻮات اﻟﻤﻨﻄﻘﯿﺔ اﻟﺘﻲ ﺳﯿﻔﻌﻠﻬﺎ اﻟﺒﺮﻧﺎﻣﺞ ﺑﻌﺪ ﺑﺮﻣﺠﺘﻪ ﻟﻜﻲ ﺗﻜﻮن ﻓﻲ اﻟﺼﻮرة
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
.١ﻋﻨﺪ ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ ﺳﯿﺬﻫﺐ ﻟﻠﻤﻮدﯾﻮل وﺳﯿﺠﺪ ﻣﺘﻐﯿﺮ ﯾﺤﺘﻮي ﻋﻠﻰ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت و
ﺳﯿﺘﻌﺮف ﻋﻠﯿﻬﺎ و ﺳﯿﺠﺪ أﻣﺮ ﯾﺄﻣﺮه ﺑﺎﻻﻧﺘﻘﺎل ﻟﻠﻔﻮرم اﻟﺮﺋﯿﺴﻲ
.٢ﺳﯿﺠﺪ ﻋﻨﺪ ﺗﺤﻤﯿﻞ اﻟﻔﻮرم ﺟﺪول ﯾﺤﺘﻮي ﻋﻠﻰ ﺑﯿﺎﻧﺎت ﻟﻜﻦ ﻣﻦ أﯾﻦ ﻫﺬه اﻟﺒﯿﺎﻧﺎت؟ إﻧﻬﺎ ﻣﻦ
اﻟﻘﺎﻋﺪة اﻟﺘﻲ ﺗﻌﺮف ﻋﻠﯿﻬﺎ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ اﻟﺨﻄﻮة اﻷوﻟﻰ
.٣ﺳﯿﺠﺪ ﺷﺮط ﯾﻘﻮل إذا ﻛﺎن اﻟﺠﺪول ﯾﺤﺘﻮي ﻋﻠﻰ ﺑﯿﺎﻧﺎت ﻓﻘﻢ ﺑﺈﻇﻬﺎرﻫﺎ ﻋﻠﻰ ﻣﺮﺑﻊ اﻟﻨﺺ أو
اﻟﻘﺎﺋﻤﺔ ﺣﺴﺐ ﻣﺎ ﺣﺪده اﻟﻤﺒﺮﻣﺞ اﻟﺬي ﻫﻮ أﻧﺖ
ﻫﺬه ﻫﻲ اﻟﻔﻜﺮة اﻷﺳﺎﺳﯿﺔ ﻹﻇﻬﺎر اﻟﺒﯿﺎﻧﺎت أو ﺑﺎﻷﺣﺮى ﻋﻨﺪ ﺗﺸﻐﯿﻞ اﻟﺒﺮﻧﺎﻣﺞ و اﻵن ﻛﯿﻒ ﯾﻘﻮم
اﻟﺒﺮﻧﺎﻣﺞ ﺑﺤﻔﻆ اﻟﺘﻐﯿﯿﺮات اﻟﺠﺪﯾﺪة
.١ﻋﻨﺪﻣﺎ ﯾﻀﻐﻂ اﻟﻤﺴﺘﺨﺪم ﻋﻠﻰ زر أﺿﺎﻓﻪ ﻗﻢ ﺑﺈﺿﺎﻓﺔ ﺳﺠﻞ ﺟﺪﯾﺪ
.٢ﻋﻨﺪﻣﺎ ﯾﻘﻮم اﻟﻤﺴﺘﺨﺪم ﺑﻀﻐﻂ زر ﺣﻔﻆ ﻗﻢ ﺑﺄﺧﺬ اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻣﺮﺑﻌﺎت اﻟﻨﺺ و ﺿﻌﻬﺎ ﻓﻲ
اﻟﺤﻘﻮل اﻟﻤﻮازﯾﺔ ﻟﻬﺎ و اﺣﻔﻈﻪ
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
ﻣﻌﺮﻓﺔ ﻃﺮﯾﻘﺔ ﻋﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ
اﻟﺨﻄﻮات اﻟﺘﻲ ﯾﺘﺒﻌﻬﺎ اﻟﺒﺮﻧﺎﻣﺞ ﻋﻨﺪ اﻟﺘﺸﻐﯿﻞ و ﻋﻨﺪ إﻇﻬﺎر اﻟﺒﯿﺎﻧﺎت وﻋﻨﺪ اﻟﺤﻔﻆ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
رﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﻜﻮد ٢
اﻟﻤﻘﺪﻣﺔ:
ﺑﻌﺪ أن أﺧﺬﻧﺎ ﻣﻘﺪﻣﺔ ﻋﻦ ﻃﺮﯾﻘﺔ اﻟﺮﺑﻂ ﺑﺎﻟﻜﻮد ﺳﻨﺄﺧﺬ اﻵن اﻟﺘﻄﺒﯿﻖ اﻟﻔﻌﻠﻲ ﻟﻠﺮﺑﻂ ﺑﺎﻟﻜﻮد ،ﺳﯿﻜﻮن
ﻣﺸﺮوﻋﻨﺎ ﻋﺒﺎرة ﻋﻦ ﺑﺮﻧﺎﻣﺞ ﻟﺤﻔﻆ اﺳﻢ اﻟﺴﻠﻌﺔ و ﺳﻌﺮﻫﺎ ،و ﻛﻞ ﻣﺎ ﻧﺮﯾﺪه ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﻫﻮ
رﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﻜﻮد و ﺣﻔﻆ اﻻدراﺟﺎت اﻟﺠﺪﯾﺪة واﻟﺤﺬف و ﺳﻨﺄﺟﻞ اﻟﺒﺤﺚ ﻟﻠﺪروس اﻟﻘﺎدﻣﺔ
ﻋﻨﺪﻣﺎ ﻧﺄﺧﺬ ﻣﺒﺎديء SQLﻟﻐﺔ اﻻﺳﺘﻌﻼم ﺣﯿﺚ ﺳﯿﻜﻮن اﻟﺒﺤﺚ ﻣﻌﻬﺎ ﻓﻲ ﻏﺎﯾﺔ اﻟﺴﻬﻮﻟﺔ و اﻟﺒﺴﺎﻃﺔ
و اﻵن دﻋﻮﻧﺎ ﻧﺒﺪأ اﻟﺪرس
اﻟﺪرس٦
ﻗﺒﻞ أن ﺗﺒﺪأ ﯾﺠﺐ أن ﺗﺠﻬﺰ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت و ﻟﯿﻜﻦ اﺳﻤﻬﺎ db1و ﺗﺤﺘﻮي ﻋﻠﻰ ﺟﺪول اﺳﻤﻪ tb1و
ﻫﺬا اﻟﺠﺪول ﯾﺤﺘﻮي ﻋﻠﻰ اﻟﺤﻘﻮل اﻟﺘﺎﻟﯿﺔ :
ﯾﻤﻜﻨﻚ ﻋﻤﻞ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﻮاﺳﻄﺔ Accessأو ﺑﻮاﺳﻄﺔ ﻓﯿﺠﻮال ﺑﯿﺴﻚ راﺟﻊ اﻟﺪرس اﻟﺜﺎﻧﻲ
اﺳﻢ اﻟﺤﻘﻞ
name
num
price
ﻧﻮع اﻟﺒﯿﺎﻧﺎت
ﺳﻠﺴﻠﺔ ﻧﺼﯿﺔ
رﻗﻤﻲ
رﻗﻤﻲ
ﻣﻼﺣﻈﺎت
ﺣﻘﻞ ﺗﺨﺰﯾﻦ اﺳﻢ اﻟﺴﻠﻌﺔ
ﺣﻘﻞ ﺗﺨﺰﯾﻦ رﻗﻢ اﻟﺴﻠﻌﺔ
ﺣﻘﻞ ﺗﺨﺰﯾﻦ ﺳﻌﺮ اﻟﺴﻠﻌﺔ
ﺑﻌﺪ أن ﺗﻘﻮم ﺑﺬﻟﻚ اﻓﺘﺢ ﻣﺸﺮوع ﻓﯿﺠﻮال ﺑﯿﺴﻚ ﻗﯿﺎﺳﻲ ﺟﺪﯾﺪ ،و ﻗﺒﻞ أن ﺗﺒﺪأ ﺑﺮﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
ﯾﺠﺐ أن ﺗﺤﺪد أي ﻃﺮﯾﻘﺔ ﺳﺘﺴﺘﺨﺪﻣﻬﺎ ﻟﻠﺮﺑﻂ و ﻓﻲ ﻫﺬا اﻟﻤﺜﺎل ﺳﻨﺴﺘﺨﺪم ﻃﺮﯾﻘﺔ أو ﺗﻘﻨﯿﺔ ، DAO
و ﺑﻌﺪ أن ﺣﺪدﻧﺎ اﻟﻄﺮﯾﻘﺔ اﻟﺘﻲ ﺳﻮف ﺗﺮﺑﻂ ﺑﻬﺎ ﺳﻨﻀﯿﻒ اﻟﻤﻜﺘﺒﺔ اﻟﺨﺎﺻﺔ ﺑﻬﺎ و ﻫﻲ ﻋﺒﺎرة ﻋﻦ
ﻣﻜﺘﺒﺔ ﺗﺤﺘﻮي ﻋﻠﻰ ﺗﻌﺮﯾﻒ ﻟﻸواﻣﺮ اﻟﺘﻲ ﺳﺘﺴﺘﺨﺪﻣﻬﺎ ﻟﺘﻘﻨﯿﺔ DAOو ﻟﺘﻀﯿﻒ ﻫﺬه اﻟﻤﻜﺘﺒﺔ ﻗﻢ
ﺑﺎﻟﺘﺎﻟﻲ:
اذﻫﺐ إﻟﻰ ﻗﺎﺋﻤﺔ Project > Refrenceو ﻣﻦ ﺛﻢ ﺣﺪد اﻻﺧﺘﯿﺎر Microsoft DAO 3.51
Object Libraryﺑﻌﺪ ذﻟﻚ اﺧﺘﺮ ﻣﻮاﻓﻖ
اﻵن ﺳﻨﻌﻮد ﻟﻤﺸﺮوﻋﻨﺎ ،و إن ﻛﻨﺖ ﻣﺎزﻟﺖ ﺗﺘﺬﻛﺮ ﻣﺎ ﻗﻠﻨﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﻓﺈن ﻋﻠﯿﻨﺎ إﺿﺎﻓﺔ
ﻣﻮدﯾﻮل ،و ﻟﺘﻔﻌﻞ ذﻟﻚ اذﻫﺐ ﻟﻘﺎﺋﻤﺔ Projectو اﺿﻐﻂ ﻋﻠﻰ Add Moduleاﻵن ﺳﻨﻘﻮم
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺑﺘﻌﺮﯾﻒ ﻣﺘﻐﯿﺮﯾﻦ ﻓﻲ اﻟﻤﻮدﯾﻮل واﺣﺪ ﻋﺒﺎرة ﻋﻦ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت و اﻵﺧﺮ ﻋﺒﺎرة ﻋﻦ ﺟﺪول و ﻫﺬه
ﺻﯿﻐﺔ ﺗﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮﯾﻦ:
Public d As Database
Public t As Recordset
ﻛﻠﻤﺔ Publicﺗﻌﻨﻲ اﻧﻪ ﻣﺘﻐﯿﺮ ﻋﺎم ﻓﻲ اﻟﻤﺸﺮوع و ﻻﺣﻆ أن dأﺳﻨﺪﻧﺎﻫﺎ ﻛﻘﺎﻋﺪة ﺑﯿﺎﻧﺎت و t
ﻛﺠﺪول
ﻓﻲ ﻧﻔﺲ اﻟﻤﻮدﯾﻮل ﺳﻨﻘﻮم ﺑﺈﺳﻨﺎد ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻷﺻﻠﯿﺔ و اﻟﺘﻲ اﺳﻤﻬﺎ db1إﻟﻰ اﻟﻘﺎﻋﺪة اﻟﻮﻫﻤﯿﺔ
إن ﺻﺢ اﻟﺘﻌﺒﯿﺮ و اﻟﺘﻲ ﻋﺮﻓﻨﺎﻫﺎ ﻗﺒﻞ ﻗﻠﯿﻞ ﺑـ dو ﻟﻌﻤﻞ ذﻟﻚ ﻧﻜﺘﺐ اﻹﺟﺮاء اﻟﺘﺎﻟﻲ ﻓﻲ اﻟﻤﻮدﯾﻮل
)(Private Sub main
)"Set d = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\db1.mdb
Form1.Show
End Sub
و اﻵن دﻋﻨﺎ ﻧﺸﺮح ﻫﺬا اﻹﺟﺮاء ،أول ﺷﻲء اﺳﻤﯿﻨﺎ ﻫﺬا اﻹﺟﺮاء ﺑﺎﺳﻢ mainو ﻫﺬا ﻟﯿﺲ ﻓﯿﻪ
ﺧﯿﺎر ﺣﯿﺚ أن ﻫﺬا اﺳﻢ ﻣﺤﺠﻮز ﻓﻲ ﻟﻐﺔ اﻟﺒﯿﺴﻚ ﻓﻼ ﺗﺴﺘﻄﯿﻊ أن ﺗﺴﺘﺒﺪﻟﻪ ﺑﺂﺧﺮ
أول ﺟﻤﻠﺔ ﻓﻲ اﻹﺟﺮاء ﻫﻲ ﺟﻤﻠﺔ اﻹﺳﻨﺎد وﻟﻘﺪ ﺑﺪأﻧﺎﻫﺎ ﺑﺄﻣﺮ اﻹﺳﻨﺎد اﻟﻤﻌﺮوف Setﺛﻢ وﺿﻌﻨﺎ
اﻟﻘﯿﻤﺔ اﻟﺘﻲ ﺳﻨﺴﻨﺪ ﻓﯿﻬﺎ و ﻫﻲ dاﻟﺘﻲ ﻋﺮّﻓﻨﺎﻫﺎ و ﻗﻠﻨﺎ ﺳﻨﺴﻨﺪ ﻓﯿﻬﺎ اﻟﻘﺎﻋﺪة اﻷﺻﻠﯿﺔ ﻟﻜﻲ ﻻ ﺗﺘﻐﯿﺮ
ﻗﯿﻤﻬﺎ أﺛﻨﺎء اﻟﻤﻌﺎﻟﺠﺔ اﻟﻤﺆﻗﺘﺔ ﺛﻢ ﻛﺘﺒﻨﺎ ﻛﻠﻤﺔ DBEngineو ﻫﻲ ﻋﺒﺎرة ﻋﻦ ﻧﻮع ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
اﻟﺘﻲ ﺳﺘﺴﺘﺨﺪﻣﻬﺎ و ﻫﺬا ﻫﻮ ﻣﺤﺮك ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﻧﻮع ، Accessﺛﻢ ﻛﺘﺒﻨﺎ
)Workspaces(0و ﻫﺬا ﻧﻮع ﻣﺠﺎل اﻟﻌﻤﻞ ﻟﻦ ﻧﺘﻄﺮق ﻟﻪ اﻵن ،ﺑﻌﺪ ذﻟﻚ وﺿﻌﻨﺎ اﻷﻣﺮ اﻟﺬي
ﺳﯿﻘﻮم ﺑﻔﺘﺢ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻟﻜﻲ ﺗﺴﺘﻄﯿﻊ اﻟﻮﺻﻮل إﻟﻰ ﻣﺤﺘﻮاﻫﺎ ، Opendatabaseﺑﻌﺪ ذﻟﻚ
وﺿﻌﻨﺎ ﻣﺴﺎر ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت و ﻟﻜﻲ ﺗﺘﺠﻨﺐ ﻣﺸﻜﻠﺔ ﺗﻐﯿﺮ اﻟﻤﺴﺎر ﻣﻦ ﺟﻬﺎز ﻵﺧﺮ ﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ
App.pathأي ﻣﺴﺎر اﻟﻤﺠﻠﺪ اﻟﺬي ﯾﺤﺘﻮي اﻟﺒﺮﻧﺎﻣﺞ و ﻻﺳﺘﺨﺪام ﻫﺬه اﻟﻄﺮﯾﻘﺔ ﯾﺠﺐ أن ﺗﻜﻮن
ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﻧﻔﺲ ﻣﺠﻠﺪ اﻟﺒﺮﻧﺎﻣﺞ ،ﺛﻢ ﻛﺘﺒﻨﺎ اﺳﻢ اﻟﻘﺎﻋﺪة و اﻣﺘﺪادﻫﺎ
ﻓﻲ اﻟﺴﻄﺮ اﻟﺜﺎﻧﻲ ﻣﻦ اﻹﺟﺮاء ﻛﺘﺒﻨﺎ أﻣﺮ ﻹﻇﻬﺎر اﻟﻔﻮرم
ﺑﺎﺧﺘﺼﺎر ﻫﺬه اﻟﻄﺮﯾﻘﺔ ﺛﺎﺑﺘﺔ ﻹﺳﻨﺎد أي ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻓﻘﺪ ﻏﯿﺮ اﺳﻢ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺗﻨﻔﯿﺬ اﻟﺒﺮﻧﺎﻣﺞ
ﺑﻌﺪ ﻗﯿﺎﻣﻚ ﺑﺎﻟﺨﻄﻮات اﻟﺴﺎﺑﻘﺔ ﯾﺠﺐ أن ﺗﻨﻔﺬ اﻟﺒﺮﻧﺎﻣﺞ ﻓﻲ ﻫﺬه اﻟﻤﺮﺣﻠﺔ ﻟﻜﻲ ﺗﺘﺄﻛﺪ اﻧﻚ ﺗﺴﯿﺮ ﻋﻠﻰ
اﻟﺨﻂ اﻟﺼﺤﯿﺢ و ﻗﺒﻞ ذﻟﻚ ﺗﺄﻛﺪ ﻣﻦ اﻧﻚ ﻗﻤﺖ ﺑﺠﻌﻞ اﻟﻤﻮدﯾﻮل ﻓﻲ ﺑﺪأ اﻟﺘﺸﻐﯿﻞ وذﻟﻚ ﺑﺎﻟﺬﻫﺎب إﻟﻰ
Project > Project1.proprties..ﺑﻌﺪ ذﻟﻚ ﺣﺪد sub mainﻣﻦ اﻟﻘﺎﺋﻤﺔ اﻟﻤﻨﺴﺪﻟﺔ
startup objectﺑﻌﺪ ذﻟﻚ ﺷﻐﻞ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ F5ﯾﺠﺐ أن ﺗﺴﯿﺮ اﻷﻣﻮر ﻋﻠﻰ ﻣﺎ ﯾﺮام
و إن ﻟﻢ ﺗﻜﻦ ﻛﺬﻟﻚ ﺗﺄﻛﺪ ﻣﻦ اﻟﺨﻄﻮات اﻟﺘﺎﻟﯿﺔ
-١أﻧﻚ ﻗﻤﺖ ﺑﺤﻔﻆ اﻟﻤﺸﺮوع ﻓﻲ ﻧﻔﺲ اﻟﻤﺠﻠﺪ اﻟﺬي ﻓﯿﻪ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
-٢أن ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻟﯿﺴﺖ ﻗﯿﺪ اﻟﺘﺸﻐﯿﻞ
-٣اﻧﻚ ﺟﻌﻠﺖ اﻟﻤﻮدﯾﻮل ﻓﻲ ﺑﺪأ ﺗﺸﻐﯿﻞ اﻟﻤﺸﺮوع
-٤اﻧﻚ ﻛﺘﺒﺖ اﺳﻢ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺻﺤﯿﺤﺎ
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
اﻹﻋﻼن ﻋﻦ اﻟﻤﺘﻐﯿﺮات ﻓﻲ ﻣﻮدﯾﻮل
رﺑﻂ اﻟﻘﺎﻋﺪة ﺑﺎﻟﻤﺸﺮوع ﺑﺎﻟﻜﻮد
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
رﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﻜﻮد ٣
اﻟﻤﻘﺪﻣﺔ:
ﻫﺬا اﻟﺠﺰء اﻟﺜﺎﻟﺚ ﻣﻦ اﻟﺪرس اﻟﺴﺎﺑﻖ ﻓﺒﻌﺪ أن ﺗﻌﻠﻤﻨﺎ ﻧﻌﺮف اﻟﻤﺘﻐﯿﺮات اﻟﺘﻲ ﺳﻨﻌﻤﻞ ﻋﻠﯿﻬﺎ و رﺑﻄﻨﺎ
ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﯾﺒﻘﻰ أﻣﺎﻣﻨﺎ رﺑﻂ اﻟﺠﺪول و إﻇﻬﺎر ﻣﺤﺘﻮﯾﺎت اﻟﻘﺎﻋﺪة ﻟﻠﻤﺴﺘﺨﺪم ،أﻣﺎ اﻟﺘﻨﻘﻞ ﺑﯿﻦ
اﻟﺴﺠﻼت و أواﻣﺮ اﻟﺤﻔﻆ و اﻟﺘﻌﺪﯾﻞ و اﻹﺿﺎﻓﺔ ﻓﺴﺘﻜﻮن ﻓﻲ اﻟﺠﺰء اﻟﺜﺎﻟﺚ ،اﻵن دﻋﻮﻧﺎ ﻧﺒﺪأ
اﻟﺪرس٧
أوﻻ ﺳﻨﻘﻮم ﺑﺮﺑﻂ اﻟﺠﺪول اﻟﺬي ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت و ﻧﺨﺰﻧﻪ ﻓﻲ اﻟﻤﺘﻐﯿﺮ اﻟﺬي أﻧﺸﺄﻧﺎه ﻓﻲ اﻟﺪرس
اﻟﺴﺎﺑﻖ ﺑﺎﺳﻢ tﻋﻠﻤﺎ أن اﻟﺠﺪول اﻟﺮﺋﯿﺴﻲ اﺳﻤﻪ tb1وﻟﻜﻲ ﻧﻘﻮم ﺑﺬﻟﻚ اﻛﺘﺐ اﻷﻣﺮ اﻟﺘﺎﻟﻲ ف
ﺣﺪث اﻟﺘﺤﻤﯿﻞ ﻟﻠﻔﻮرم load
)(Private Sub Form_Load
)Set t = d.OpenRecordset("tb1", dbOpenTable
End Sub
دﻋﻨﺎ ﻧﺸﺮح اﻟﺨﻄﻮة اﻟﺴﺎﺑﻘﺔ ﺑﺎﻟﺘﻔﺼﯿﻞ ،أوﻻ وﺿﻌﻨﺎ رﺑﻂ اﻟﺠﺪول ﻓﻲ ﺣﺪث اﻟﺘﺤﻤﯿﻞ ﻟﻠﻔﻮرم رﺑﻤﺎ
ﺗﺴﺄل ﻋﻦ اﻟﺴﺒﺐ و اﻟﺠﻮاب إن ﻫﺬا ﻣﺎ ﯾﻘﻮم ﺑﻪ اﻟﻤﺤﺘﺮﻓﻮن ﻟﻜﻲ ﺗﻬﯿﺊ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺒﯿﺎﻧﺎت ﻋﻨﺪ
ﺗﺤﻤﯿﻞ اﻟﻔﻮرم إﻻ إذا ﻛﺎن ﻟﺪﯾﻚ ﺳﺒﺐ أﺧﺮ ﻟﺘﺨﺎﻟﻒ ﻫﺬه اﻟﻘﺎﻋﺪة
ﺑﻌﺪ ذﻟﻚ و ﺿﻌﻨﺎ ﺟﻤﻠﺔ اﻟﺮﺑﻂ ﻟﻠﺠﺪول و ﺑﺪأﻧﺎ ﺑﺄﻣﺮ اﻹﺳﻨﺎد اﻟﻤﻌﺮوف Setﺛﻢ اﺳﻢ اﻟﻘﯿﻤﺔ اﻟﺘﻲ
ﺳﻨﺴﻨﺪ ﻗﯿﻢ اﻟﺠﺪول ﻓﯿﻬﺎ و ﻫﻲ اﻟﺘﻲ ﻋﺮﻓﻨﺎﻫﺎ ﻓﯿﻤﺎ ﻗﺒﻞ ﺑﺎﺳﻢ tﺑﻌﺪ ذﻟﻚ ﻧﻜﺘﺐ اﺳﻢ اﻟﻘﺎﻋﺪة
اﻟﻤﺴﺘﻌﺎر اﻟﺬي أﺳﻨﺪﻧﺎ اﻟﻘﺎﻋﺪة اﻷﺻﻠﯿﺔ ﻓﯿﻪ و ﻫﻮ dﺛﻢ ﻧﻜﺘﺐ اﻷﻣﺮ اﻟﺬي ﺳﯿﻔﺘﺢ ﻟﻨﺎ اﻟﺠﺪول ﻟﻜﻲ
ﻧﺴﺘﻄﯿﻊ اﻟﻮﺻﻮل إﻟﻰ ﻣﺤﺘﻮاه وﻫﻮ Openrecordsetﺑﻌﺪ ذﻟﻚ ﻧﻜﺘﺐ اﺳﻢ اﻟﺠﺪول اﻟﺤﻘﯿﻘﻲ ﺑﯿﻦ
ﻋﻼﻣﺘﻲ ﺗﻨﺼﯿﺺ و ﻧﻜﺘﺐ ﻧﻮع اﻟﺮﺑﻂ وﻫﻮ dbopentableاﺳﺘﺨﺪم ﻫﺬه اﻟﻄﺮﯾﻘﺔ ﻓﻘﻂ و ﻻ ﺗﺴﺄل
ﻟﻤﺎذا ﻷﻧﻬﺎ ﻣﻦ اﻷواﻣﺮ اﻟﺜﺎﺑﺘﺔ و ﻣﻦ أﻧﻮاع اﻟﺮﺑﻂ و ﺳﺘﺴﺘﻄﯿﻊ اﻟﺘﻔﺮﯾﻖ ﺑﯿﻦ أﻧﻮاع اﻟﺮﺑﻂ ﻓﻲ
اﻟﻤﺴﺘﻘﺒﻞ ﻣﻊ ﻛﺜﺮة اﻟﺘﻤﺎرﯾﻦ ﻓﻼ ﺗﺴﺘﻌﺠﻞ ،ﻫﻜﺬا ﺗﻜﻮن ﻗﺪ ﻗﻤﺖ ﺑﺮﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت و اﻟﺠﺪول
ﺑﻮاﺳﻄﺔ اﻟﻜﻮد ،،،،ﻣﺒﺮوك
و اﻵن ﺳﻨﺘﻌﺮف ﻋﻠﻰ ﻛﯿﻔﯿﺔ إﻇﻬﺎر اﻟﺒﯿﺎﻧﺎت ﻟﻠﻤﺴﺘﺨﺪم ،و ﻗﺒﻞ ذﻟﻚ ﻗﻢ ﺑﺘﺼﻤﯿﻢ واﺟﻬﺔ اﻟﻤﺴﺘﺨﺪم
ووﺿﻊ ﻣﺮﺑﻌﺎت اﻟﻨﺺ اﻟﻌﻨﺎوﯾﻦ ﻛﻤﺎ ﻓﻲ اﻟﺼﻮرة اﻟﺘﺎﻟﯿﺔ و ﻗﺪ وﺿﺤﺖ ﻋﻠﻰ اﻟﺼﻮرة اﻟﺘﺴﻤﯿﺎت اﻟﺘﻲ
ﺳﻨﻌﺘﻤﺪﻫﺎ:
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
و اﻵن ﺳﻮف ﻧﻨﺸﺊ إﺟﺮاء إﻇﻬﺎر اﻟﺒﯿﺎﻧﺎت ﻟﻜﻲ ﻧﺴﺘﺪﻋﯿﻪ ﻓﻲ ﻛﻞ ﻣﺮة ﻧﺤﺘﺎﺟﻪ ﺑﺪﻻ ﻣﻦ إﻋﺎدة
ﻛﺘﺎﺑﺘﻪ ﺳﯿﻜﻮن ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ:
)(Private Sub showdata
ﻋﻨﺪﻣﺎ ﯾﻜﻮن اﻟﺠﺪول ﻓﺎرغ اﺧﺮج ﻣﻦ اﻹﺟﺮاء ' If t.RecordCount < 1 Then Exit Sub
tﻧﻀﻊ ﻓﻲ ﻣﺮﺑﻊ اﻟﻨﺺ اﻷول ﻗﯿﻤﺔ ﺣﻘﻞ اﻻﺳﻢ ﻓﻲ اﻟﺠﺪول ' Text1.Text = t!Name
ﻧﻔﺲ اﻟﺨﻄﻮة اﻟﺴﺎﺑﻘﺔ ﻟﺤﻘﻞ رﻗﻢ اﻟﺴﻠﻌﺔ ' Text2.Text = t!num
ﻧﻔﺲ اﻟﺨﻄﺔ اﻟﺴﺎﺑﻘﺔ ﻟﺤﻘﻞ اﻟﺴﻌﺮ' Text3.Text = t!price
End Sub
اﻵن دﻋﻨﺎ ﻧﻠﻘﻲ ﻧﻈﺮة ﻋﻠﻰ أﺟﺮاء إﻇﻬﺎر اﻟﺒﯿﺎﻧﺎت ﺑﺪأﻧﺎ أوﻻ ﺑﺎﻟﺘﺄﻛﺪ إذا ﻛﺎن اﻟﺠﺪول ﯾﺤﺘﻮي ﻋﻠﻰ
ﺑﯿﺎﻧﺎت أم ﻻ ﻓﺈذا ﻛﺎن ﻻ ﯾﺤﺘﻮي ﻓﻨﺨﺮج ﻣﻦ اﻹﺟﺮاء ﻟﻜﻲ ﻻ ﯾﺤﺪث ﻣﺸﺎﻛﻞ أﺛﻨﺎء اﻟﻌﺮض
ﺑﻌﺪ ذﻟﻚ ﻧﻘﻮم ﺑﺈﻇﻬﺎر ﻗﯿﻤﺔ ﻣﺎ ﻓﻲ اﻟﺤﻘﻮل ﻓﻲ ﻣﺮﺑﻌﺎت اﻟﻨﺺ ،و ﻻﺣﻆ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ
ﻋﻼﻣﺔ اﻟﺘﻌﺠﺐ ! ﻟﻜﻲ ﺗﻔﺼﻞ ﺑﯿﻦ اﺳﻢ اﻟﺠﺪول اﻟﻤﺴﺘﻌﺎر و اﺳﻢ اﻟﺤﻘﻞ ،ﯾﺠﺐ أن ﺗﻔﺮق ﺑﯿﻦ اﺳﻢ
اﻟﺪول أو اﻟﻘﺎﻋﺪة اﻟﻤﺴﺘﻌﺎر و اﻷﺻﻠﻲ و ﻣﺘﻰ ﻧﺴﺘﺨﺪم ﻛﻞ ﻣﻨﻬﻤﺎ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
و اﻵن ﯾﺠﺐ أن ﻧﻀﯿﻒ أﻣﺮ اﺳﺘﺪﻋﺎء ﻹﺟﺮاء اﻟﻌﺮض ﻋﻨﺪ ﺗﺤﻤﯿﻞ اﻟﺒﺮﻧﺎﻣﺞ ﻓﺴﯿﻜﻮن اﻷﻣﺮ ﻓﻲ ﺣﺪث
اﻟﺘﺤﻤﯿﻞ ﻫﻜﺬا:
)(Private Sub Form_Load
)Set t = d.OpenRecordset("tb1", dbOpenTable
Call showdata
End Sub
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
رﺑﻂ اﻟﺠﺪول ﺑﺎﻟﻜﻮد و ﻋﻤﻞ إﺟﺮاء إﻇﻬﺎر اﻟﺒﯿﺎﻧﺎت
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
رﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﻜﻮد ٤
اﻟﻤﻘﺪﻣﺔ:
ﻓﻲ ﻫﺬا اﻟﺠﺰء اﻟﺮاﺑﻊ و اﻷﺧﯿﺮ ﻣﻦ درس اﻟﻜﻮد ﺳﻮف ﻧﺘﻌﻠﻢ ﻛﯿﻔﯿﺔ اﻟﺘﻨﻘﻞ ﺑﯿﻦ اﻟﺴﺠﻼت و ﻛﯿﻔﯿﺔ
اﻟﺤﻔﻆ و اﻟﺘﻌﺪﯾﻞ و اﻹﺿﺎﻓﺔ و اﻟﺤﺬف ...1.....2..........3...................اﻧﻄﻠﻖ
اﻟﺪرس٨
اﻟﺘﻨﻘﻞ ﺑﯿﻦ اﻟﺴﺠﻼت:
ﻟﻦ ﺗﺤﺘﺎج ﻟﻠﺘﻨﻘﻞ ﺑﯿﻦ اﻟﺴﺠﻼت إﻻ ﻟـ :
اﻟﺴﺠﻞ اﻟﺘﺎﻟﻲ و اﻟﺴﺠﻞ اﻟﺴﺎﺑﻖ و اﻟﺴﺠﻞ اﻷول و اﻟﺴﺠﻞ اﻷﺧﯿﺮ
اﻟﺴﺠﻞ اﻟﺘﺎﻟﻲ :وﻟﻜﻲ ﺗﻨﺘﻘﻞ ﻟﻠﺴﺠﻞ اﻟﺘﺎﻟﻲ ﺳﻮف ﺗﺤﺘﺎج ﻟﻜﺘﺎﺑﺔ اﻷﻣﺮ اﻟﺘﺎﻟﻲ ﻓﻲ اﻟﺰر اﻟﻤﻄﻠﻮب و ﻫﻮ
ﻓﻲ ﻣﺜﺎﻟﻨﺎ cmd6
)(Private Sub cmd6_Click
t.MoveNext
Call showdata
End Sub
ﻻﺣﻆ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ اﺳﻢ اﻟﺠﺪول اﻟﻤﺴﺘﻌﺎر ، tﺛﻢ ﺑﻌﺪ ذﻟﻚ اﺳﺘﺪﻋﯿﻨﺎ اﻹﺟﺮاء
showdataاﻟﺬي ﻋﻤﻠﻨﺎه ﻓﻲ اﻟﺠﺰء اﻟﺴﺎﺑﻖ ﻟﻜﻲ ﯾﻘﻮم ﺑﻌﺮض اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﺴﺠﻞ اﻟﺘﺎﻟﻲ وﻫﺬه
اﻟﻄﺮﯾﻘﺔ ﺗﻨﻄﺒﻖ ﻋﻠﻰ ﺟﻤﯿﻊ أﻧﻮاع اﻟﺘﻨﻘﻞ اﻟﻘﺎدﻣﺔ
اﻟﺴﺠﻞ اﻟﺴﺎﺑﻖ:
وﻛﻞ ﻣﺎ ﺗﺤﺘﺎج ﻛﺘﺎﺑﺘﻪ ﻫﺬا اﻟﻜﻮد ﺑﻨﻔﺲ ﻃﺮﯾﻘﺔ اﻟﻜﻮد اﻟﺴﺎﺑﻖ ) ﻻ ﺗﻨﺴﻰ وﺿﻊ اﻟﻜﻮد ﻓﻲ اﻟﻤﻜﺎن
اﻟﻤﻨﺎﺳﺐ و ﻫﻮ ﻫﻨﺎ ( cmd7
)(Private Sub cmd7_Click
t.MovePrevious
Call showdata
End Sub
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻟﺴﺠﻞ اﻷول:
ﻟﻼﻧﺘﻘﺎل ﻟﻠﺴﺠﻞ اﻷول اﻛﺘﺐ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻓﻲ زر اﻷﻣﺮcmd8 :
)(Private Sub cmd8_Click
t.MoveFirst
Call showdata
End Sub
اﻟﺴﺠﻞ اﻷﺧﯿﺮ:
ﻟﻼﻧﺘﻘﺎل ﻟﻠﺴﺠﻞ اﻷﺧﯿﺮ اﻛﺘﺐ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻓﻲ زر اﻷﻣﺮcmd5 :
)(Private Sub cmd5_Click
t.MoveLast
Call showdata
End Sub
ﻫﺬه ﻛﻞ أواﻣﺮ اﻟﺘﻨﻘﻞ اﻟﺘﻲ ﺗﺤﺘﺎﺟﻬﺎ ،ﻟﻜﻦ ﻟﻢ ﻧﻨﺘﻬﻲ ﺑﻌﺪ ﻓﺴﺘﻮاﺟﻬﻚ ﻣﺸﻜﻠﺔ ،ﻓﻤﺜﻼ ﻋﻨﺪﻣﺎ ﺗﺮﯾﺪ أن
ﺗﻨﺘﻘﻞ ﻟﻠﺴﺠﻞ اﻟﺘﺎﻟﻲ و أﻧﺖ ﻓﻲ اﻟﺴﺠﻞ اﻷﺧﯿﺮ ﻃﺒﻌﺎ ﻻ ﯾﻮﺟﺪ ﺳﺠﻞ ﺗﺎﻟﻲ ﻟﺬﻟﻚ ﺳﯿﺘﻮﻗﻒ اﻟﺒﺮﻧﺎﻣﺞ ،و
ﻧﻔﺲ اﻟﺸﻲء ﻋﻨﺪ اﻻﻧﺘﻘﺎل ﻟﻠﺴﺠﻞ اﻟﺴﺎﺑﻖ و أﻧﺖ ﻓﻲ اﻟﺴﺠﻞ اﻷول ﻓﻼ ﯾﻮﺟﺪ ﺳﺠﻞ ﺳﺎﺑﻖ ﻓﺴﯿﺘﻮﻗﻒ
اﻟﺒﺮﻧﺎﻣﺞ ،ﻟﺬﻟﻚ ﺳﻨﻘﻮم ﺑﺈﺿﺎﻓﺔ ﺟﻤﻠﺔ ﺷﺮﻃﯿﺔ ﻟﻠﺘﺄﻛﺪ إذا ﻛﺎن اﻟﺴﺠﻞ اﻷﺧﯿﺮ أو اﻷول ﺣﺴﺐ اﻟﺤﺎﻟﺔ
ﺛﻢ ﻧﻘﻮم ﺑﻮﺿﻊ أﻣﺮ Movefirstأو movelastﺣﯿﺚ إن ﻫﺬﯾﻦ اﻷﻣﺮﯾﻦ ﻻ ﯾﺘﺄﺛﺮان ﺳﻮاء ﻛﺎن
ﻫﻨﺎك ﺳﺠﻞ أو ﻻ و ﻃﺮﯾﻘﺔ اﺳﺘﺨﺪاﻣﻬﻢ ﻫﻜﺬا:
ﻣﻼﺣﻈﺔ :ﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ EOFﻟﻤﻌﺮﻓﺔ آﺧﺮ ﺳﺠﻞ ﻓﻲ اﻟﺠﺪول ،و ﻧﺴﺘﺨﺪم اﻟﺪاﻟﺔ BOF
ﻟﻤﻌﺮﻓﺔ أول ﺳﺠﻞ ﻓﻲ اﻟﺠﺪول
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
*ﺳﻨﻀﻊ اﻟﺠﻤﻠﺔ اﻟﺸﺮﻃﯿﺔ اﻟﺘﺎﻟﯿﺔ ﻓﻲ زر اﻻﻧﺘﻘﺎل ﻟﻠﺘﺎﻟﻲ ﻓﺈذا ﻛﺎن ﻫﺬا آﺧﺮ ﺳﺠﻞ إذا اﻧﺘﻘﻞ ﻟﻠﺴﺠﻞ
اﻟﺘﺎﻟﻲ
If t.EOF Then t.MoveLast
و ﻛﺬﻟﻚ ﻓﻲ زر اﻻﻧﺘﻘﺎل ﻟﻠﺴﺎﺑﻖ ﻧﻀﻊ ﺷﺮط إذا ﻛﺎن ﻫﺬا أول ﺳﺠﻞ إذا اﻧﺘﻘﻞ ﻟﻠﺴﺠﻞ اﻷول
If t.BOF Then t.MoveFirst
ﻟﺬﻟﻚ ﺳﻨﻀﯿﻒ اﻟﺠﻤﻠﺘﯿﻦ اﻟﺴﺎﺑﻘﺘﯿﻦ ﻟﻜﻮد اﻻﻧﺘﻘﺎل ﻟﻠﺘﺎﻟﻲ و اﻻﻧﺘﻘﺎل ﻟﻠﺴﺎﺑﻖ ﻓﺴﯿﺼﺒﺢ ﻛﻮد اﻻﻧﺘﻘﺎل
ﻟﻠﺘﺎﻟﻲ ﻫﻜﺬا:
)(Private Sub cmd6_Click
t.MoveNext
If t.EOF Then t.MoveLast
Call showdata
End Sub
وﻛﻮد اﻻﻧﺘﻘﺎل ﻟﻠﺴﺎﺑﻖ ﻫﻜﺬا:
)(Private Sub cmd7_Click
t.MovePrevious
If t.BOF Then t.MoveFirst
Call showdata
End Sub
ﻋﻤﻠﯿﺎت اﻟﺴﺠﻼت:
اﻵن ﺳﻨﺘﻌﻠﻢ ﻋﻤﻠﯿﺎت اﻟﺴﺠﻼت ﻣﻦ ﺣﺬف و إﺿﺎﻓﺔ و ﺗﻌﺪﯾﻞ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
إﺿﺎﻓﺔ ﺳﺠﻞ:
اﻷﻣﺮ اﻟﺘﺎﻟﻲ ﯾﻘﻮم ﺑﺈﺿﺎﻓﺔ ﺳﺠﻞ و ﻧﻀﯿﻒ ﻋﻠﯿﻪ أواﻣﺮ ﻟﺘﻤﺴﺢ ﻣﺎ ﻓﻲ ﻣﺮﺑﻌﺎت اﻟﻨﺺ ﻟﺘﻬﯿﺌﺘﻬﺎ
ﻟﻺﺿﺎﻓﺔ:
)(Private Sub cmd1_Click
إﺿﺎﻓﺔ ﺳﺠﻞ ﺟﺪﯾﺪ' t.AddNew
اﻟﺨﻄﻮات اﻟﺘﺎﻟﯿﺔ ﻟﻜﻲ ﻧﻘﻮم ﺑﻤﺴﺢ ﻣﺎ ﻓﻲ ﻣﺮﺑﻌﺎت اﻟﻨﺺ ﻟﺘﻬﯿﺌﺘﻬﺎ ﻟﻺﺿﺎﻓﺔ و ﻫﻲ ﺧﻄﻮة ﻟﺘﻌﻄﻲ ﻃﺎﺑﻊ اﻻﺣﺘﺮاف ﻓﻘﻂ'
"" = Text1.Text
"" = Text2.Text
"" = Text3.Text
End Sub
ﺣﻔﻆ ﺳﺠﻞ:
ﻟﺘﺤﻔﻆ ﺳﺠﻞ ﯾﺠﺐ ﻋﻠﯿﻚ أن ﺗﻘﻮم ﺑﻮﺿﻊ اﻟﻘﯿﻢ اﻟﺘﻲ ﻓﻲ ﻣﺮﺑﻌﺎت اﻟﻨﺺ ﻓﻲ اﻟﺤﻘﻮل اﻟﺘﻲ ﺗﻮازﯾﻬﺎ ﻓﻲ
اﻟﺠﺪول ،و ﻻﺣﻆ أﻧﻪ ﺳﻮف ﯾﻌﻄﯿﻚ رﺳﺎﻟﺔ ﺧﻄﺄ ﻋﻨﺪﻣﺎ ﺗﻘﻮم ﺑﺎﻟﺤﻔﻆ دون أن ﺗﻘﻮم ﺑﺎﺧﺘﯿﺎر ﺗﻌﺪﯾﻞ
ﺳﺠﻞ أو إﺿﺎﻓﺔ ﺳﺠﻞ ﻟﺬﻟﻚ ﯾﻔﺘﺮض ﺑﻚ أن ﺗﺠﻌﻞ زر اﻟﺤﻔﻆ ﻓﻲ ﺣﺎﻟﺔ اﻟﺘﻤﻜﯿﻦ ﻓﻘﻂ ﻋﻨﺪﻣﺎ ﯾﻀﯿﻒ
اﻟﻤﺴﺘﺨﺪم ﺳﺠﻼ أو ﯾﺨﺘﺎر ﺗﻌﺪﯾﻞ ﺳﺠﻞ ،ﻛﺬﻟﻚ ﯾﺠﺐ ﻋﻠﯿﻚ اﺳﺘﺨﺪام اﻟﺪاﻟﺔ Valﻋﻨﺪ ﺣﻔﻆ اﻟﺤﻘﻮل
اﻟﺮﻗﻤﯿﺔ ﻟﺘﺠﻨﺐ اﻟﻤﺸﺎﻛﻞ ﻋﻨﺪﻣﺎ ﯾﺘﺮﻛﻪ اﻟﻤﺴﺘﺨﺪم ﻓﺎرﻏﺎ ،و أﯾﻀﺎ ﯾﺠﺐ ﻋﻠﯿﻚ أن ﺗﻘﻮم
ﺑﺘﺤﺪﯾﺚ اﻟﺠﺪول ﺑﻌﺪ ﻋﻤﻠﯿﺔ اﻟﺤﻔﻆ ﻟﺘﻜﻤﻞ اﻟﻌﻤﻠﯿﺔ ﺑﺴﻼم و ﻫﺬا ﻫﻮ اﻟﻜﻮد اﻟﻤﻄﻠﻮب:
)(Private Sub cmd2_Click
ﻧﻘﻮم ﻓﻲ اﻟﺨﻄﻮات اﻟﺘﺎﻟﯿﺔ ﺑﻨﻘﻞ ﻣﺎ ﻓﻲ ﻣﺮﺑﻌﺎت اﻟﻨﺺ إﻟﻰ اﻟﺤﻘﻮل اﻟﺘﻲ ﺗﻮازﯾﻬﺎ ﻓﻲ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت '
t!Name = Text1.Text
ﻻ ﺣﻆ أﻧﻨﺎ اﺳﺘﺨﺪﻣﻨﺎ ﻫﺬه اﻟﺪاﻟﺔ ﻟﻜﻲ ﯾﺘﻢ ﻗﺒﻮل اﻟﺤﻘﻞ ﻓﻲ ﺣﺎﻟﺔ ﻛﻮﻧﻪ ﻓﺎرغ ﻻن ' )t!num = Val(Text2.Text
valﻫﺬا ﺣﻘﻞ رﻗﻤﻲ
)t!price = Val(Text3.Text
t.Update
End Sub
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺗﻌﺪﯾﻞ ﺳﺠﻞ:
ﻓﻘﻂ اﺧﺒﺮ اﻟﺒﺮﻧﺎﻣﺞ اﻧﻚ ﺗﺮﯾﺪ اﻟﺘﻌﺪﯾﻞ ﺑﻬﺬا اﻟﻜﻮد
)(Private Sub cmd3_Click
ﺗﺴﻤﺢ ﻫﺬه اﻟﺨﺎﺻﯿﺔ ﺑﺘﻌﺪﯾﻞ اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﺤﻘﻞ' t.Edit
End Sub
ﺣﺬف ﺳﺠﻞ:
ﻋﻤﻠﯿﺔ ﺣﺬف اﻟﺴﺠﻞ ﺳﻬﻠﺔ ،و ﻟﻜﻦ ﻣﺎذا ﺑﻌﺪ أن ﺗﺤﺬف اﻟﺴﺠﻞ ؟ ﺑﺎﻟﻄﺒﻊ ﯾﺠﺐ أن ﺗﻌﺮض اﻟﺴﺠﻞ
اﻟﺘﺎﻟﻲ ،و أﯾﻀﺎ ﯾﺠﺐ أن ﺗﺮاﻋﻲ اﻟﻤﺸﺎﻛﻞ اﻟﺘﻲ ﺗﻮاﺟﻬﻚ ﻋﻨﺪ اﻧﺘﻘﺎﻟﻚ ﻟﻠﺴﺠﻞ اﻟﺘﺎﻟﻲ ﻓﻘﺪ ﻻ ﯾﻜﻮن
ﻫﻨﺎك ﺳﺠﻞ ﺗﺎﻟﻲ وﻗﺪ ﺷﺮﺣﻨﺎ ﻛﯿﻒ ﺗﺘﻔﺎدى ﻫﺬه اﻟﻤﺸﻜﻠﺔ ﻓﻲ ﻫﺬا اﻟﺪرس ،و ﻫﺬا ﻫﻮ اﻟﻜﻮد اﻟﻼزم:
)(Private Sub cmd4_Click
ﻟﺤﺬف ﺳﺠﻞ' t.Delete
ﻟﻼﻧﺘﻘﺎل ﻟﻠﺴﺠﻞ اﻟﺘﺎﻟﻲ ﺑﻌﺪ ا ﻟﺤﺬف' t.MoveNext
ﯾﺤﻞ ﻫﺬا اﻹﺟﺮاء ﻣﺸﻜﻠﺔ ﻋﺪم وﺟﻮد ﺳﺠﻞ ﺗﺎﻟﻲ ' If t.EOF Then t.MoveLast
End Sub
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
ﻣﻌﺮﻓﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻊ أواﻣﺮ اﻟﺘﻨﻘﻞ ﺑﯿﻦ اﻟﺴﺠﻼت و ﺗﻔﺎدي اﻟﻤﺸﺎﻛﻞ اﻟﺘﻲ ﺗﻮاﺟﻬﻬﺎ
ﻣﻌﺮﻓﺔ ﻋﻤﻠﯿﺎت اﻟﺴﺠﻼت و ﻋﻤﻠﻬﺎ و ﺗﻔﺎدي اﻟﻤﺸﺎﻛﻞ اﻟﺘﻲ ﻗﺪ ﺗﻮاﺟﻬﻚ ﻋﻨﺪﻣﺎ ﺗﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺳﻨﻘﻮم اﻵن ﺑﺸﺮح ﻋﻦ ﻛﯿﻔﯿﺔ اﺳﺘﺨﺪام ﻟﻐﺔ اﻻﺳﺘﻌﻼﻣﺎت sqlوﻧﺤﺎول ﺗﻄﺒﯿﻘﻬﺎ ﻣﻌﺎ ﺣﺘﻰ ﻧﻌﺮف ﻛﯿﻒ
ﻧﺴﺘﺨﺪم ﻫﺬه اﻻﺳﺘﻌﻼﻣﺎت ﻓﻲ ﺑﺮاﻣﺠﻨﺎ
ﻟﻐﺔ اﻻﺳﺘﻔﺴﺎرات (1) SQL
اﻟﻤﻘﺪﻣﺔ:
اﻟﺸﻲء اﻟﺬي ﻟﻦ ﺗﺴﺘﻄﯿﻊ ﺗﺠﺎﻫﻠﻪ ﻋﻨﺪ ﺗﻌﻠﻢ ﻗﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ﻫﻮ ﻟﻐﺔ اﻻﺳﺘﻔﺴﺎر أو اﻻﺳﺘﻌﻼم و اﻟﺘﻲ
ﯾﻌﺒﺮ ﻋﻨﻬﺎ ﺑـ ، SQLﻟﻜﻦ ﻣﺎ ﻫﻲ ﻓﺎﺋﺪة ﻫﺬه اﻟﻠﻐﺔ؟ ﻟﻨﻔﺮض أن ﻟﺪﯾﻚ ﻣﻮﻇﻔﯿﻦ ﺑﺎﻟﻤﺌﺎت و ﺗﺮﯾﺪ أن
ﺗﺤﺪد ﺟﻨﺴﯿﺔ ﻣﻌﯿﻨﻪ ﻣﻨﻬﻢ و ﺗﺤﺼﺮﻫﻢ ﻟﻦ ﺗﺴﺘﻄﯿﻊ ﻓﻌﻞ ذﻟﻚ إﻻ ﺑﻠﻐﺔ اﻻﺳﺘﻌﻼم ﺣﯿﺚ ﯾﻘﻮم ﺑﺠﻤﻊ
اﻟﺤﻘﻮل اﻟﺘﻲ ﺗﺴﺎوي اﻟﺸﺮط اﻟﺬي ﺷﺮﻃﺘﻪ و ﻫﻮ ﺟﻨﺴﯿﺘﻬﻢ ،ﺳﻨﺄﺧﺬ ﺷﺮﺣﺎ ﻣﻔﺼﻼ ﻓﻲ ﻫﺬا اﻟﺪرس
ﻋﻦ اﻷﺳﺎﺳﯿﺎت و ﺗﻄﺒﯿﻘﺎت ﻋﻠﯿﻬﺎ.
اﻟﺪرس٩
أوﻻ ﻣﺎ ﻓﺎﺋﺪة ﻫﺬه اﻟﻠﻐﺔ ؟ ﻛﻤﺎ ذﻛﺮﻧﺎ ﻓﻲ اﻟﻤﻘﺪﻣﺔ إن ﻓﺎﺋﺪﺗﻬﺎ ﻓﻲ ﺣﺼﺮ اﻟﻘﯿﻢ اﻟﺘﻲ ﺗﻄﺎﺑﻖ اﻟﻘﯿﻢ
اﻟﻤﻌﻄﺎة ﻣﻦ ﻗﺒﻞ اﻟﻤﺴﺘﺨﺪم و ﺗﺘﻤﯿﺰ ﺑﺎﻟﺴﻬﻮﻟﺔ و اﻟﺪﻗﺔ و اﻟﺴﺮﻋﺔ أﯾﻀﺎ ﻛﻤﺎ ﯾﻤﻜﻨﻚ اﻟﺘﺤﻜﻢ ﺑﻬﺎ
ﺑﺼﻮره ﻛﺒﯿﺮة وﯾﻤﻜﻨﻚ إدﺧﺎل أﻛﺜﺮ ﻣﻦ ﺷﺮط ﻓﻲ اﻻﺳﺘﻌﻼم اﻟﻮاﺣﺪ ،ﻟﻨﻔﺮض أن ﻟﺪﯾﻨﺎ ﺟﺪول اﺳﻤﻪ
Tbوﻓﯿﻪ ﺣﻘﻠﯿﻦ ﺑﺎﺳﻢ nameو numberو ﺗﺤﺘﻮي ﻫﺬه اﻟﺤﻘﻮل ﻋﻠﻰ ﻗﯿﻢ ﻣﺪﺧﻠﺔ ﻛﻤﺎ ﻓﻲ
اﻟﺠﺪول اﻟﺘﺎﻟﻲ :
number
444
534
444
name
ﺳﺎﻣﻲ
ﺳﺎﻣﻲ
ﺻﺎﻟﺢ
و ﻧﺮﯾﺪ أن ﻧﺴﺘﺨﺮج اﻷﺳﻤﺎء اﻟﺘﻲ أرﻗﺎﻣﻬﺎ ٤٤٤ﻓﺴﻨﺤﺘﺎج إﻟﻰ ﺟﻤﻠﺔ اﺳﺘﻌﻼم ﺑﺴﯿﻄﺔ ﻋﻠﻰ اﻟﺸﻜﻞ
اﻟﺘﺎﻟﻲ :
"SQL = "select name from Tb where number = 444
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻓﻲ اﻟﺠﻤﻠﺔ اﻟﺴﺎﺑﻘﺔ اﻣﺮﻧﺎ اﻟﺒﺮﻧﺎﻣﺞ أن ﯾﻘﻮم ﺑﺘﺤﺪﯾﺪ ﻗﯿﻢ اﻟﺤﻘﻞ nameﻣﻦ اﻟﺠﺪول Tbﻋﻨﺪﻣﺎ
ﺗﻜﻮن ﻗﯿﻢ اﻟﺤﻘﻞ numberﺗﺴﺎوي ، ٤٤٤و وﺿﻌﻨﺎ ذﻟﻚ ﻓﻲ ﻣﺘﻐﯿﺮ اﺳﻤﻪ SQLﻻﺣﻆ أن ﻣﺎ ﻛﺘﺐ
ﺑﺎﻷﺣﻤﺮ ﺛﺎﺑﺖ ﺗﻘﺮﯾﺒﺎ و ﻻ ﯾﺘﻐﯿﺮ
دﻋﻮﻧﺎ ﻧﻠﻘﻲ ﻧﻈﺮه ﻋﻠﻰ ﻃﺮق اﻻﺳﺘﻌﻼم
إذا أردت أن ﺗﺴﺘﻌﻠﻢ ﻋﻦ ﺟﻤﯿﻊ اﻟﺤﻘﻮل ﻓﻲ ﺟﺪول ﺑﺪون ﺷﺮط اﺳﺘﺨﺪم اﻟﻨﺠﻤﺔ ﻟﺘﻌﺒﺮ ﻋﻦ ﺟﻤﯿﻊ
اﻟﺤﻘﻮل و ﻻ ﺗﻀﻊ ﺷﺮﻃﺎ ﻣﺜﻞ ﻫﺬا اﻻﺳﺘﻌﻼم:
" SQL = "select * from Tb
إذا أردت أن ﺗﺴﺘﻔﺴﺮ ﻋﻦ ﻗﯿﻢ ﺣﻘﻠﯿﻦ ﺑﺪون ﺷﺮط اﻛﺘﺐ اﺳﻢ اﻟﺤﻘﻠﯿﻦ ﺑﯿﻨﻬﻤﺎ ﻓﺎﺻﻠﺔ و ﻻ ﺗﻀﻊ ﺷﺮﻃﺎ
ﻛﺎﻟﺘﺎﻟﻲ:
" SQL = "select name,number from Tb
إذا أردت أن ﺗﺴﺘﻔﺴﺮ ﻋﻦ ﺣﻘﻞ ﻣﻌﯿﻦ ﺑﺸﺮط ﻣﺎ اﺳﺘﺨﺪم اﻟﺼﯿﻐﺔ اﻟﺘﺎﻟﯿﺔ:
" SQL = "select name from Tb where number = 444
ﯾﻤﻜﻨﻚ اﺳﺘﺨﺪام ﺻﯿﻎ اﻟﻤﻘﺎرﻧﺔ > أو < أو =< أو => أو >< ﺑﺪﻻ ﻣﻦ=
ﻋﻨﺪﻣﺎ ﺗﺮﯾﺪ اﻻﺳﺘﻌﻼم و اﺳﺘﺨﺪام أﻛﺜﺮ ﻣﻦ ﺷﺮط ﺿﻊ ﺑﯿﻦ اﻟﺸﺮﻃﯿﻦ ﻋﺒﺎرة Andأو ORﺣﺴﺐ
ﺣﺎﺟﺘﻚ ﻛﺎﻟﺘﺎﻟﻲ:
" SQL = "select name from Tb where number = 444 or number = 555
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
ﻣﻌﺮﻓﺔ دواﻋﻲ اﺳﺘﺨﺪام اﻻﺳﺘﻌﻼم اﺳﺘﺨﺪام اﻻﺳﺘﻌﻼم اﻟﻤﺸﺮوط
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻟﻐﺔ اﻻﺳﺘﻔﺴﺎرات(2) SQL
اﻟﻤﻘﺪﻣﺔ:
ﻓﻲ ﻫﺬا اﻟﺪرس ﺳﻮف ﻧﺘﻌﻠﻢ اﺳﺘﺨﺪام ﻟﻐﺔ اﻻﺳﺘﻔﺴﺎر ﻓﻲ ﺗﻄﺒﯿﻖ ﻓﯿﺠﻮال ﺑﯿﺴﻚ ،ﻣﻦ ﺣﯿﺚ ﻛﯿﻔﯿﺔ
اﻻﺳﺘﻔﺴﺎر ﻋﻦ ﻗﯿﻤﺔ ﻣﺪﺧﻠﺔ ﻣﻦ ﻗﺒﻞ اﻟﻤﺴﺘﺨﺪم و ﻛﯿﻔﯿﺔ وﺿﻊ ﻧﺘﺎﺋﺞ اﻟﺒﺤﺚ ﻓﻲ listboxو
combo box
اﻟﺪرس١٠
ﻛﯿﻒ ﻧﺘﻌﺎﻣﻞ ﻣﻊ ﺟﻤﻠﺔ SQLﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ؟ ﻫﺬا ﻫﻮ اﻟﺴﺆال اﻟﺬي ﺳﻮف ﻧﻘﻮم ﺑﺎﻹﺟﺎﺑﺔ ﻋﻠﯿﻪ اﻵن
ﯾﺠﺐ ﻋﻠﯿﻚ أن ﺗﻌﺮف اﻟﻔﻜﺮة اﻟﺘﻲ ﺳﻨﻘﻮم ﺑﺘﻨﻔﯿﺬﻫﺎ ،أول ﺷﻲء ﺳﻮف ﻧﻘﻮم ﺑﻌﻤﻠﯿﺔ اﻻﺳﺘﻌﻼم
و ذﻟﻚ ﺑﻜﺘﺎﺑﺔ ﺟﻤﻠﺔ اﻻﺳﺘﻌﻼم ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ ﻓﻲ اﻟﻤﻜﺎن اﻟﺬي ﺗﺮﯾﺪه و ﻏﺎﻟﺒﺎ ﻣﺎ
ﯾﻜﻮن ﻓﻲ زر أو ﻋﻨﺪ ﺣﺪث اﻟﺘﺤﻤﯿﻞ ،ﺑﻌﺪ ذﻟﻚ ﺳﻨﺤﺼﻞ ﻋﻠﻰ ﻧﺘﺎﺋﺞ اﻻﺳﺘﻌﻼم و ﻟﻜﻲ ﻧﻘﻮم ﺑﻘﺮاءﺗﻬﺎ
و إﻇﻬﺎرﻫﺎ ﯾﺠﺐ أوﻻ أن ﻧﺨﺰﻧﻬﺎ ﻓﻲ ﺟﺪول ،و ﻫﻨﺎ ﻓﺎﺋﺪة اﻟﺠﺪول اﻟﻤﺴﺘﻌﺎر ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﺪروس
اﻷوﻟﻰ ﺣﯿﺚ ﺳﻨﻘﻮم ﺑﺘﺨﺰﯾﻦ اﻟﻨﺎﺗﺞ ﻓﯿﻪ ،ﺑﻌﺪ ذﻟﻚ ﺳﻨﻘﻮم ﺑﻌﺮض اﻟﻨﺘﺎﺋﺞ ﻣﻦ اﻟﺠﺪول ،ﺳﻨﻔﺮض
أن ﻟﺪﯾﻨﺎ اﻟﺠﺪول اﻟﺘﺎﻟﻲ:
اﺳﻢ اﻟﺠﺪول tb
name
num
ahmad
1442
saleh
5425
sami
1442
ﻟﻜﻲ ﻧﺴﺘﻌﻠﻢ ﻋﻦ اﻷﺳﻤﺎء اﻟﺘﻲ أرﻗﺎﻣﻬﺎ ١٤٤٢ﻧﻜﺘﺐ اﻟﺠﻤﻠﺔ اﻟﺘﺎﻟﯿﺔ:
" SQL = "select name from Tb where num = 1442
ﻫﻜﺬا ﻧﻜﻮن ﻗﺪ ﻗﻤﻨﺎ ﺑﺎﻻﺳﺘﻌﻼم ﺑﻌﺪ ذﻟﻚ ﺗﺄﺗﻲ اﻟﺨﻄﻮة اﻟﺘﺎﻟﯿﺔ و ﻫﻲ ﺗﺨﺰﯾﻦ اﻟﻨﺘﺎﺋﺞ ﻓﻲ اﻟﺠﺪول
اﻟﻤﺴﺘﻌﺎر و اﻟﺬي ﻧﻘﻮم ﺑﺘﻌﺮﯾﻔﻪ ) ﻟﻤﺰﯾﺪ ﻣﻦ اﻟﺘﻮﺿﯿﺢ راﺟﻊ اﻟﺪروس اﻟﺴﺎﺑﻘﺔ( ﻋﺎدة ﻓﻲ اﻟﻤﻮدﯾﻮل
ﻛﻤﺎ ﻗﻤﻨﺎ ﺑﻪ ﻓﻲ اﻟﺪروس اﻟﺴﺎﺑﻘﺔ و ﻟﻨﻔﺮض أن اﺳﻤﻪ Tو أن اﺳﻢ اﻟﻤﺘﻐﯿﺮ اﻟﺬي ﻗﻤﻨﺎ ﺑﺘﺨﺰﯾﻦ
ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻓﯿﻪ Dو اﻟﺘﻲ ﻛﻨﺎ ﻧﻄﻠﻖ ﻋﻠﯿﻬﺎ اﻟﻘﺎﻋﺪة اﻟﻤﺴﺘﻌﺎرة ﺳﻨﻜﺘﺐ اﻷﻣﺮ اﻟﺘﺎﻟﻲ ﻟﻜﻲ ﻧﺨﺰن
ﻧﺘﺎﺋﺞ اﻻﺳﺘﻌﻼم ﻓﻲ اﻟﺠﺪول:
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
)Set T=D.openrecordset(SQL,dbopendynaset
ﻻ ﺣﻆ أﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺎﺳﺘﺨﺪام اﻷﺳﻤﺎء اﻟﻤﺴﺘﻌﺎرة ﻟﻠﺠﺪول و ﻗﺎﻋﺪﯾﺔ اﻟﺒﯿﺎﻧﺎت و ﻫﻲ اﻟﻤﺘﻐﯿﺮات اﻟﺘﻲ
أﻋﻠﻨﺎ ﻋﻨﻬﺎ ﻓﻲ اﻟﺒﺪاﯾﺔ ) راﺟﻊ دروس ﺳﺎﺑﻘﺔ ﻟﻤﺰﯾﺪ ﻣﻦ اﻟﺘﻔﺎﺻﯿﻞ( ،ﻟﻘﺪ ﻗﻤﻨﺎ ﻓﻲ اﻷﻣﺮ اﻟﺴﺎﺑﻖ
ﺑﺘﺨﺰﯾﻦ ﻗﯿﻢ اﻻﺳﺘﻌﻼم ﻓﻲ اﻟﺠﺪول ﺣﯿﺚ ﻛﺘﺒﻨﺎ SQLو ﻫﻲ ﻗﯿﻤﺔ ﻣﺘﻐﯿﺮ اﻻﺳﺘﻌﻼم اﻟﺬي ﺗﻮﺟﺪ ﻓﯿﻪ
اﻟﻘﯿﻢ ،ﺑﻌﺪ ذﻟﻚ ﻗﻤﻨﺎ ﺑﻮﺿﻊ ﻧﻮع اﻻﺗﺼﺎل أو ﺑﺎﻷﺻﺢ ﻧﻮع اﻟﺮﺑﻂ اﻟﻤﺮاد إن ﺻﺢ اﻟﺘﻌﺒﯿﺮ ﻋﻠﻰ اﻟﻌﻤﻮم
و ﻛﻤﺎ ﻗﻠﻨﺎ أن ﻫﻨﺎك أﺷﯿﺎء ﻻ ﯾﺘﻄﻠﺐ ﻣﻨﻚ ﺳﻮى ﻣﻌﺮﻓﺘﻬﺎ ﻣﺮة واﺣﺪة ﻓﻘﻂ و ﺳﺘﻘﻮم ﺑﺘﺮﻛﯿﺒﻬﺎ ﺣﺴﺐ
اﺳﺘﺨﺪاﻣﻚ
و اﻵن ﺑﻌﺪ أن ﻗﻤﻨﺎ ﺑﺘﺨﺰﯾﻦ اﻟﻘﯿﻢ ﻓﻲ اﻟﺠﺪول ﻧﺮﯾﺪ أن ﻧﻈﻬﺮ اﻟﺒﯿﺎﻧﺎت و ﯾﻤﻜﻨﻚ إﻇﻬﺎرﻫﺎ ﻓﻲ ﻋﺪة
إﺷﻜﺎل ﻛﻤﺎ ﺗﺮﯾﺪ ﻓﯿﻤﻜﻨﻚ و ﺿﻌﻬﺎ ﻓﻲ ﻣﺮﺑﻌﺎت ﻧﺺ أو ﻗﻮاﺋﻢ ﺳﻮاء Listأو COMBOوﻟﻜﻞ
ﻃﺮﯾﻘﺔ ﺗﺨﺘﻠﻒ ﻧﻮﻋﺎ ﻣﺎ ﻋﻦ اﻷﺧﺮى
ﻣﺮﺑﻊ اﻟﻨﺺ Text Box :
ﻟﻜﻲ ﺗﻈﻬﺮ اﻟﻨﺘﺎﺋﺞ ﻓﻲ ﻣﺮﺑﻊ اﻟﻨﺺ ﻓﻠﻦ ﺗﺤﺘﺎج إﻻ ﻹﺟﺮاء اﻹﻇﻬﺎر ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﺴﺎﺑﻖ و ﺗﻘﻮم
ﺑﻜﺘﺎﺑﺘﻪ ﺑﻌﺪ أﻣﺮ ﺗﺨﺰﯾﻦ ﻧﺘﺎﺋﺞ اﻻﺳﺘﻌﻼم ﻓﻲ اﻟﺠﺪول
List Box :
ﻟﺘﻀﻊ اﻟﻨﺘﺎﺋﺞ ﻓﻲ ﻗﺎﺋﻤﺔ ListBox :ﻟﻦ ﺗﺤﺘﺎج ﻟﻜﺜﯿﺮ ﻣﻦ اﻟﺨﻄﻮات ﻓﺎﻷﻣﺮ رﺑﻤﺎ أﺳﻬﻞ ﻣﻤﺎ ﺗﺘﺼﻮر ،
ﻓﻘﻂ ﺗﺤﺘﺎج ﻟﻬﺬا اﻟﻜﻮد:
For i = 1 To n
List1.AddItem TB!name
TB.MoveNext
Next i
ﻗﻤﻨﺎ ﺑﻌﻤﻞ ﺗﻜﺮار ﺑﻌﺪد اﻟﺤﻘﻮل ﻟﻜﻲ ﯾﺘﻢ ﺗﻌﺒﺌﺔ ﺟﻤﯿﻊ اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﺠﺪول و ﻟﻘﺪ ﻋﺮﻓﻨﺎ ﻛﯿﻔﯿﺔ ﻣﻌﺮﻓﺔ
ﻋﺪد اﻟﺤﻘﻮل ﻓﻲ دروس اﻟﺮﺑﻂ ﺑﺎﻟﻜﻮد اﻟﺴﺎﺑﻘﺔ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺑﻌﺪ ذﻟﻚ ﻛﺘﺒﻨﺎ اﺳﻢ اﻟﻘﺎﺋﻤﺔ وﻫﻮ List1ﺛﻢ اﺳﺘﺨﺪﻣﻨﺎ ﺧﺎﺻﯿﺔ إﺿﺎﻓﺔ ﻋﻨﺼﺮ و ﺑﻌﺪ ذﻟﻚ ﻧﻜﺘﺐ اﺳﻢ
اﻟﺠﺪول اﻟﺬي ﺳﻮف ﻧﺄﺧﺬ اﻟﺒﯿﺎﻧﺎت ﻣﻨﻪ و ﺛﻢ اﺳﻢ اﻟﺤﻘﻞ اﻟﻤﺮاد ﯾﻔﺼﻞ ﺑﯿﻨﻬﻤﺎ ﻋﻼﻣﺔ ﺗﻌﺠﺐ ،ﺑﻌﺪ ذﻟﻚ
ﺧﻄﻮة ﻣﻬﻤﺔ و ﻫﻲ اﻻﻧﺘﻘﺎل ﻟﻠﺴﺠﻞ اﻟﺘﺎﻟﻲ ﻟﻜﻲ ﯾﻘﻮم ﺑﺘﻌﺒﺌﺔ اﻟﻘﯿﻢ اﻷﺧﺮى و إذا ﻟﻢ ﺗﻀﻊ ﻫﺬا اﻷﻣﺮ
ﺳﻮف ﺗﻜﻮن ﺟﻤﯿﻊ اﻷﺳﻤﺎء اﺳﻢ اﻟﺤﻘﻞ اﻷول ،ﻫﺬا ﻛﻞ ﺷﻲء
: ComboBox
ﻻ ﺗﺨﺘﻠﻒ ﻃﺮﯾﻘﺔ ﺗﻌﺒﺌﺔ ﻫﺬه اﻟﻘﺎﺋﻤﺔ ﻋﻦ اﻟﻄﺮﯾﻘﺔ اﻟﺴﺎﺑﻘﺔ أﺑﺪا ﻗﻢ ﺑﻨﻔﺲ اﻟﺨﻄﻮات
اﺳﺘﻘﺒﺎل اﻟﻤﺪﺧﻼت ﻣﻦ اﻟﻤﺴﺘﺨﺪم:
ﻟﻦ ﺗﺴﺘﻔﯿﺪ ﺣﻘﯿﻘﯿﺎ ﻣﻦ اﻟﺒﺮاﻣﺞ اﻟﺘﻲ ﺗﻌﻤﻠﻬﺎ إذا ﻟﻢ ﺗﻌﺮف ﻃﺮﯾﻘﺔ اﺳﺘﻘﺒﺎل اﻟﻘﯿﻢ ﻣﻦ اﻟﻤﺴﺘﺨﺪم ﺛﻢ ﻋﻤﻞ
اﻻﺳﺘﻌﻼم ﻋﻠﯿﻬﺎ ﻷﻧﻪ ﻣﻦ ﻏﯿﺮ اﻟﻤﻨﻄﻘﻲ أن ﯾﻘﻮم اﻟﻤﺴﺘﺨﺪم ﺑﺎﻟﺮﺟﻮع إﻟﯿﻚ ﻋﻨﺪ ﻛﻞ ﻋﻤﻠﯿﺔ اﺳﺘﻌﻼم
،و ﻃﺮﯾﻘﺔ اﻻﺳﺘﻘﺒﺎل ﻫﻨﺎ ﻟﻬﺎ ﻃﺮﯾﻘﺔ ﺧﺎﺻﺔ ﻧﻮﻋﺎ ﻣﺎ ﺳﻨﻌﺮﻓﻬﺎ ﺑﻌﺪ ﻗﻠﯿﻞ ،ﻏﺎﻟﺒﺎ ﻣﺎ ﺗﻘﻮم ﺑﺎﺳﺘﻘﺒﺎل
اﻟﻘﯿﻢ ﻣﻦ اﻟﻤﺴﺘﺨﺪم ﻣﻦ ﻣﺮﺑﻊ ﻧﺺ Text Boxو اﻟﻤﺸﻜﻠﺔ اﻟﺘﻲ ﺗﻮاﺟﻬﻨﺎ ﺑﯿﻦ اﻟﻤﺪﺧﻼت اﻟﻨﺼﯿﺔ
و اﻟﺮﻗﻤﯿﺔ و ﯾﻌﺘﻤﺪ ذﻟﻚ ﻋﻠﻰ ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻟﻠﺤﻘﻞ اﻟﻤﻌﻨﻲ دﻋﻮﻧﺎ ﻧﺮى أﻣﺜﻠﺔ ﻋﻠﻰ ذﻟﻚ:
اﻓﺮض أﻧﻚ ﻗﻤﺖ ﺑﻌﻤﻞ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﻓﯿﻬﺎ ﺣﻘﻠﯿﻦ اﻻﺳﻢ nameو ﺣﺪدت ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻟﻬﺬا اﻟﺤﻘﻞ
ﺑﺄﻧﻬﺎ ﻧﺼﯿﺔ و اﻟﺤﻘﻞ اﻵﺧﺮ اﻟﺮﻗﻢ numو ﺣﺪدت اﻟﺒﯿﺎﻧﺎت ﻟﻪ ﺑﺄﻧﻬﺎ رﻗﻤﯿﺔ ،و ﻗﻤﺖ ﺑﺮﺑﻂ اﻟﻘﺎﻋﺪ ﻣﻊ
اﻟﺒﺮﻧﺎﻣﺞ ﺑﻄﺮﯾﻘﺘﻨﺎ اﻟﺘﻲ ﺗﻌﻠﻤﻨﺎﻫﺎ و اﻵن ﻧﺮﯾﺪ أن ﻧﺴﺘﻌﻠﻢ ﻋﻦ اﻟﺮﻗﻢ ﻟﻠﺸﺨﺺ اﻟﺬي ﯾﺤﺪده اﻟﻤﺴﺘﺨﺪم
ﺳﻨﻘﻮم ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ ﺑﺈﻧﺸﺎء ﻣﺮﺑﻊ ﻧﺺ ﻟﻜﻲ ﯾﺪﺧﻞ اﻟﻤﺴﺘﺨﺪم اﻻﺳﻢ اﻟﺬي ﯾﺮﯾﺪه ﺛﻢ ﻧﻨﺸﺄ زر ﯾﻘﻮم
اﻟﻤﺴﺘﺨﺪم ﺑﺎﻟﻀﻐﻂ ﻋﻠﯿﻪ ﻟﺘﺘﻢ ﻋﻤﻠﯿﺔ اﻻﺳﺘﻌﻼم ،و ﺳﺘﻜﻮن ﺟﻤﻠﺔ اﻻﺳﺘﻌﻼم ﻋﺎدﯾﺔ ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ و ﺑﺪﻻ
ﻣﻦ أن ﻧﻀﻊ اﻟﻘﯿﻤﺔ اﻟﺘﻲ ﺳﻨﺴﺘﻌﻠﻢ ﻋﻨﻬﺎ ﺳﻨﻀﻊ اﻟﻘﯿﻤﺔ اﻟﺘﻲ ادﺧﻠﻬﺎ اﻟﻤﺴﺘﺨﺪم ﻓﻲ ﻣﺮﺑﻊ اﻟﻨﺺ ﻣﻦ
اﻟﻤﺘﻮﻗﻊ أن ﯾﻜﻮن اﻟﻜﻮد اﻟﻤﻄﻠﻮب ﻟﻼﺳﺘﻌﻼم ﻓﻲ ﻫﺬه اﻟﺤﺎﻟﺔ اﻟﺘﺎﻟﻲ:
" SQL = "select num from tb where name = text1.text
ﻫﺬه ﻫﻲ اﻟﺠﻤﻠﺔ اﻟﻤﺘﻮﻗﻌﺔ ﻟﻜﻨﻬﺎ ﺧﺎﻃﺌﺔ ،ﺑﻬﺬه اﻟﻄﺮﯾﻘﺔ ﯾﻜﻮن اﻻﺳﺘﻌﻼم ﻋﻦ ﻋﺪد
ﻻﻧﻬﺎﺋﻲ ﻣﻦ اﻟﺨﺎﻧﺎت و ﻫﺬي إن ﺻﺢ اﻟﺘﻌﺒﯿﺮ ﻋﯿﺐ ﻓﻲ ﻣﺮﺑﻊ اﻟﻨﺺ و ﻟﻜﻲ ﻧﺘﻼﻓﻰ ﻫﺬا اﻟﺨﻄﺄ ﻧﻘﻮم
ﺑﻤﺎ ﯾﺴﻤﻰ ﺑﺎﻟﺤﺼﺮ ﻋﻠﻰ أﺳﺎس ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻓﻲ nameﻓﻲ ﺣﺎﻟﺘﻨﺎ ﻫﺬه ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﺣﺮﻓﯿﺔ ﻟﺬا
ﺗﻜﻮن ﻃﺮﯾﻘﺔ اﻟﺤﺼﺮ ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ:
' " & ' " & text1.text
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻟﻘﺪ ﻗﻤﻨﺎ ﺑﻮﺿﻊ ﻋﻼﻣﺘﻲ ﺗﻨﺼﯿﺺ ﻣﺰدوﺟﺔ ﻋﻠﯿﻬﺎ ﯾﻔﺼﻞ ﺑﯿﻨﻬﺎ ﻋﻼﻣﺔ اﻟﺠﻤﻊ & ﺛﻢ ﻗﻤﻨﺎ ﺑﺤﺼﺮﻫﻢ
ﺟﻤﯿﻌﺎ ﺑﻌﻼﻣﺔ ﺗﻨﺼﯿﺺ ﻣﻔﺮدة ،اﻟﺨﻄﻮة اﻷﺧﯿﺮة و ﻫﻲ وﺿﻊ ﻋﻼﻣﺔ اﻟﺘﻨﺼﯿﺺ اﻟﻤﻔﺮدة ﺗﻜﻮن
ﻟﻠﺤﻘﻮل اﻟﺤﺮﻓﯿﺔ و ﻻ ﻧﺤﺘﺎﺟﻬﺎ ﻓﻲ اﻟﺤﻘﻮل اﻟﺮﻗﻤﯿﺔ ،ﻗﻢ ﺑﺘﺠﺮﺑﺔ ذﻟﻚ اﻵن ﻟﻜﻲ ﺗﺴﺘﻮﻋﺒﻬﺎ ﺟﯿﺪا
اﻓﺮض أن اﻟﻤﻄﻠﻮب اﻵن ﻫﻮ اﻟﻌﻜﺲ ،ﺑﺤﯿﺚ ﯾﻘﻮم اﻟﻤﺴﺘﺨﺪم ﺑﺈدﺧﺎل اﻟﺮﻗﻢ و ﯾﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ
ﺑﺎﻻﺳﺘﻌﻼم ﻋﻦ اﻷﺳﻤﺎء اﻟﺘﻲ ﺗﺤﻤﻞ ﻫﺬا اﻟﺮﻗﻢ ﺳﯿﻜﻮن اﻟﻜﻮد ﻧﻔﺲ اﻟﺴﺎﺑﻖ ﻣﻊ ﺗﻐﯿﯿﺮ اﺳﻢ اﻟﺤﻘﻞ
ﺑﻄﺒﯿﻌﺔ اﻟﺤﺎل و أﯾﻀﺎ ﻋﺪم وﺿﻊ ﻋﻼﻣﺔ اﻟﺘﻨﺼﯿﺺ اﻟﻤﻔﺮدة ﻛﺎﻟﺘﺎﻟﻲ:
" '" & SQL = "select num from tb where name = '" & text1.text
اﻓﺮض أن اﻟﻤﻄﻠﻮب اﻵن ﻫﻮ اﻟﻌﻜﺲ ،ﺑﺤﯿﺚ ﯾﻘﻮم اﻟﻤﺴﺘﺨﺪم ﺑﺈدﺧﺎل اﻻﺳﻢ و ﯾﻘﻮم اﻟﺒﺮﻧﺎﻣﺞ
ﺑﺎﻻﺳﺘﻌﻼم ﻋﻦ اﻟﺮﻗﻢ اﻟﺘﻲ ﺗﺤﻤﻞ ﻫﺬا اﻻﺳﻢ ﺳﯿﻜﻮن اﻟﻜﻮد ﻧﻔﺲ اﻟﺴﺎﺑﻖ ﻣﻊ ﺗﻐﯿﯿﺮ اﺳﻢ اﻟﺤﻘﻞ
ﺑﻄﺒﯿﻌﺔ اﻟﺤﺎل و أﯾﻀﺎ ﻋﺪم وﺿﻊ ﻋﻼﻣﺔ اﻟﺘﻨﺼﯿﺺ اﻟﻤﻔﺮدة ﻛﺎﻟﺘﺎﻟﻲ:
" " & SQL = "select name from tb where num = " & text1.text
ﻫﺬا ﻛﻞ ﺷﻲء ﺑﺎﻟﻨﺴﺒﺔ ﻟﻠﺪرس اﻟﺜﺎﻧﻲ ﻣﻦ ﻟﻐﺔ اﻻﺳﺘﻔﺴﺎر ﺳﯿﻮﺿﺢ اﻟﺠﺪول اﻟﺘﺎﻟﻲ ﺑﻌﺾ اﻟﻨﻘﺎط
اﻟﻤﻬﻤﺔ ﻓﻲ ﻫﺬا اﻟﺪرس ﺑﺎﻟﻨﺴﺒﺔ ﻻﺳﺘﻘﺒﺎل اﻟﻤﺪﺧﻼت ﻣﻦ اﻟﻤﺴﺘﺨﺪم ،و ﻓﻲ اﻟﺪرس اﻟﺜﺎﻟﺚ ﻟﻠﻐﺔ
اﻻﺳﺘﻔﺴﺎر ﺳﻨﺘﻄﺮق ﻟﻤﻮاﺿﯿﻊ ﻣﺘﻘﺪﻣﺔ ﻣﺜﻞ اﻻﺳﺘﻔﺴﺎر ﻣﻦ ﺟﺪوﻟﯿﻦ
" & " & text1.text
'" & '" & text1.text
ﻋﺪدﯾﺔ و ﯾﺤﺪد ﻧﺴﺘﺨﺪم ﻫﺬه اﻟﻄﺮﯾﻘﺔ ﻋﻨﺪﻣﺎ ﺗﻜﻮن ﺑﯿﺎﻧﺎت اﻟﺸﺮط رﻗﻤﯿﺔ أو
ذﻟﻚ ﻣﻦ ﯾﻨﺸﺄ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت
ﻧﻮع اﻟﺒﯿﺎﻧﺎت ﻧﺴﺘﺨﺪم ﻫﺬه اﻟﻄﺮﯾﻘﺔ ﻋﻨﺪﻣﺎ ﺗﻜﻮن ﺑﯿﺎﻧﺎت ﺣﻘﻞ اﻟﺸﺮط ﻣﻦ
اﻟﺤﺮﻓﯿﺔ
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
ﻃﺮﯾﻘﺔ اﺳﺘﻌﻤﺎل اﻻﺳﺘﻌﻼم ﻓﻲ اﻟﺘﻄﺒﯿﻖ
ﻃﺮﯾﻘﺔ ﻋﺮض اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﻘﺎﺋﻤﺔ ﺑﻨﻮﻋﯿﻬﺎ
ﻃﺮﯾﻘﺔ اﺳﺘﻘﺒﺎل ﻣﺪﺧﻼت اﻟﻤﺴﺘﺨﺪم و اﻻﺳﺘﻌﻼم ﻋﻠﻰ أﺳﺎﺳﻬﺎ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻟﻐﺔ اﻻﺳﺘﻔﺴﺎرات(٣) SQL
اﻟﻤﻘﺪﻣﺔ:
ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﺪرس اﻟﺴﺎﺑﻖ اﺳﺘﺨﺪام اﻻﺳﺘﻌﻼم ﻓﻲ اﻟﺘﻄﺒﯿﻖ و ﻫﺬه أﻫﻢ ﻧﻘﻄﺔ ﻓﻲ ﻟﻐﺔ اﻻﺳﺘﻌﻼم،
واﻵن ﺳﻨﺘﻌﻠﻢ ﺗﻄﺒﯿﻖ ﻣﺘﻘﺪم ﻓﻲ ﻟﻐﺔ اﻻﺳﺘﻌﻼم و ﻫﻮ اﻻﺳﺘﻌﻼم ﻣﻦ أﻛﺜﺮ ﻣﻦ ﺟﺪول ،ﻋﻨﺪﻣﺎ ﻧﻘﻮل
اﻻﺳﺘﻌﻼم ﻣﻦ أﻛﺜﺮ ﻣﻦ ﺟﺪول ﻧﻘﺼﺪ ﻣﺜﻼ أن ﯾﻄﻠﺐ ﻣﻨﺎ اﻻﺳﺘﻌﻼم ﻋﻦ اﻷﺷﺨﺎص اﻟﺬﯾﻦ
ﯾﻌﻤﻠﻮن ﺿﻤﻦ ﻗﺴﻢ اﻟﻤﺤﺎﺳﺒﺔ ،اﻟﺸﺮط ﻫﻨﺎ ﻫﻮ اﻟﻌﻤﻞ ﻓﻲ ﻗﺴﻢ اﻟﻤﺤﺎﺳﺒﺔ ﻟﻜﻦ اﻟﺸﺮط ﻏﯿﺮ ﻣﻮﺟﻮد
ﻓﻲ اﻟﺠﺪول ؟ إذا ﻛﯿﻒ ﺳﻨﻘﻮم ﺑﺎﻻﺳﺘﻌﻼم ؟ ﺳﻨﻘﻮم ﺑﺎﻻﺳﺘﻌﻼم ﻋﻦ اﻟﺸﺮط ﻣﻦ ﺟﺪول آﺧﺮ ﺛﻢ ﻧﺮﺟﻊ
اﻟﻨﺘﯿﺠﺔ و ﯾﺴﺘﻌﻠﻢ ﻓﻲ اﻻﺳﺘﻌﻼم اﻷﺳﺎﺳﻲ ﻋﻠﯿﻬﺎ و ﺑﺬﻟﻚ ﯾﻜﻮن ﻟﺪﯾﻨﺎ اﺳﺘﻌﻼﻣﯿﻦ ،و ﻟﻜﻦ ﯾﺠﺐ أن
ﯾﻜﻮن ﻫﻨﺎك ﺣﻘﻞ ﻣﺸﺘﺮك ﺑﯿﻦ اﻟﺠﺪوﻟﯿﻦ ،ﺳﯿﺘﻀﺢ ﻛﻞ ذﻟﻚ ﻓﻲ اﻟﺴﻄﻮر اﻟﺘﺎﻟﯿﺔ
اﻟﺪرس١١
ﻗﺒﻞ أن ﻧﺒﺪأ اﻓﺮض أن ﻟﺪﯾﻨﺎ اﻟﺠﺪوﻟﯿﻦ اﻟﺘﺎﻟﯿﯿﻦ:
tb1
tb2
deptn deptname
1
اﻟﻬﻨﺪﺳﺔ
2
اﻟﻜﻤﺒﯿﻮﺗﺮ
3
اﻟﻤﺤﺎﺳﺒﺔ
job deptno
ﻣﺤﺎﺳﺐ
3
ﻣﺪﯾﺮ
1
ﻣﺒﺮﻣﺞ
2
ﻣﻬﻨﺪس
1
ﺳﻜﺮﺗﯿﺮ
3
sal
6000
12000
5500
8500
5000
name
ﺟﻤﯿﻞ
ﺳﺎﻣﻲ
ﺑﺪر
ﻣﻬﻨﺪ
ﺻﺎﻟﺢ
ﻧﺮﯾﺪ اﻻﺳﺘﻌﻼم ﻋﻦ أﺳﻤﺎء اﻟﻤﻮﻇﻔﯿﻦ اﻟﺬﯾﻦ ﯾﻨﺘﻤﻮن ﻟﻘﺴﻢ ﻣﺎ و ﻟﻨﻔﺮض أﻧﻨﺎ ﻧﺮﯾﺪ ﻣﻦ ﯾﻨﺘﻤﻲ ﻟﻘﺴﻢ
اﻟﻬﻨﺪﺳﺔ ،ﺳﺘﻜﻮن ﺻﯿﻐﺔ اﻻﺳﺘﻌﻼم ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ " ﺣﺪد ﺣﻘﻞ اﻻﺳﻢ ﻣﻦ اﻟﺠﺪول tb1ﻋﻨﺪﻣﺎ
ﯾﻜﻮن اﺳﻢ اﻟﻘﺴﻢ اﻟﻬﻨﺪﺳﺔ " ،ﻟﻜﻦ ﻫﻨﺎك ﻣﺸﻜﻠﺔ ﺣﯿﺚ ﻻ ﯾﻮﺟﺪ ﺣﻘﻞ ﺑﺎﺳﻢ اﻟﻘﺴﻢ ﻓﻲ ﻧﻔﺲ اﻟﺠﺪول
ﻟﻜﻦ ﯾﻮﺟﺪ اﺳﻢ اﻟﻘﺴﻢ ﻓﻲ ﺟﺪول آﺧﺮ ،وﯾﻮﺟﺪ ﻓﻲ اﻟﺠﺪول اﻟﺬي ﻟﺪﯾﻨﺎ رﻗﻢ اﻟﻘﺴﻢ ﻟﻜﻨﻨﺎ ﻧﺮﯾﺪ اﻟﺒﺤﺚ
ﻋﻠﻰ أﺳﺎس اﺳﻢ اﻟﻘﺴﻢ و ﻟﯿﺲ رﻗﻤﻪ ،إذا ﯾﺠﺐ أن ﻧﺤﺼﻞ ﻋﻠﻰ اﺳﻢ اﻟﻘﺴﻢ ﻣﻦ اﻟﺠﺪول اﻵﺧﺮ ،
وﻟﻠﺤﺼﻮل ﻋﻠﻰ ﻣﻌﻠﻮﻣﺎت ﻣﻦ ﺟﺪول آﺧﺮ ﯾﺠﺐ ﺗﺤﻘﻖ ﺷﺮط ﻣﻬﻢ و ﻫﻮ وﺟﻮد ﺣﻘﻞ ﻣﺸﺘﺮك ﺑﯿﻦ
اﻟﺠﺪوﻟﯿﻦ و ﻫﺬا ﯾﻨﻄﺒﻖ ﻓﻲ ﺣﺎﻟﺘﻨﺎ ،إذا ﺳﺘﻜﻮن ﺻﯿﻐﺔ اﻻﺳﺘﻌﻼم ﻋﻠﻰ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ " :ﺣﺪد ﺣﻘﻞ
اﻻﺳﻢ ﻣﻦ اﻟﺠﺪول tb1ﻋﻨﺪﻣﺎ ﯾﻜﻮن اﺳﻢ اﻟﻘﺴﻢ ﯾﺴﺎوي )ﺣﺪد اﺳﻢ اﻟﻘﺴﻢ ﻣﻦ اﻟﺠﺪول tb2ﻋﻨﺪﻣﺎ
ﯾﻜﻮن رﻗﻢ اﻟﻘﺴﻢ( "١
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻫﻜﺬا وﺿﻌﻨﺎ اﻻﺳﺘﻌﻼم ﺑﺎﻟﺼﻮرة اﻟﻤﻄﻠﻮﺑﺔ ﺣﯿﺚ ﻛﻨﺎ ﻧﻔﺘﻘﺪ ﻟﻠﺸﺮط ﻓﻲ اﻻﺳﺘﻌﻼم اﻷول ﻟﻌﺪم
وﺟﻮده ﻓﻲ ﻧﻔﺲ اﻟﺠﺪول ﻟﺬا ﻗﻤﻨﺎ ﺑﻌﻤﻞ اﺳﺘﻌﻼم آﺧﺮ ﻓﺮﻋﻲ ﻟﻜﻲ ﻧﺤﺼﻞ ﻣﻨﻪ ﻋﻠﻰ اﻟﺸﺮط ،اﻵن
دﻋﻮﻧﺎ ﻧﺘﻌﻠﻢ ﻛﯿﻒ ﻧﻜﺘﺐ ﻣﺎ ﻗﻠﻨﺎه ﻣﻨﺬ ﻗﻠﯿﻞ ﺑﻠﻐﺔ اﻻﺳﺘﻌﻼم:
SQL = "select name from Tb1 where deptname = (select deptname form tb2
" )where deptno = 1
ﻗﺪ ﺗﺘﺴﺎءل ﻟﻤﺎذا ﻧﻘﻮم ﺑﻬﺬه اﻟﻌﻤﻠﯿﺔ اﻟﻄﻮﯾﻠﺔ ﻣﻊ أﻧﻪ ﺑﺈﻣﻜﺎﻧﻨﺎ أن ﻧﺸﺘﺮط ﺷﺮط ﻋﻠﻰ أﺳﺎس رﻗﻢ
اﻟﻘﺴﻢ اﻟﺬي ﯾﺘﻮﻓﺮ ﻟﺪﯾﻨﺎ ﺣﯿﺚ ﻧﻌﺮف أن ﻗﺴﻢ اﻟﻬﻨﺪﯾﺔ ﯾﺤﻤﻞ اﻟﺮﻗﻢ ١؟ اﻟﺠﻮاب و ﺑﻜﻞ ﺑﺴﺎﻃﺔ أﻧﻪ
ﻟﯿﺲ ﻓﻲ ﻛﻞ ﻣﺮة ﺳﺘﻌﺮف ذﻟﻚ ﺣﯿﺚ ﯾﻮﺟﺪ اﺳﺘﻌﻼﻣﺎت ﻣﻌﻘﺪة ﻻ ﯾﻤﻜﻨﻚ ﺑﺄن ﺗﻘﻮم ﺑﺤﺴﺎب اﻟﺸﺮط
ﺑﻨﻔﺴﻚ ﻟﻜﻲ ﺗﻀﻊ اﺳﺘﻌﻼم واﺣﺪ ،ﺣﯿﺚ أن ﺑﻌﺾ اﻟﺘﻄﺒﯿﻘﺎت ﯾﺠﺐ ﻋﻠﯿﻚ ﻓﯿﻬﺎ اﺳﺘﺨﺪام اﻻﺳﺘﻌﻼم
اﻟﻤﺮﻛﺐ و ﻗﺪ ﯾﺼﻞ ﻷﻛﺜﺮ ﻣﻦ اﺳﺘﻌﻼم ﻟﺤﻞ و إﯾﺠﺎد ﻗﯿﻤﺔ اﺳﺘﻌﻼم واﺣﺪ
ﻓﻲ اﻻﺳﺘﻌﻼم اﻟﻤﺘﻔﺮع ﻣﻦ اﺳﺘﻌﻼم ﻻ ﻧﻀﻊ ﻋﻼﻣﺘﻲ ﺗﻨﺼﯿﺺ ﻣﺰدوﺟﺔ ﻋﻠﻰ اﻟﺸﺮط اﻟﻨﺼﻲ ﺑﻞ
ﻧﻀﻊ ﻋﻼﻣﺔ ﺗﻨﺼﯿﺺ ﻣﻔﺮدة ﻣﺜﻞ ﻫﺬه '
ﻟﻢ أﺟﻌﻞ ﻫﺬا اﻟﺪرس ﻃﻮﯾﻞ وﻟﻢ أﺿﻒ إﻟﯿﻪ ﻧﻘﺎط أﺧﺮى ﻻﻋﺘﻘﺎدي ﺑﺄﻧﻪ ﻣﻦ أﻫﻢ اﻟﺪروس ﻓﻲ ﻟﻐﺔ
اﻻﺳﺘﻌﻼم و ﯾﺴﺘﺤﻖ أن ﯾﻔﺮد ﻟﻪ درس ﺧﺎص ،
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
ﻓﻬﻢ ﺳﺒﺐ اﺳﺘﺨﺪام اﻻﺳﺘﻌﻼم ﻣﻦ ﺟﺪوﻟﯿﻦ
ﻣﻌﺮﻓﺔ ﻛﯿﻔﯿﺔ اﻟﺘﻔﻜﯿﺮ ﻻﺳﺘﺨﺪام اﺳﺘﻌﻼم ﻟﺠﺪوﻟﯿﻦ
ﻋﻤﻞ اﺳﺘﻌﻼم ﻟﺠﺪوﻟﯿﻦ و ﻧﺠﺎح ذﻟﻚ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻟﻐﺔ اﻻﺳﺘﻔﺴﺎرات (٤) SQL
اﻟﻤﻘﺪﻣﺔ:
ﻓﻲ ﻫﺬا اﻟﺪرس ﺳﻮف ﻧﺘﻌﻠﻢ ﺑﻌﺾ اﻟﺘﻄﺒﯿﻘﺎت ﻋﻠﻰ اﻻﺳﺘﻌﻼم
اﻟﺪرس١٢
أﺣﯿﺎﻧﺎ ﻧﺤﺘﺎج اﻟﺤﺮوف اﻷوﻟﻰ ﻣﻦ ﺣﻘﻞ ﻣﺎ ،ﻓﻤﺜﻼ ﻓﻲ اﻟﺠﺎﻣﻌﺎت ﯾﻜﺘﺒﻮن اﻟﺤﺮوف اﻟﺜﻼﺛﺔ اﻷوﻟﻰ ﻣﻦ
اﺳﻢ اﻟﻤﻘﺮر ،و ﻏﯿﺮﻫﻢ أﯾﻀﺎ ﯾﺤﺘﺎج ﻟﻤﺜﻞ ﻫﺬه اﻟﺨﺎﺻﯿﺔ ،وﺳﻮف ﻧﺘﻌﻠﻢ ﻛﯿﻒ ﻧﻘﻮم ﺑﺎﺳﺘﺨﺮاج
اﻷﺣﺮف اﻟﺜﻼﺛﺔ اﻷوﻟﻰ ﻣﻦ اﻟﯿﺴﺎر ﻟﺠﻤﯿﻊ اﻟﻘﯿﻢ ﻓﻲ ﺣﻘﻞ ﻣﻌﯿﻦ ،اﻟﻜﻮد اﻟﺴﺤﺮي اﻟﺬي ﺳﯿﻘﻮم ﺑﻬﺬه
اﻟﻌﻤﻠﯿﺔ ﻫﻮ اﻟﺘﺎﻟﻲ:
"SQL = "select left$(name,3) as k from tb1
اﺳﺘﺨﺪﻣﻨﺎ اﻟﺪاﻟﺔ leftاﻟﻤﻌﺮوﻓﺔ ﻟﺘﺤﺪﯾﺪ اﻟﺤﺮوف ﻣﻦ ﺣﻘﻞ ﻣﻌﯿﻦ و اﻟﺬي اﺳﻤﻪ ﻓﻲ اﻟﻤﺜﺎل اﻟﺴﺎﺑﻖ
nameو ﻗﺪ ﻗﻤﻨﺎ ﺑﺘﺨﺰﯾﻦ اﻟﻘﯿﻢ ﻓﻲ اﻟﻤﺘﻐﯿﺮ kو ﯾﻤﻜﻨﻚ ﺗﺨﺰﯾﻨﻬﺎ ﻓﻲ أي ﻣﺘﻐﯿﺮ ﺗﺮﯾﺪ ،ﻃﺒﻌﺎ
اﻟﺠﺪول ﻓﻲ ﺣﺎﻟﺘﻨﺎ اﺳﻤﻪ ، tb1ﻫﺬا ﻛﻞ ﺷﻲء ،ﻃﺒﻌﺎ ﻧﻘﻮم ﺑﻌﺪ ذﻟﻚ ﺑﺈﻇﻬﺎر اﻟﻨﺘﺎﺋﺞ ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻓﻲ
اﻟﺪروس اﻟﺴﺎﺑﻘﺔ
ﺳﻨﺄﺧﺬ اﻵن ﻃﺮﯾﻘﺔ ﺗﺤﺪﯾﺪ اﻟﻘﯿﻢ اﻟﺘﻲ ﺗﺤﺘﻮي ﻋﻠﻰ ﺣﺮف ﻣﻌﯿﻦ ﺳﻮاء ﻓﻲ ﻣﻨﺘﺼﻒ اﻟﻜﻠﻤﺔ أو ﻓﻲ
أوﻟﻬﺎ أو أﺧﺮﻫﺎ ،ﻫﺬا اﻟﺘﻄﺒﯿﻖ ﻣﻬﻢ و ﻟﻪ اﺳﺘﺨﺪاﻣﺎت ﻋﺪﯾﺪة ﻓﻲ اﻟﺒﺤﺚ ﺧﺼﻮﺻﺎ ﻓﻤﺜﻼ ﺗﻜﻮن
ﺗﻌﺮف أن اﺳﻢ اﻟﻄﺎﻟﺐ ﯾﺤﺘﻮي ﻋﻠﻰ ﺣﺮف ﻣﻌﯿﻦ ﻟﻜﻦ ﻻ ﺗﻌﺮف اﺳﻢ اﻟﻄﺎﻟﺐ و أﯾﻦ ﻣﻮﻗﻊ اﻟﺤﺮف ﻓﻲ
اﺳﻤﻪ ،ﻃﺮﯾﻘﺔ اﻻﺳﺘﻌﻼم اﻟﺘﺎﻟﯿﺔ ﺳﻮف ﺗﺒﯿﻦ ﻟﻨﺎ ﻛﯿﻔﯿﺔ اﺳﺘﺨﺪام ﻫﺬه اﻟﻄﺮﯾﻘﺔ ،اﻟﻜﻮد ﻫﻮ:
"'*" & SQL = "select name from Tb1 where name like '*" & text1.text
ﻻ ﺣﻆ أﻧﻨﺎ ﻗﻤﻨﺎ ﺑﺎﺳﺘﺨﺪام اﻟﺠﻤﻠﺔ Likeو ﻫﻲ ﺑﻤﻌﻨﻰ اﻟﺘﺸﺎﺑﻪ وﻟﯿﺲ ﺷﺮﻃﺎ اﻟﺘﺴﺎوي ﺑﻌﺪ ذﻟﻚ
وﺿﻌﻨﺎ اﻟﺸﺮط و ﻫﻮ ﻣﺎ ﯾﺪﺧﻠﻪ اﻟﻤﺴﺘﺨﺪم ﻓﻲ ﻣﺮﺑﻊ اﻟﻨﺺ و اﻧﻈﺮ أﻧﻨﺎ وﺿﻌﻨﺎ ﻋﻼﻣﺘﯿﻦ ﻧﺠﻤﯿﺘﯿﻦ ﻓﻲ
اﻟﺸﺮط وﻫﻲ ﺗﺴﺘﺨﺪم ﻓﻲ إﻋﻼم اﻟﺒﺮﻧﺎﻣﺞ ﺑﺄﻧﻪ ﺳﯿﺤﺪد أي ﻗﯿﻤﺔ ﺗﺸﺒﻪ اﻟﻘﯿﻤﺔ اﻟﻤﺪﺧﻠﺔ ﻓﻲ أي ﻣﻮﻗﻊ
ﻣﻨﻬﺎ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
إن اﻻﺳﺘﻌﻼم ﯾﻌﯿﺪ اﻟﻘﯿﻢ ﻣﺮﺗﺒﺔ ﻋﻠﻰ أﺳﺎس ﺗﺮﺗﯿﺐ إدﺧﺎﻟﻬﺎ ،ﻟﻜﻦ أﺣﯿﺎﻧﺎ ﺗﺤﺘﺎج ﺑﺄن ﺗﻘﻮم ﺑﺘﺮﺗﯿﺐ
اﻟﻨﺘﺎﺋﺞ ﺗﺮﺗﯿﺒﺎ ﺗﺼﺎﻋﺪﯾﺎ أو ﺗﻨﺎزﻟﯿﺎ وﻟﻔﻌﻞ ذﻟﻚ ﻧﺴﺘﺨﺪم اﻷﻣﺮ Order Byو ﯾﻜﻮن ﺷﻜﻞ اﻻﺳﺘﻌﻼم
ﻋﻠﻰ اﻟﻄﺮﯾﻘﺔ اﻟﺘﺎﻟﯿﺔ:
SQL = "select name from Tb1 where name like '*" & text1.text & "*' order By
"name Asc
ﺑﻌﺪ ﻛﺘﺎﺑﺔ اﻷﻣﺮ Order byاﻛﺘﺐ اﺳﻢ اﻟﺤﻘﻞ اﻟﺬي ﺗﺮﯾﺪ أن ﯾﻜﻮن اﻟﻔﺮز و اﻟﺘﺮﺗﯿﺐ ﻋﻠﯿﻪ وﻫﻮ ﻓﻲ
ﺣﺎﻟﺘﻨﺎ nameﺑﻌﺪ ذﻟﻚ اﻛﺘﺐ ﻃﺮﯾﻘﺔ اﻟﻔﺮز اﻟﺘﻲ ﺗﺮﯾﺪﻫﺎ ﺗﺼﺎﻋﺪي أي ﻣﻦ اﻷﻟﻒ ﻟﻠﯿﺎء وﻧﺴﺘﺨﺪم ﻟﺬﻟﻚ
أﻣﺮ ، Ascﻣﻊ اﻟﻌﻠﻢ أن ﻋﻨﺪ ﻋﺪم وﺿﻊ Ascﻓﺈن اﻟﺒﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺗﻠﻘﺎﺋﯿﺎ ﺑﻔﺮزه ﺗﺼﺎﻋﺪﯾﺎ
أﻣﺎ اﻟﻔﺮز اﻟﺘﻨﺎزﻟﻲ ﻣﻦ اﻟﯿﺎء إﻟﻰ اﻷﻟﻒ ﻓﻨﺴﺘﺨﺪم اﻷﻣﺮ Descﺑﺪﻻ ﻣﻦAsc
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
ﯾﺠﺐ أن ﺗﺴﺘﻄﯿﻊ ﺗﻄﺒﯿﻖ اﻟﻄﺮق اﻟﺴﺎﺑﻘﺔ ﻓﻲ ﺑﺮاﻣﺞ ﻷﻫﻤﯿﺔ ﻣﻌﺮﻓﺘﻬﺎ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻟﺘﻌﺎﻣﻞ ﻣﻊ Grid Flex
اﻟﻤﻘﺪﻣﺔ:
إن أداة FlexGridإﺣﺪى أدوات إﻇﻬﺎر اﻟﺒﯿﺎﻧﺎت ﻓﻲ ﺷﻜﻞ ﺷﺒﻜﻲ أو ﺟﺪوﻟﻲ إن ﺻﺢ اﻟﺘﻌﺒﯿﺮ
ﺳﻨﺘﻄﺮق ﻓﻲ ﻫﺬا اﻟﺪرس إﻟﻰ ﻛﯿﻔﯿﺔ وﺿﻊ ﻧﺘﺎﺋﺞ اﺳﺘﻔﺴﺎر ﻓﯿﻬﺎ و إﻇﻬﺎره ﻟﻠﻤﺴﺘﺨﺪم و ﻛﺬﻟﻚ ﺑﻌﺾ
اﻷﻓﻜﺎر ﻓﻲ اﻟﺘﻌﺎﻣﻞ ﻣﻊ ﻫﺬه اﻷداة
اﻟﺪرس١٣
ﻗﺒﻞ ﻛﻞ ﺷﻲء دﻋﻨﺎ ﻧﻘﻮم ﺑﺈﻋﻄﺎﺋﻚ اﻟﺼﻮرة اﻟﺘﻲ ﻧﺮﯾﺪ أن ﻧﺼﻞ إﻟﯿﻬﺎ ﻓﻲ اﻟﻨﻬﺎﯾﺔ ﻟﻜﻲ ﺗﻜﻮن ﻋﻠﻰ ﻋﻠﻢ
ﺑﻤﺎ ﺳﻨﻌﻤﻞ ﻋﻠﯿﻪ اﻧﻈﺮ اﻟﺼﻮرة اﻟﺘﺎﻟﯿﺔ:
ﻟﻜﻲ ﻧﺒﺪأ ﺑﺎﻟﺪرس أﺿﻒ ﻣﺸﺮوع ﺟﺪﯾﺪ و اﻧﺸﺄ أو اﺳﺘﺨﺪم أي ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت و ارﺑﻄﻬﺎ ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ
ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﺳﺎﺑﻘﺎ ،وﺳﻨﻔﺘﺮض أن ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت اﻟﺘﻲ ﺳﻨﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ اﺳﻤﻬﺎ dbوﻓﯿﻬﺎ ﺟﺪول
ﺑﺎﺳﻢ tbوﯾﺤﺘﻮي ﻋﻠﻰ اﻟﺤﻘﻮل اﻟﺘﺎﻟﯿﺔ namdو jobو ageﺳﻨﻜﺘﻔﻲ ﺑﺜﻼﺛﺔ ﺣﻘﻮل ،ﺑﻌﺪ ذﻟﻚ
ﯾﺠﺐ أن ﺗﻀﯿﻒ أداة ﻫﺬه اﻟﺸﺒﻜﺔ وﻟﻔﻌﻞ ذﻟﻚ ،اذﻫﺐ إﻟﻰ ﻗﺎﺋﻤﺔ project >> combonentأو
اﺿﻐﻂ ﻋﻠﻰ ctrl+Tﺳﺘﻔﺘﺢ ﻟﻚ ﻗﺎﺋﻤﺔ اﻟﻤﻜﻮﻧﺎت اﺧﺘﺮ ﻣﻨﻬﺎ اﻟﻤﻜﻮن اﻟﺘﺎﻟﻲ و ﺿﻊ ﺑﺠﺎﻧﺒﻪ ﻋﻼﻣﺔ
ﺻﺢ Microsoft FlexGrid Control 6.0ﻛﻤﺎ ﻫﻮ ﻣﻮﺿﺢ ﻓﻲ اﻟﺼﻮرة
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﺑﻌﺪ أن ﺗﺤﺪد اﻟﻤﻜﻮن اﻟﺬي ﻓﻲ اﻟﺼﻮرة اﻟﺴﺎﺑﻘﺔ اﺿﻐﻂ Okﻟﺘﻀﯿﻒ اﻟﻤﻜﻮن ﻟﻠﻤﺸﺮوع وﺗﻌﻮد
ﻟﻠﻤﺸﺮوع
ﺑﻌﺪ ذﻟﻚ اﺧﺘﺮ اﻷداة اﻟﺨﺎﺻﺔ ﺑﺮﺳﻢ FliexGridﻛﻤﺎ ﻫﻮ ﻣﺒﯿﻦ ﻓﻲ اﻟﺼﻮرة اﻟﺘﺎﻟﯿﺔ و ارﺳﻢ ﻋﻠﻰ
اﻟﻔﻮرم ﻣﺴﺎﺣﺔ ﻣﻌﻘﻮﻟﺔ ﺗﺄﺧﺬ ﺗﻘﺮﯾﺒﺎ ﺛﻠﺚ اﻟﻔﻮرم
اﺿﻐﻂ ﺑﺎﻟﺰر اﻷﯾﻤﻦ ﻋﻠﻰ اﻟﺸﺒﻜﺔ اﻟﺘﻲ ﻗﻤﺖ ﺑﺮﺳﻤﻬﺎ و اﺧﺘﺮ Propertiesﺳﺘﻔﺘﺢ ﻟﻚ ﻧﺎﻓﺬة
اﻟﺨﺼﺎﺋﺺ وﻓﻲ ﻋﻼﻣﺔ اﻟﺘﺒﻮﯾﺐ Generalﯾﻤﻜﻨﻜﻢ اﺧﺘﯿﺎر ﻋﺪد اﻟﺼﻔﻮف ﻣﻦ اﻟﺨﺎﺻﯿﺔ Rowsو
ﻋﺪد اﻷﻋﻤﺪة ﻣﻦ اﻟﺨﺎﺻﯿﺔ ، Colsﻛﻤﺎ ﯾﻤﻜﻨﻚ ﺗﺤﺪﯾﺪ ﻋﺪد اﻷﻋﻤﺪة اﻟﺘﻲ ﺗﻜﻮن ﺑﻠﻮن داﻛﻦ ﻛﻤﻔﺘﺎح
ﻟﻠﺸﺒﻜﺔ ﻣﻦ اﻟﺨﺎﺻﯿﺔ Fixed Colsأو اﻟﺼﻔﻮف اﻟﺘﻲ ﺑﻠﻮن داﻛﻦ ﻣﻦ اﻟﺨﺎﺻﯿﺔ Fixed Rows
اﻵن ﺳﻨﺘﻌﻠﻢ اﻟﺘﺤﻜﻢ ﺑﺨﺼﺎﺋﺺ FlexGridﺑﻮاﺳﻄﺔ اﻟﻜﻮد ،ﯾﺠﺐ أن ﺗﻌﻠﻢ أن ﺟﻤﯿﻊ اﻷواﻣﺮ اﻟﺘﻲ
ﺗﻜﺘﺐ ﻟﻬﺬه اﻷداة ﻏﺎﻟﺒﺎ ﻣﺎ ﺗﻜﺘﺐ ﻓﻲ ﺣﺪث اﻟﺘﺤﻤﯿﻞ ﻟﻠﻔﻮرم ، Loadو ﻣﻦ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻲ ﯾﺠﺐ أن
ﺗﺘﻌﻠﻤﻬﺎ ﻫﻲ اﻟﺘﺤﻜﻢ ﻓﻲ ﻋﺮض اﻟﺼﻔﻮف ﻣﻊ اﻟﻌﻠﻢ ﺑﺄن اﻟﺼﻔﻮف ﻣﺮﻗﻤﺔ ﻣﻦ اﻟﯿﺴﺎر إﻟﻰ اﻟﯿﻤﯿﻦ
اﺑﺘﺪاء ﻣﻦ اﻟﺼﻔﺮ و إذا أردﻧﺎ ﻣﺜﻼ أن ﻧﻐﯿﺮ ﻋﺮض اﻟﻌﻤﻮدﯾﻦ رﻗﻢ ٠و ٣ﻣﺜﻼ و ﻧﺮﯾﺪ أن ﯾﻜﻮن
ﻋﺮﺿﻬﻤﺎ ٢٠٠٠و ١٠٠٠ﻋﻠﻰ اﻟﺘﻮاﻟﻲ ﻓﺈﻧﻨﺎ ﺳﻨﺤﺘﺎج إﻟﻰ ﻛﺘﺎﺑﺔ اﻟﻜﻮد اﻟﺘﺎﻟﻲ:
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
MSFlexGrid1.Colwidth(0) = 2000
MSFlexGrid1.Colwidth(3) = 1000
ﻣﻊ اﻟﻌﻠﻢ ﺑﺄن اﺳﻢ اﻷداة ﻓﻲ اﻟﻤﻜﻮد اﻟﺴﺎﺑﻖ ﻫﻮ ، MSFlexGrid1ﻻﺣﻆ أﻧﻨﺎ ﻧﻘﻮم ﺑﺤﺼﺮ رﻗﻢ
اﻟﺼﻒ ﺑﯿﻦ ﻗﻮﺳﯿﻦ
و اﻵن ﻛﯿﻒ ﺳﻨﻘﻮم ﺑﻮﺿﻊ ﻋﻨﺎوﯾﻦ اﻟﺤﻘﻮل ﻋﻠﻰ اﻷﻋﻤﺪة ﻓﻲ ﻫﺬه اﻟﺸﺒﻜﺔ ﻟﻜﻲ ﻧﻔﺮق ﺑﯿﻦ اﻟﺤﻘﻮل ،
اﻟﻔﻜﺮة ﺑﺄن ﺗﻘﻮم ﺑﺘﺤﺪﯾﺪ اﻟﺨﻠﯿﺔ ﺑﺎﻟﺼﻒ و اﻟﻌﻤﻮد ﺑﻌﺪ ذﻟﻚ ﺗﻜﺘﺐ اﻟﻨﺺ اﻟﻤﺮاد ،ﻣﺜﻼ ﻧﺮﯾﺪ أن ﻧﻜﺘﺐ
ﻋﻨﻮان اﻟﺤﻘﻞ اﻷول و ﻫﻮ "اﻻﺳﻢ " ﻓﻲ اﻟﻌﻤﻮد اﻷول و ﻋﻨﻮان اﻟﺤﻘﻞ اﻟﺜﺎﻧﻲ و ﻫﻮ " اﻟﻌﻤﻞ " ﻓﻲ
اﻟﻌﻤﻮد اﻟﺜﺎﻧﻲ ﻓﻤﺎذا ﺳﻨﻌﻤﻞ اﻧﻈﺮ ﻟﻠﻜﻮد اﻟﺘﺎﻟﻲ و ﺳﺘﻌﺮف
MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
" اﻻﺳﻢ" = MSFlexGrid1.Text
MSFlexGrid1.Col = 1
"اﻟﻌﻤﻞ" = MSFlexGrid1.Text
ﻻﺣﻆ أﻧﻨﺎ ﻓﻲ أول ﺳﻄﺮﯾﻦ ﻣﻦ اﻟﻜﻮد اﻟﺴﺎﺑﻖ و اﻟﺬﯾﻦ ﻛﺘﺒﺘﻬﻤﺎ ﺑﺎﻟﻠﻮن اﻷﺣﻤﺮ ﻟﻺﯾﻀﺎح ﻗﺪ ﻗﻤﻨﺎ
ﺑﺘﺤﺪﯾﺪ أول ﺧﻠﯿﺔ ﻋﻠﻰ اﻟﯿﺴﺎر ﻓﻲ اﻟﺰاوﯾﺔ اﻟﻌﻠﯿﺎ و ذﻟﻚ ﺑﺘﺤﺪﯾﺪ إﺣﺪاﺛﯿﺎﺗﻬﺎ وﻫﻲ اﻟﺼﻒ اﻷول و
اﻟﻌﻤﻮد اﻷول ،ﺛﻢ ﻗﻤﻨﺎ ﺑﻜﺘﺎﺑﺔ اﻟﻌﻨﻮان ﺑﺎﻟﺨﺎﺻﯿﺔ ، Textﻣﻊ اﻟﻌﻠﻢ ﺑﺄن اﻟﺒﺮﻧﺎﻣﺞ ﯾﻘﻮم ﺑﺘﺨﺰﯾﻦ
إﺣﺪاﺛﯿﺎت آﺧﺮ ﺧﻠﯿﺔ ﺗﻘﻮم ﺑﻜﺘﺎﺑﺘﻬﺎ ،ﻟﺬﻟﻚ و ﻋﻨﺪﻣﺎ ﻧﻜﺘﺐ إﺣﺪاﺛﯿﺎت اﻟﻨﻘﻄﺔ اﻟﺜﺎﻧﯿﺔ ﺳﺘﺴﺘﻔﯿﺪ ﻣﻦ ﻫﺬه
اﻟﻤﯿﺰة ﻓﺴﻨﻜﺘﺐ إﺣﺪاﺛﻲ اﻟﻌﻤﻮد و ﻫﻮ ١ﻷن اﻻﺣﺪاﺛﻲ اﻟﺴﺎﺑﻖ ﻟﻠﺼﻒ ﻫﻮ ٠و ﻫﻮ ﻣﺨﺰن ﻓﻠﻤﺎذا
ﻧﻜﺘﺒﻪ ﻣﺮة أﺧﺮى ﻣﺎدﻣﻨﺎ ﻻ ﻧﺤﺘﺎج ﻟﺘﻐﯿﯿﺮه ،ﺑﻌﺪ ذﻟﻚ ﻧﻜﺘﺐ اﻟﻌﻨﻮان ﺑﺎﺳﺘﺨﺪام اﻟﺨﺎﺻﯿﺔ Textﻛﻤﺎ
ﻓﻌﻠﻨﺎ ﻣﻊ اﻷوﻟﻰ و ﻧﺴﺘﻤﺮ ﺑﻬﺬه اﻟﻌﻤﻠﯿﺔ إذا اﺣﺘﺠﻨﺎ إﻟﻰ ﻋﻨﺎوﯾﻦ أﺧﺮى ،وﺳﺘﻈﻬﺮ اﻟﻌﻨﺎوﯾﻦ اﻟﺘﻲ
ﻋﻤﻠﻨﺎﻫﺎ ﺑﺎﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻛﻤﺎ اﻟﺸﻜﻞ اﻟﺘﺎﻟﻲ:
و اﻵن ﻛﯿﻒ ﻧﻘﻮم ﺑﺘﻌﺒﺌﺔ اﻟﺒﯿﺎﻧﺎت ﻣﻦ ﺟﺪول أو اﺳﺘﻌﻼم ؟
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﺪروس اﻟﺴﺎﺑﻘﺔ ﻓﺈﻧﻨﺎ ﻧﻘﻮم ﺑﺈﻧﺸﺎء ﺟﺪول وﻫﻤﻲ ﻟﻜﻲ ﻧﺨﺰن ﻓﯿﻪ اﻟﺒﯿﺎﻧﺎت ﻣﺆﻗﺘﺎ ﻛﻤﺎ
ﻫﻮ ﺣﺎل اﻟﺮام RAMﻓﻲ اﻟﺠﻬﺎز ﻟﺘﺨﺰﯾﻦ اﻟﺒﯿﺎﻧﺎت ﻟﻨﺘﻌﺎﻣﻞ ﻣﻌﻬﺎ و ﺑﻌﺪ إﻏﻼق اﻟﺠﻬﺎز ﺗﺬﻫﺐ
اﻟﻤﻌﻠﻮﻣﺎت ،إن دﯾﻨﺎﻣﯿﻜﯿﺔ ﺗﻌﺒﺌﺔ اﻟﺒﯿﺎﻧﺎت ﺑﺴﯿﻄﺔ و ﺳﻠﺴﺔ وﻧﺤﺘﺎج أوﻻ وﺿﻊ ﻋﻨﺎوﯾﻦ اﻷﻋﻤﺪة ﻛﻤﺎ
ﺗﻌﻠﻤﻨﺎ ﻓﻲ اﻟﻔﻘﺮة اﻟﺴﺎﺑﻘﺔ وﯾﻜﺘﺐ ذﻟﻚ ﻏﺎﻟﺒﺎ ﻓﻲ ﺣﺪث اﻟﺘﺤﻤﯿﻞ Loadﺑﻌﺪ ذﻟﻚ ﯾﺄﺗﻲ دور ﺗﻌﺒﺌﺔ
اﻟﺴﺠﻼت ،وﻗﺒﻞ ﻛﻞ ﺷﻲء أﺿﻒ ﺳﻄﺮ ﯾﺘﺄﻛﺪ ﻣﻦ وﺟﻮد ﺑﯿﺎﻧﺎت ﻓﻲ اﻟﺠﺪول ﻟﻜﻲ ﻷﺗﻮاﺟﻪ ﻣﺸﺎﻛﻞ ،
ﺑﻌﺪ ذﻟﻚ اﺣﺴﺐ ﻋﺪد اﻟﺴﺠﻼت ﻓﻲ اﻟﺠﺪول و ﻟﻔﻌﻞ ذﻟﻚ ﻛﻤﺎ ﺗﻌﻠﻤﻨﺎ ﺳﺎﺑﻘﺎ ﯾﺠﺐ أوﻻ أن ﻧﻤﺮ ﻋﻠﻰ
اﻟﺠﺪول إﻟﻰ اﻟﻨﻬﺎﯾﺔ ﺛﻢ ﻧﻌﻮد إﻟﻰ اﻟﺒﺪاﯾﺔ ﻟﻜﻲ ﻧﺴﺘﻄﯿﻊ إﯾﺠﺎد ﻋﺪد اﻟﺴﺠﻼت ﺑﻮاﺳﻄﺔ اﻟﺨﺎﺻﯿﺔ
Countﻧﻘﻮم ﺑﻌﺪ ذﻟﻚ ﺑﻌﻤﻞ ﺗﻜﺮار ﻋﻠﻰ ﻋﺪد اﻟﺴﺠﻼت و ﻧﻀﻊ داﺧﻠﻪ ﻛﻮد ﯾﻘﻮم ﺑﺘﻌﺒﺌﺔ اﻟﺒﯿﺎﻧﺎت
ﺑﻨﻔﺲ اﻟﻄﺮﯾﻘﺔ اﻟﺘﻲ ﻗﻤﻨﺎ ﻓﯿﻬﺎ ﺑﻮﺿﻊ ﻋﻨﺎوﯾﻦ اﻷﻋﻤﺪة وﻟﻜﻦ ﯾﻜﻮن اﻟﻤﺼﺪر ﻫﻮ اﻟﺠﺪول ،ﻟﻦ ﺗﻔﻬﻢ ﻣﺎ
ذﻛﺮﺗﻪ إﻻ ﻋﻨﺪﻣﺎ ﺗﺸﺎﻫﺪ اﻟﻜﻮد اﻟﻤﻄﻠﻮب و اﻟﺬي ﺳﺄورده اﻵن ﻣﻊ ﻣﻼﺣﻈﺔ أن اﺳﻢ اﻟﺠﺪول اﻟﻮﻫﻤﻲ
TBو ﯾﻮﺟﺪ ﺑﻪ اﻟﺤﻘﻮل Nameو ، Jobﻣﻊ ﻣﻼﺣﻈﺔ أن اﺳﻢ FlexGridﻓﻲ اﻟﻜﻮد اﻟﺘﺎﻟﻲ
ﻫﻮflx1
ﻟﻜﻲ ﻧﺘﺄﻛﺪ ﻣﻦ وﺟﻮد ﺳﺠﻼت ﻓﻲ اﻟﺠﺪول أو ﻧﺨﺮج ﻓﻲ ' If tb.RecordCount < 1 Then Exit Sub
ﺣﺎل ﻋﺪﻣﻬﺎ
ﻧﺘﺤﺮك إﻟﻰ اﻟﺤﻘﻞ اﻷﺧﯿﺮ ' tb.MoveLast
ﻧﺘﺤﺮك إﻟﻰ اﻟﺤﻘﻞ اﻷول ' tb.MoveFirst
nﻧﺨﺰن ﻋﺪد اﻟﺴﺠﻼت ﻓﻲ اﻟﻤﺘﻐﯿﺮ ' n = tb.RecordCount
For i = 1 To n
رﻗﻢ اﻟﺼﻒ ﺣﺴﺐ رﻗﻢ اﻟﺘﻜﺮار ' flx1.Row = i
رﻗﻢ اﻟﻌﻤﻮد ﺛﺎﺑﺖ ﻷﻧﻨﺎ ﺳﻮف ﻧﻀﻊ ﺟﻤﯿﻊ اﻟﻘﯿﻢ ﻟﻠﺤﻘﻞ ﻓﻲ ﻋﻤﻮد واﺣﺪ ' flx1.Col = 0
ﻧﻀﻊ ﻗﯿﻤﺔ اﻟﺤﻘﻞ ﻓﻲ اﻟﺨﻠﯿﺔ اﻟﻤﺤﺪدة ' flx1.Text = tb!Name
flx1.Col = 1
flx1.Text = tb!job
ﻧﺘﺤﺮك ﻟﻠﺴﺠﻞ اﻟﺘﺎﻟﻲ ' tb1.MoveNext
Next i
End Sub
رﺑﻤﺎ ﻻ أﺳﺘﻄﯿﻊ اﻟﺸﺮح ﺑﻮﺿﻮح ﺑﺎﻟﻜﺘﺎﺑﺔ ﻟﻜﻦ أﺳﺄل اﷲ أن أﻛﻮن ﻗﺪ اﺳﺘﻄﻌﺖ أن اﻗﻄﻊ ﺷﻮﻃﺎ ﻛﺒﯿﺮا
ﻓﻲ اﻟﺸﺮح ،ﻋﻠﻰ اﻟﻌﻤﻮم ﯾﺠﺐ أن ﺗﺤﺎول ﻗﺮاءة اﻟﻜﻮد و ﺗﻄﺒﯿﻘﻪ و ﻛﺬﻟﻚ و ﻫﻮ اﻷﻫﻢ ﻓﻬﻤﻪ
ﻣﻦ اﻟﻤﻬﺎرات اﻟﻤﻤﺘﺎزة أن ﺗﻌﺮف ﻛﯿﻒ ﺗﺠﻌﻞ ﻋﺪد اﻟﺼﻔﻮف ﯾﺘﻐﯿﺮ ﺣﺴﺐ ﻋﺪد اﻟﺴﺠﻼت وﻟﻌﻤﻞ ذﻟﻚ
اﺟﻌﻞ ﺧﺎﺻﯿﺔ ﻋﺪد اﻟﺼﻔﻮف ﺗﺴﺎوي ﻋﺪد اﻟﺴﺠﻼت ﻓﻲ اﻟﺠﺪول زاﺋﺪا واﺣﺪ ،و ﻗﻤﻨﺎ ﺑﻬﺬه اﻟﺰﯾﺎدة
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻷﻧﻬﺎ ﺗﻌﺒﺮ ﻋﻦ ﺻﻒ ﻋﻨﺎوﯾﻦ اﻟﺤﻘﻮل و ﺿﻊ ﻫﺬه اﻟﺠﻤﻠﺔ ﻓﻲ اﻟﻤﻜﺎن اﻟﻤﻨﺎﺳﺐ ﺑﻌﺪ ﺣﺴﺎب ﻋﺪد
اﻟﺤﻘﻮل ﻓﻲ اﻟﺠﺪول و ﯾﻮﺿﺢ اﻟﻜﻮد اﻟﺘﺎﻟﻲ ﻣﻮﻗﻊ اﻟﺠﻤﻠﺔ ﻣﻦ اﻟﻜﻮد اﻟﺴﺎﺑﻖ:
If tb.RecordCount < 1 Then Exit Sub
tb.MoveLast
tb.MoveFirst
n = tb.RecordCount
flx1.Rows = n + 1
For i = 1 To n
flx1.Row = i
flx1.Col = 0
flx1.Text = tb!Name
flx1.Col = 1
flx1.Text = tb!job
tb.MoveNext
Next i
End Sub
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
إﺿﺎﻓﺔ اﻟﻌﻨﺎوﯾﻦ ﻟﻸﻋﻤﺪة و ﺗﻌﺒﺌﺔ اﻟﺒﯿﺎﻧﺎت
ﻣﻌﺮﻓﺔ ﻛﯿﻔﯿﺔ ﺟﻌﻞ ﻋﺪد اﻟﺼﻔﻮف ﯾﺘﺤﺪد ﺣﺴﺐ ﻋﺪد اﻟﺴﺠﻼت ﻓﻲ اﻟﺠﺪول
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ
اﻟﻤﻘﺪﻣﺔ:
اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ ﺗﻄﺒﯿﻖ ﻣﻬﻢ ﺟﺪا ﻣﻌﺮﻓﺔ اﻟﺘﻌﺎﻣﻞ ﻣﻌﻪ ﺣﯿﺚ ﯾﻌﻄﻲ ﺗﺼﻮرا و ﻣﻠﺨﺼﺎ ﻋﻦ اﻟﺤﻘﻮل ﻓﻲ
اﻟﺴﺠﻼت و ﺑﺎﻟﻨﺴﺒﺔ ﻟﻔﯿﺠﻮال ﺑﯿﺴﻚ ﻓﻬﻮ ﯾﺘﯿﺢ ﻟﻚ ﻋﻤﻞ اﻟﺮﺳﻮم اﻟﺒﯿﺎﻧﯿﺔ اﻟﺘﻲ ﺗﺴﺘﻤﺪ ﻣﺼﺪرﻫﺎ ﻣﻦ
ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت ﺑﻜﻞ ﺳﻬﻮﻟﺔ وﺳﯿﻜﻮن ﻫﺬا اﻟﺪرس اﻟﺠﺰء اﻷول ﻓﻲ اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ
ﻫﻨﺎك ﻋﺪة ﻃﺮق ﻹﻇﻬﺎر اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ ،ﻓﯿﻤﻜﻨﻚ أن ﺗﻈﻬﺮ رﺳﻢ ﯾﺒﯿﻦ اﻟﻘﯿﻢ ﻓﻲ ﺳﺠﻞ واﺣﺪ ﻣﺜﻼ
درﺟﺎت ﻃﺎﻟﺐ ﻓﻲ ﻣﺎدﺗﯿﻦ و ﻟﻜﻲ ﺗﺮى اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ اﻟﺬي ﯾﻤﺜﻞ اﻟﻄﻼب اﻵﺧﺮﯾﻦ ﺗﻨﺘﻘﻞ ﺑﺰر ﯾﻨﻘﻠﻚ
ﻟﻠﺴﺠﻞ اﻟﺘﺎﻟﻲ وﻫﺬا ﻣﺎ ﺳﻨﺘﻌﻠﻤﻪ ﻓﻲ ﻫﺬا اﻟﺪرس
أو ﺗﻘﻮم ﺑﻌﺮض ﺟﻤﯿﻊ ﺳﺠﻼت اﻟﻄﻼب ﻓﻲ رﺳﻢ واﺣﺪ ﻣﻘﺴﻢ ﻋﻠﻰ أﺳﺎس ﻛﻞ ﺳﺠﻞ و ﺳﺘﺘﻌﺮف ﻋﻠﻰ
ﻫﺬا ﺑﺎﻟﺘﻔﺼﯿﻞ ﻓﻲ دروس ﻗﺎدﻣﺔ
اﻟﺪرس١٤
ﻗﺒﻞ أن ﺗﺒﺪأ ﯾﺠﺐ أن ﺗﻘﻮم ﺑﻌﻤﻞ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت اﺳﻤﻬﺎ db1و ﺗﺤﺘﻮي ﻋﻠﻰ ﺟﺪول اﺳﻤﻪ tb1ﻓﯿﻪ
اﻟﺤﻘﻮل اﻟﺘﺎﻟﯿﺔ:
اﺳﻢ اﻟﺤﻘﻞ
name
mathmark
sincemark
ﻧﻮع اﻟﺒﯿﺎﻧﺎت
string
integer
integer
ﻗﻢ ﺑﻌﺪ ذﻟﻚ ﺑﺈﺿﺎﻓﺔ ﺳﺠﻼت ﻟﻘﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﻘﯿﻢ اﻟﺘﻲ ﺗﺮﯾﺪﻫﺎ
اﻵن اﻓﺘﺢ ﻣﺸﺮوع ﻓﯿﺠﻮال ﺑﯿﺴﻚ ﺟﺪﯾﺪ ،ﺑﻌﺪ ذﻟﻚ ﻗﻢ ﺑﺘﻌﺮﯾﻒ أو رﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﺒﺮﻧﺎﻣﺞ ﺑﺎﻟﻜﻮد اﻟﺬي
ﺗﻌﻠﻤﻨﺎه ﻓﻲ اﻟﺪروس اﻟﺴﺎﺑﻘﺔ و ﺳﺄذﻛﺮه ﻫﻨﺎ إن ﻛﻨﺖ ﻗﺪ ﻧﺴﯿﺖ
أوﻻ اذﻫﺐ إﻟﻰ Project >> refrencesﺛﻢ ﺣﺪد اﻟﻤﻜﺘﺒﺔ Microsoft DAO 3.51 Object library
ﻗﻢ ﺑﺘﻌﺮﯾﻒ اﻟﻤﺘﻐﯿﺮﯾﻦ ﻓﻲ ﻗﺴﻢ اﻹﺟﺮاءات اﻟﻌﺎﻣﺔ ﻛﻤﺎ ﻓﻲ اﻟﻜﻮد اﻟﺘﺎﻟﻲ:
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
Public d As Database
Public tb As Recordset
اﻵن اﻛﺘﺐ اﻟﻜﻮد اﻟﺘﺎﻟﻲ و اﻟﺬي ﯾﻘﻮم ﺑﺮﺑﻂ ﻗﺎﻋﺪة اﻟﺒﯿﺎﻧﺎت ﺑﺎﻟﺒﺮﻧﺎﻣﺞ
)Set db = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\db1.mdb", True
)Set tb = db.OpenRecordset("tb1", dbOpenTable
اﻵن ﺗﺄﺗﻲ اﻟﺨﻄﻮة اﻷﺳﺎﺳﯿﺔ اﻷوﻟﻰ وﻫﻲ إﺿﺎﻓﺔ أداة اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ و ﻟﻠﻘﯿﺎم ﺑﺬﻟﻚ اذﻫﺐ ﻗﺎﺋﻤﺔ
Projectو اﺧﺘﺮ Componentsﺳﯿﻈﻬﺮ ﻟﻚ ﻣﺮﺑﻊ ﺣﻮار ﺣﺪد ﻣﻨﻪ اﻻﺧﺘﯿﺎر Microsoft
)Chart Control 6.0 (OLEDB
ﺑﻌﺪ ذﻟﻚ اﻧﻘﺮ ﻋﻠﻰ ﻫﺬه اﻷﯾﻘﻮﻧﺔ و
ﺳﺘﻈﻬﺮ ﻟﻚ اﻻﯾﻘﻮﻧﻪ اﻟﺨﺎﺻﺔ ﺑﻪ ﻓﻲ ﺻﻨﺪوق اﻷدوات
ارﺳﻢ ﺷﻜﻞ ﻣﺮﺑﻊ ﻋﻠﻰ اﻏﻠﺐ اﻟﻔﻮرم و ﺳﯿﻨﺘﺞ ﻟﻚ ﺻﻮرة رﺳﻢ ﺑﯿﺎﻧﻲ
اﻵن ﺣﺪد اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ و اذﻫﺐ إﻟﻰ ﻧﺎﻓﺬة اﻟﺨﺼﺎﺋﺺ و ﻏﯿﺮ اﻟﺨﺎﺻﯿﺔ AutoIncrementإﻟﻰ
Trueو ﻫﺬا ﺿﺮوري ﻟﻜﻲ ﯾﻘﻮم اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ ﺑﺘﻐﯿﯿﺮ و ﺗﺤﺪﯾﺚ ﻧﻔﺴﻪ ﺗﻠﻘﺎﺋﯿﺎ وﻟﻦ ﯾﻌﻤﻞ ﺑﺪون أن
ﺗﺠﻌﻞ ﻫﺬه اﻟﺨﺎﺻﯿﺔ ﻋﻠﻰ True
أﯾﻀﺎ اﺿﺒﻂ اﻟﺨﺎﺻﯿﺔ ColumnCountﻋﻠﻰ ٢ﺣﯿﺚ أن ﻫﺬه اﻟﺨﺎﺻﯿﺔ ﺗﻌﻨﻲ ﻋﺪد اﻷﻋﻤﺪة ﻓﻲ
اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ و ﺑﻤﺎ أﻧﻨﺎ ﻧﺤﺘﺎج إﻟﻰ ﻋﻤﻮدﯾﻦ ﻓﻘﻂ ﻫﻤﺎ درﺟﺔ اﻟﺮﯾﺎﺿﯿﺎت و اﻟﻌﻠﻮم وﺿﻌﻨﺎ ﻋﺪد
اﻷﻋﻤﺪة ٢
و اﺿﺒﻂ اﻟﺨﺎﺻﯿﺔ RowCountﻋﻠﻰ ١وﻫﺬا اﻟﺮﻗﻢ ﯾﺪل ﻋﻠﻰ ﻋﺪد اﻟﺴﺠﻼت ا ﻟﺘﻲ ﺗﺮﯾﺪ أن
ﺗﻌﺮﺿﻬﺎ ﻓﻲ اﻟﻤﺮة اﻟﻮاﺣﺪة و ﺳﺘﺘﻌﺮف ﻋﻠﻰ ذﻟﻚ ﺑﺎﻟﺘﻔﺼﯿﻞ ﻓﻲ اﻟﺪرس اﻟﻘﺎدم
واﻵن ﻣﺎﻫﻮ اﻟﻜﻮد اﻟﺬي ﺳﯿﻌﺮض اﻟﺒﯿﺎﻧﺎت ﻋﻠﻰ اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ ،أوﻻ ﯾﺠﺐ أن ﺗﺤﺪد ﻣﺘﻰ ﯾﺠﺐ
اﻟﻌﺮض ﻫﻞ ﻋﻨﺪ ﺗﺸﻐﯿﻞ اﻟﺒﺮﻧﺎﻣﺞ أم ﻋﻨﺪ اﻟﻨﻘﺮ ﻋﻠﻰ زر ﻣﻌﯿﻦ ؟ و اﻟﻄﺮﯾﻘﺔ اﻷﻓﻀﻞ أن ﺗﺠﻌﻠﻪ ﯾﻘﻮم
ﯾﻌﺮض ﺣﺎل ﺗﻨﻔﯿﺬ أو ﺗﺤﻤﯿﻞ اﻟﻔﻮرم و ﺑﻌﺪ ذﻟﻚ ﯾﻤﻜﻨﻪ أن ﯾﻨﺘﻘﻞ إﻟﻰ اﻟﺴﺠﻞ اﻟﺘﺎﻟﻲ ﺑﻮاﺳﻄﺔ زر ﺗﻨﻘﻞ ،
ﻫﺬا ﯾﻘﻮدﻧﺎ إﻟﻰ اﻧﻪ ﯾﺠﺐ ﻋﻠﯿﻨﺎ وﺿﻊ ﻛﻮد ﻓﻲ ﺣﺪث ا ﻟﺘﺤﻤﯿﻞ ﻟﻠﻔﻮرم ﻟﻜﻲ ﯾﻌﺮض ﻣﺒﺎﺷﺮة و اﻟﻜﻮد
ﺳﯿﻜﻮن اﻟﻜﻮد اﻟﺘﺎﻟﻲ اﻟﺬي ﺑﺎﻟﻠﻮن اﻷﺣﻤﺮ:
ﻻﺣﻆ أن اﺳﻢ أداة اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ ﻫﻮMSChart1
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
)(Private Sub Form_Load
)Set db = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\db1.mdb", True
)Set tb = db.OpenRecordset("tb1", dbOpenTable
MSChart1.Column = 1
MSChart1.Data = tb!mathmark
MSChart1.Column = 2
MSChart1.Data = tb!sincemark
MSChart1.RowLabel = tb!Name
End Sub
أﻋﺘﻘﺪ أن اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﺳﻬﻞ وواﺿﺢ ﻟﻠﺠﻤﯿﻊ و ﻫﻮ ﯾﺬﻛﺮﻧﺎ ﺑﺎﻷداة ، FlexGridﻓﻔﻲ اﻟﻜﻮد
اﻟﺴﺎﺑﻖ ﺣﺪدﻧﺎ أوﻻ رﻗﻢ اﻟﻌﻤﻮد اﻟﺬي ﺳﺘﻨﻔﺬ ﻋﻠﯿﻪ اﻷواﻣﺮ اﻟﻘﺎدﻣﺔ و ﻫﻮ ﻋﻤﻮد رﻗﻢ ١ﺛﻢ ﺑﻌﺪ ذﻟﻚ
وﺿﺤﻨﺎ اﻷﻣﺮ اﻟﺬي ﻧﺮﯾﺪه أن ﯾﻨﻔﺬ ﻋﻠﻰ ﻫﺬا اﻟﻌﻤﻮد وﻫﻮ وﺿﻊ ﻗﯿﻤﺔ اﻟﺤﻘﻞ mathmarkﻓﻲ ﻫﺬا
اﻟﻌﻤﻮد ﻟﯿﻌﺒﺮ ﻋﻨﻬﺎ ﺑﯿﺎﻧﯿﺎ وﻧﺴﺘﺨﺪم ﻟﻬﺬا اﻷﻣﺮ Dataﻛﻤﺎ ﻫﻮ واﺿﺢ ،و اﻵن ﻧﺮﯾﺪ وﺿﻊ ﻗﯿﻢ
اﻟﺤﻘﻞ اﻟﺜﺎﻧﻲ وﻫﻮ sincemarkﻓﻲ اﻟﻌﻤﻮد اﻟﺜﺎﻧﻲ و ﻧﺘﺒﻊ ﻟﺬﻟﻚ ﻧﻔﺲ اﻟﺨﻄﻮات اﻟﺴﺎﺑﻘﺔ ﺣﯿﺚ
ﻧﺤﺪد رﻗﻢ اﻟﻌﻤﻮد وﻫﻮ ٢ﺛﻢ ﻣﺎ ﻧﺮﯾﺪ ﻣﻨﻪ و ﻫﻮ اﻟﺘﻌﺒﯿﺮ ﻋﻦ ﻫﺬا اﻟﺤﻘﻞ ﻓﻲ ﺷﻜﻞ ﺑﯿﺎﻧﺎ
ﺑﻌﺪ ذﻟﻚ وﻓﻲ اﻟﺴﻄﺮ اﻷﺧﯿﺮ ﻧﺮﯾﺪ أن ﯾﻀﻊ اﻟﺒﺮﻧﺎﻣﺞ اﺳﻢ اﻟﺸﺨﺺ أﺳﻔﻞ اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ و ﻫﻮ ﻣﺎ
ﯾﺴﻤﻰ ﺑﺎﻟﺼﻒ Rowوﻧﺴﺘﺨﺪم اﻟﺨﺎﺻﯿﺔ RowLabelو ﻧﺨﺰن ﻓﯿﻬﺎ ﻗﯿﻤﺔ ﺣﻘﻞ اﻻﺳﻢ Name
اﻵن اﻟﻤﺮﺣﻠﺔ اﻟﺜﺎﻧﯿﺔ و ﻫﻲ أن ﯾﻘﻮم اﻟﻤﺴﺘﺨﺪم ﺑﺎﻟﺘﻨﻘﻞ ﺑﯿﻦ اﻟﺤﻘﻮل ﻹﻇﻬﺎرﻫﺎ ﻓﻲ ﺷﻜﻞ اﻟﺮﺳﻢ
اﻟﺒﯿﺎﻧﻲ و ﺳﻨﻘﻮم ﺑﺈﻧﺸﺎء زرّي أﻣﺮ واﺣﺪ ﻟﻠﺘﻘﺪم اﻷﻣﺎم وواﺣﺪ ﻟﻠﺮﺟﻮع ﻟﻠﺨﻠﻒ ،ﻓﻲ اﻟﺰر اﻟﻤﺨﺼﺺ
ﻟﻠﺘﻨﻘﻞ ﻟﻺﻣﺎم ﻧﺴﺘﺨﺪم اﻟﻜﻮد اﻟﺘﺎﻟﻲ:
)(Private Sub Command1_Click
ﻟﻼﻧﺘﻘﺎل ﻟﻠﺴﺠﻞ اﻟﺘﺎﻟﻲ ' tb.MoveNext
ﻟﺘﻔﺎدي اﻟﻤﺸﺎﻛﻞ ﻋﻨﺪ آﺧﺮ ﺳﺠﻞ ' If tb.EOF Then tb.MoveLast
MSChart1.Column = 1
MSChart1.Data = tb!mathmark
MSChart1.Column = 2
MSChart1.Data = tb!sincemark
MSChart1.RowLabel = tb!Name
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
End Sub
ﻻﺣﻆ أن اﻟﻜﻮد ﻧﻔﺲ اﻟﻜﻮد ﻓﻲ ﺣﺪث اﻟﺘﺤﻤﯿﻞ ﻣﻊ اﻷﺧﺬ ﻓﻲ اﻻﻋﺘﺒﺎر ﻧﻘﻄﺘﯿﻦ أوﻻ اﻻﻧﺘﻘﺎل ﻟﻠﺴﺠﻞ
اﻟﺘﺎﻟﻲ ﻟﻜﻲ ﯾﺘﻢ ﻋﺮض اﻟﺒﯿﺎﻧﺎت ﻓﻲ اﻟﺴﺠﻞ اﻟﺘﺎﻟﻲ ،و وﺿﻊ ﺷﺮط ﻟﯿﺘﺤﻘﻖ ﻫﻞ ﻋﻨﺪ اﻟﻮﺻﻮل ﻟﻠﺴﺠﻞ
اﻷﺧﯿﺮ ﻟﯿﻘﻮم ﺑﺎﻟﺨﺮوج ﻣﻦ ا ﻻﺟﺮاء ﻟﻜﻲ ﻧﺘﻔﺎدى اﻟﻤﺸﺎﻛﻞ ،،ﻫﺬا ﻛﻞ ﺷﻲء
أﻣﺎ اﻟﻜﻮد اﻟﺬي ﯾﻘﻮم ﺑﺎﻟﺮﺟﻮع إﻟﻰ اﻟﺨﻠﻒ ﻓﻬﻮ:
)(Private Sub Command2_Click
tb.MovePrevious
If tb.BOF Then tb.MoveFirst
MSChart1.Column = 1
MSChart1.Data = tb!mathmark
MSChart1.Column = 2
MSChart1.Data = tb!sincemark
MSChart1.RowLabel = tb!Name
End Sub
اﻟﻜﻮد اﻟﺴﺎﺑﻖ ﻧﻔﺲ ﻛﻮد اﻻﻧﺘﻘﺎل ﻟﻺﻣﺎم ﻣﻊ ﺗﻐﯿﯿﺮ أﻣﺮ اﻟﺘﺤﺮك اﻷﻣﺎم ﺑﺄﻣﺮ اﻟﺘﺤﺮك ﻟﻠﺨﻠﻒ
MovePreviousو ﺗﻢ ﺗﻐﯿﯿﺮ ﺷﺮط اﻟﺘﺄﻛﺪ ﻣﻦ وﺻﻮﻟﻨﺎ ﻟﻠﺴﺠﻞ اﻷول ﺑﺤﯿﺚ ﯾﺘﻮاﻓﻖ ﻣﻊ اﻟﺤﺎﻟﺔ
اﻟﺸﻜﻞ اﻟﻨﻬﺎﺋﻲ
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
ﻻﺣﻆ أن اﻟﻤﺤﻮرﯾﻦ ﯾﺘﻢ ﺗﻘﺴﯿﻤﻬﻤﺎ ﺗﻠﻘﺎﺋﯿﺎ ﻋﻠﻰ ﺣﺴﺐ اﻷرﻗﺎم ﻓﻲ اﻟﺴﺠﻼت
ﯾﻤﻜﻨﻚ اﻟﺘﺤﻜﻢ ﻓﻲ ﺑﻌﺾ اﻟﺨﺼﺎﺋﺺ ﻣﺜﻞ ﺟﻌﻞ اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ ﻋﻠﻰ ﺷﻜﻞ ﺧﻄﻮط أو ﻣﺠﺴﻤﺎت ﺛﻼﺛﯿﺔ
اﻷﺑﻌﺎد و ﻏﯿﺮ ذﻟﻚ ﯾﻤﻜﻨﻚ اﻛﺘﺸﺎف ذﻟﻚ ﺑﻨﻔﺲ ﺑﺎﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺰر اﻷﯾﻤﻦ ﻋﻠﻰ اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ و
اﺧﺘﯿﺎر Properties
اﻟﺤﺪ اﻷدﻧﻰ ﻣﻦ اﻷﻫﺪاف اﻟﺘﻌﻠﯿﻤﯿﺔ
رﺑﻂ اﻟﺮﺳﻢ اﻟﺒﯿﺎﻧﻲ ﻣﻊ ﻗﺎﻋﺪة ﺑﯿﺎﻧﺎت و اﻟﺘﻨﻘﻞ ﺑﯿﻦ اﻟﺴﺠﻼت
ﻣﻼﺣﻈﺔ أﺧﯿﺮة:
إن ﻛﻨﺖ ﻗﺪ اﺳﺘﻔﺪت ﻣﻦ ﻫﺬا اﻟﻜﺘﺎب ﻓﻼ ﺗﻨﺴﻰ اﻟﺪﻋﺎء ﻟﻲ وﻟﻮاﻟﺪيّ وﻟﻜﻞ ﻣﻦ
ﺳﺎﻋﺪﻧﻲ ﻓﻲ ﺟﻤﻌﻪ وإن ﻛﺎن ﻏﯿﺮ ذﻟﻚ ﻓﺄﻧﺎ آﺳﻒ ﻋﻠﻰ إﺿﺎﻋﺔ وﻗﺘﻚ اﻟﺜﻤﯿﻦ،
ﺗﻢ ﺑﺤﻤﺪ اﷲ ،
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com
وﺑﺬﻟﻚ ﻧﻜﻮن ﻗﺪ وﺻﻠﻨﺎ إﻟﻰ أﺧ ﺮ اﻟﺴﻠﺴ ﻠﺔ ﻣ ﻦ ﺗﻌﻠ ﻢ SQL SERVERأرﺟ ﻮ أن أﻛ ﻮن
ﻗﺪ وﻓﻘﺖ ﻓﻲ ﺗﻮﺿﯿﺢ وﻟﻮ ﺟﺰء ﻣ ﻦ ﺑﺴ ﯿﻂ ﻣ ﻦ ﻫ ﺬا اﻟﺒﺮﻧ ﺎﻣﺞ اﻟﻀ ﺨﻢ أو أﻛ ﻮن ﻗ ﺪ أﻓ ﺪﺗﻜﻢ
ﻓﻲ ﺷﻲء
ﻣﻦ إﺻﺪاراﺗﻨﺎ :
اﻟﺴﻠﺴﻠﺔ اﻟﺨﺎﺻﺔ ﻟﻮﯾﻨﺪوز . XP
ﻣﺪﺧﻞ إﻟﻰ ﻣﺴﺠﻞ اﻟﻨﻈﺎم ﻟﻮﯾﻨﺪوز . XP
دورة ﺳﻠﺴﻠﺔ ﺷﺒﻜﺎت ﻣﯿﻜﺮوﺳﻮﻓﺖ .MCSE
دورة ﻗﻮاﻋﺪ ﺑﯿﺎﻧﺎت ).MCDBA (SQL SERVER
ﺗﻔﻀﻠﻮا ﺑﺰﯾﺎرة ﻣﻮﻗﻌﻨﺎ ﻋﻠﻰ اﻻﻧﺘﺮﻧﯿﺖ
وﻻ ﺗﻨﺴﻮﻧﺎ ﻣﻦ دﻋﻮة ﺻﺎﻟﺤﺔ ﻓﻲ ﻇﻬﺮ اﻟﻐﯿﺐ ﻟﻲ وﻟﻮاﻟﺪي وﻟﻠﻤﺆﻣﻨﯿﻦ .
ﻷي اﺳﺘﻔﺴﺎر اﻟﻤﺮاﺳﻠﺔ ﻋﺒﺮ اﻟﺒﺮﯾﺪ اﻹﻟﻜﺘﺮوﻧﻲ
[email protected]
ﺗﻢ ﺑﺤﻤﺪ اﷲ
15/7/2000
GOLD NOIL
PDF created with FinePrint pdfFactory Pro trial version www.pdffactory.com