خب در مورد اسکریپت های راه اندازی پلاگین و باز کردن دیتابیس همینطور هست که شما فرمودین
حالا میرسیم به ارتباط برقرار کردن با پلاگین و دیتابیس و استخراج یا ورود یا... اطلاعات.
همونطور که میدونید برای ارتباط با پلاگین از دستورات SQL استفاده میشه که البته بسیار هم ساده هستن، حداقل در سطح نیاز معمولی.
تمام دستورات SQLی که مینویسیم توسط تابع Query به پلاگین فرستاده میشن.
کد:
SQLQuery$ = 'SELECT * FROM Test;'
PluginSet("PlugIn","SQLQuery$")
PluginRun("PlugIn","Query")
و مقدار برگشتی از پلاگین رو هم توسط دستور PluinGet دریافت میکنیم
کد:
PluginGet("PlugIn","Results$")
پس متغیر $Results حاوی اطلاعات بازگشتی از پلاگین که ما درخواست کرده بودیم هست.
حالا در برخی موارد به هر دلیلی مثل نوشتن نادرست دستورات SQL پلاگین قادر به انجام درخواست ما نیست و بنابراین اون اطلاعاتی که ما توقع داشتیم بازگشت داده بشه، طبیعتاً بدست ما نمیرسه، برای اینکه در این موارد ما از بروز خطا مطلع بشیم پلاگین تابعی برای ما فراهم کرده بنام DBError
کد:
PluginRun("PlugIn","DBError")
PluginGet("PlugIn","DBError$")
که در صورت بروز خطا متغیر $DBError حاوی توضیحاتی خواهد بود و در غیر اینصورت متغیر خالی خواهد بود.
تا اینجا ما تونستیم اطلاعاتی رو از دیتابیس توسط پلاگین استخراج کنیم؛ اما فرمت این اطلاعات به شکل خاصی هست.
اطلاعات بازگشتی از پلاگین بصورت آرایه ای از اطلاعات هست که توسط کاراکترهایی که با نام Delimiter شناخته میشن این اطلاعات از هم جدا میشن و قابل تفکیک هستن.
در این فرمت، سطرها یا رکورد ها با کاراکتر جداساز # (در حالت پیشفرض) و ستونهای هر رکورد یا اصطلاحاً فیلدها (ّField) با کاراکتر جداساز | از هم جدا میشن.
که ما میتونیم با کمک توابع مربوط به کار با آرایه ها در MMB این اطلاعات رو از هم تفکیک کنیم.
کد:
Delimiter$ = '#'
For i=1 To Rows
Rows$[i] = GetArrayItem(Results$,Delimiter$,i)
Rows$[i] = Rows$[i] + '|'
NumberOfFields = GetArrayNum(Rows$[i],|)
For j=i To Rows
Ne1$[j] = GetArrayItem(Rows$[i],|,3)
Ne2$[j] = GetArrayItem(Rows$[i],|,6)
Ne3$[j] = GetArrayItem(Rows$[i],|,1)
Ne4$[j] = GetArrayItem(Rows$[i],|,5)
Ne5$[j] = GetArrayItem(Rows$[i],|,2)
Next j
Next i
اما برای اینکه بتونیم به درستی و بطور کامل اطلاعات رو از هم تفکیک کنیم، باید بدونیم که اطلاعات استخراج شده از دیتابیس (اطلاعات بازگشتی از پلاگین) شامل چه تعداد رکورد هست، تا بتونیم تمام اونها رو نمایش بدیم (در واقع از هم تفکیک کنیم)
برای مرتفع کردن این مورد هم پلاگین تدبیری اندیشیده است (!)
بدین ترتیب که وقتی ما کوئری SQL رو به پلاگین پاس میدیم، پلگین دو مقدار رو برای ما بر میگردونه،
یکی اطلاعاتی هست که درخواست کرده بودیم که در قالب یک متغیر رشته ای ($Results) به ما تحویل داده میشه
و دیگری متغیری عددی هست که نشان دهنده ی تعداد رکوردها یا سطرهای موجود در مقدار بازگشتی هست:
کد:
PluginGet("PlugIn","Rows")
پس متغیر Rows به ما میگه که چه تعداد رکورد در اطلاعات بازگشتی ما وجود داره.
همونطور که میدونید در سیستم دیتابیس، هر جدول شامل تعدادی ستون هست که اطلاعات رو از هم تفکیک میکنه و تمام سطرها، اون ستونها رو دارن (حالا میتونن در اون ستون اطلاعاتی رو ذخیره بکنن یا نه.
متغیر NumberOfFields میاد تعداد این ستونها رو از روی آرایه ی موجود میخونه، لزوم اینکار برای این هست که ما بتونیم کدهای انعطاف پذیری بنویسیم که بتونه براحتی با دیتابیس کار کنه
البته در مورد تعداد فیلدها معمولاً نیازی به اینکار نیست چون دیتابیس رو خود ما طراحی کردیم و میدونیم که فلان جدول از این مقدار ستون تشکیل شده و یا در فلان دستور ما فلان فیلدها رو در اطلاعات بازگشتیمون داریم.
اما در مورد تعداد ستونها این خیلی مهم هست، چون تعداد رکوردهای بازگشتی همیشه برای ما مشخص نیست (مثلاً در جستجو ها)، بنابراین ما با دونستن تعداد رکورد ها (سطرها) میتونیم با کمک حلقه ها در اونها پیمایش کنیم و اطلاعات رو از هم تفکیک کنیم و در صورت لزوم نمایش بدیم.
امیدوارم تونسته باشم خوب توضیح بدن و توضیحاتم گنگ نبوده باشه.
موفق باشید