SQL Server

Published on May 2016 | Categories: Documents | Downloads: 48 | Comments: 0 | Views: 488
of 101
Download PDF   Embed   Report

Comments

Content

‫ﺑﺴﻢ اﷲ اﻟﺮﺣﻤﻦ اﻟﺮﺣﯿﻢ‬
‫ﻫﺬا ﺷﺮح ﻟﺒﺮﻧﺎﻣﺞ أو ﻟﻘﻮاﻋﺪ اﻟﺒﯿﺎﻧﺎت ‪ 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‬‬

Sponsor Documents

Or use your account on DocShare.tips

Hide

Forgot your password?

Or register your new account on DocShare.tips

Hide

Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in

Close