براي ويرايش اطلاعات جدول اول بايد ركوردي انتخاب بشه و بعد فيلدهاي ركورد رو تغيير و مجددا نتيجه رو تو جدول ثبت كنيم.
تو
برنامه پيوست شده عمليات ويرايش اطلاعات در جدول رو بررسي ميكنيم:
اين برنامه در واقع همون برنامه جستجو هست كه تو پستهاي قبلي بررسي كرديم و فقط بخش ويرايش اطلاعات بدست اومده به اون اضافه شده.
گروهي به نام edit_group داريم كه شامل يك شي مربع براي پشت زمينه، تعدادي كادر EditBox براي ورود اطلاعات، كليد ثبت اطلاعات و بازگشت و يك اسكريپت به نام edit_record هست.
گروه edit_group در حالت عادي مخفي هست و با كليد ويرايش (edit_key) نمايش داده ميشه.
قبل از اينكه اين كليد گروه ويرايش اطلاعات رو نمايش بده لازمه ركوردي كه قصد داريم ويرايش كنيم رو جستجو و اطلاعاتش رو نمايش بديم.
اگه جستجو صحيح باشه و ركورد موردنظر بدست بياد، همونطور كه ميدونيد نتيجه جستجو تفكيك ميشه و تو متغير آرايه اي به نام [field$[i ثبت ميشه.
بنابراين بعد از جستجو متغير [field$[i حتما مقداري خواهد داشت.
كدهاي كليد ويرايش رو بررسي ميكنيم:
کد:
[COLOR=Blue]If [/COLOR](field$[1]<>[COLOR=DarkRed]''[/COLOR]) [COLOR=Blue]Then[/COLOR]
[B][COLOR=Navy]Show[/COLOR][/B]("edit_group")
[B][COLOR=Navy]LoadText[/COLOR][/B]("name_editbox","field$[2]")
[B][COLOR=Navy]LoadText[/COLOR][/B]("home_editbox","field$[3]")
[B][COLOR=Navy]LoadText[/COLOR][/B]("mob_editbox","field$[4]")
[B][COLOR=Navy]LoadText[/COLOR][/B]("address_editbox","field$[5]")
[COLOR=Blue]Else[/COLOR]
[B][COLOR=Navy]Message[/COLOR][/B]("","Error: you must select a record")
[COLOR=Blue]End[/COLOR]
قبل از هر چيزي براي اينكه مطمئن بشيم جستجويي انجام شده و ركوردي بدست اومده با يك شرط چك ميكنيم كه آيا متغير آرايه اي [field$[1 كه شماره رديف ركورد موردنظر درونش ثبت شده واقعا مقداري داره يا تهي هست.
اگه مقدار اين متغير تهي باشه يعني نتيجه جستجو صحيح بدست نيومده يا اصلا جستجويي صورت نگرفته بنابراين نميشه چيزي رو ويرايش كرد. اما اگه مقدار اين متغير مخالف تهي باشه يعني عمليات جستجو صحيح بود و ركورد موردنظر هم بدست اومده و فيلدهاي اين ركورد همونطور كه تو پستهاي قبلي هم ديديم با يك حلقه تفكيك شدن.
پس اگه مقدار متغير مخالف تهي باشه دستورات داخل شرط اجرا ميشه اما اگه مقدار متغير تهي باشه پيغام خطايي مبتني بر اينكه اول بايد ركوردي انتخاب بشه صادر ميشه.
دستورات داخل شرط به ما كمك ميكنن تا آماده ويرايش اطلاعات بشيم
من با دستور Show گروه ويرايش رو كه مخفي بودن نمايش ميدم.
مثل صفحه ورود اطلاعات جديد كه قبلا ديديم ما تو اين گروه چهارتا كادر EditBox براي دريافت نام و نام خانوادگي، شماره تلفن ثابت، شماره تلفن همراه و آدرس داريم.
پس به ترتيب مقدار متغيرهاي آرايه اي زير رو با دستور LoadText به كادر مربوطه ارسال ميكنم
[Field$[2 مقدار نام و نام خانوادگي ركورد موردنظر رو تو خودش ثبت كرده پس مقدار اين متغير به كادر name_editbox صادر ميشه
[Field$[3 مقدار شماره تلفن ثابت ركورد موردنظر رو تو خودش ثبت كرده پس مقدار اين متغير به كادر home_editbox صادر ميشه
[Field$[4 مقدار شماره تلفن همراه ركورد موردنظر رو تو خودش ثبت كرده پس مقدار اين متغير به كادر mob_editbox صادر ميشه
[Field$[5 مقدار آدرس ركورد موردنظر رو تو خودش ثبت كرده پس مقدار اين متغير به كادر address_editbox صادر ميشه
وقتي گروه ويرايش نمايش داده ميشه ميبينيد كه تو كادرهاي EditBox همون فيلدهايي كه تو جستجو بدست اومده بود نمايش داده ميشه.
ميتونيم عبارت داخل اين كادرها رو تغيير بديم و با كليد ثبت اطلاعات ( set_record ) اين اطلاعات رو جايگزين اطلاعات قبلي ركورد موردنظر كنيم.
عبارت داخل كادر name_editbox تو متغيري به نام $name ثبت ميشه
عبارت داخل كادر home_editbox تو متغيري به نام $home ثبت ميشه
عبارت داخل كادر mob_editbox تو متغيري به نام $mob ثبت ميشه
و عبارت داخل كادر address_editbox تو متغيري به نام $address ثبت ميشه
كليد ويرايش (set_record) دستورات اسكريپت edit_record رو اجرا ميكنه.
کد:
msg$=[COLOR=DarkRed]'Do you really want to edit this record?,4'[/COLOR]
[B][COLOR=Navy]MessageEx[/COLOR][/B]("","msg$")
[COLOR=Blue]If [/COLOR](CBK_MsgEx=6) [COLOR=Blue]Then[/COLOR]
sql_query$=[COLOR=DarkRed]'UPDATE tell SET name="'[/COLOR]+name$+[COLOR=DarkRed]'", home='[/COLOR]+home$+[COLOR=DarkRed]', mob='[/COLOR]+mob$+[COLOR=DarkRed]', address="'[/COLOR]+address$+[COLOR=DarkRed]'" WHERE id='[/COLOR]+field$[1]+[COLOR=DarkRed]';'[/COLOR]
[B][COLOR=Navy]PluginSet[/COLOR][/B]("SQL_Plugin","sql_query$")
[B][COLOR=Navy]PluginRun[/COLOR][/B]("SQL_Plugin","UpdateDB")
[B][COLOR=Navy]PluginGet[/COLOR][/B]("SQL_Plugin","update")
[COLOR=Blue]If [/COLOR](update=1) [COLOR=Blue]Then[/COLOR]
[B][COLOR=Navy]Message[/COLOR][/B]("","ok")
[COLOR=Blue]Else[/COLOR]
[B][COLOR=Navy]PluginRun[/COLOR][/B]("SQL_Plugin","DBError")
[B][COLOR=Navy]PluginGet[/COLOR][/B]("SQL_Plugin","Error$")
[B][COLOR=Navy]Message[/COLOR][/B]("","Error$")
[COLOR=Blue]End[/COLOR]
[COLOR=Blue]End[/COLOR]
قبل از اينكه اطلاعات ركورد ويرايش بشه بايد از انجام اين عمليات مطمئن بشيم.
به همين خاطر من پيغامي مبني بر اينكه آيا واقعا قصد ويرايش اطلاعات را داريد رو به كمك MessageEx صادر ميكنم.
اين پيغام همونطور كه ميبينيد تو يك متغير رشتهاي به نام $msg همراه با پارامتر (
4, ) ثبت ميشه و دستور MessageEx مقدار اين متغير رو نمايش ميده.
در واقع من يك پيام با دوتا كليد No و Yes صادر ميكنم كه اگه كليد Yes انتخاب بشه يعني ما واقعا قصد ويرايش اطلاعات رو داريم. پارامتر (
4, ) تو اين دستور به همين دليل مورد استفاده قرار ميگيره تا پيغامي با كليدهاي No و Yes بسازه.
چطور ميتونيم متوجه بشيم كه كليد Yes تو پنجره پيغام انتخاب شده؟
هر كليدي كه تو اين پنجره پيغام انتخاب بشه عددي رو تو متغيري به نام CBK_MsgEx ثبت ميكنه. براي كليد Yes عدد 6 ثبت خواهد شد.
بنابراين اگه يك شرط داشته باشيم تا بررسي كنه كه آيا مقدار CBK_MsgEx = 6 هست يا نه به هدفمون رسيديم. پس در صورتي كه اين شرط برقرار باشه يعني كليد Yes انتخاب شده و برنامه بايد اطلاعات ركورد موردنظر رو تو ديتابيس ويرايش كنه.
دستورات داخل شرط:
براي ويرايش ركوردها تو SQL دستوري به نام UPDATE داشتيم
شكل كلي اين دستور به اين صورت بود:
کد:
UPDATE tablename SET field1=value1, field2=value2, field3=value3, … WHERE condition ;
همونطور كه ميدونيد تو اين اين دستور به جاي tablename نام جدول، به جاي field ها و value ها فيلد موردنظر و مقدار فيلد و به جاي condition هم شرط موردنظر رو وارد ميكنيم.
تو خط اول من اين دستور رو به متغير رشتهاي $sql_query ارسال ميكنم.
کد:
sql_query$=[COLOR=DarkRed]'UPDATE tell SET name="'[/COLOR]+name$+[COLOR=DarkRed]'", home='[/COLOR]+home$+[COLOR=DarkRed]', mob='[/COLOR]+mob$+[COLOR=DarkRed]', address="'[/COLOR]+address$+[COLOR=DarkRed]'" WHERE id='[/COLOR]+field$[1]+[COLOR=DarkRed]';'[/COLOR]
اين دستور در جدول tell در ركوردي كه فيلد رديف (id) با مقدار متغير [field$[1 برابر باشه (يعني همون ركورد موردنظري كه در جستجو بدست اومده)، مقدار متغير $name رو در فيلد name ، مقدار متغير $home رو در فيلد home ، مقدار متغير $mob رو در فيلد mob و مقدار متغير $address رو در فيلد address قرار ميده.
اين دستور ويرايش اطلاعات به زبان SQL بود كه طبق معمول بايد به پلاگين ارسال و اجرا بشه.
بنابراين من با دستور PluginSet مقدار متغير $sql_query رو به پلاگين ارسال ميكنم.
تو خط بعد با دستور UpdateDB دستور رو اجرا ميكنم.
اطلاعات موردنظر تو ديتابيس ويرايش ميشه و ميشه نتيجه رو با دستور PluginGet تو متغيري به نام update بدست آورد.
اگه اطلاعات ما به درستي ويرايش شده باشه مقدار update = 1 خواهد بود.
من ميتونم با يك شرط چك كنم كه آيا update = 1 هست يا نه.
در صورتي كه شرط صحيح باشه پيغام موفقيت صادر ميشه اما اگه شرط صحيح نباشه يعني در ثبت ركورد خطايي رخ داده.
من ميتونم با دستور DBError خطاي موردنظر رو بدست بيارم و تو متغير رشتهاي به نام $Error بريزم و با دستور Message مقدار اين متغير كه همون خطاي به وجود اومده هست رو نمايش بدم.
تا اينجا اطلاعات ما ويرايش و ثبت شد.
براي بازگشت به حالت قبل هم از كليد بازگشت (cancel_key) استفاده ميكنم.
توي اين كليد دو خط كد نوشته شده.
خط اول با دستور Hide گروه ويرايش رو مجددا مخفي ميكنم و تو خط دوم با دستور RunScript اسكريپت search رو اجرا ميكنيم تا عمليات جستجو و نمايش اطلاعات مجددا انجام بشه و نتيجه جديد نمايش داده بشه.
ادامه دارد ...