أكثر

MapBasic- إبقاء التحديد حياً بعد تحريره؟

MapBasic- إبقاء التحديد حياً بعد تحريره؟


لدي وظيفة يتم استدعاؤها من التكرار على الصفوف المحددة في جدول التحديد. يتم استدعاء عملية التخزين المخزنة وكل شيء يعمل بشكل جيد للسجل الأول في التحديد ولكن بعد تحرير جدول التحديد بواسطة العملية المخزنة ، يصبح التحديد في MapInfo لاغياً. هل هناك أي طريقة لإبقاء التحديد حيًا بعد التعديل الأول حتى أتمكن من متابعة وتشغيل الأمر المخزن للصف التالي في التحديد؟ (ملاحظة: أعلم أنني أقوم بتحديث الجداول الموجودة في الكود ، ولكن لا يتم الضغط على هذا في وقت التشغيل لأن الكود يدخل "آخر" قبل أن يتم استدعاء ذلك بسبب التحديد الفارغ:

**************************************************** *** "إنشاء مزايدة تاريخية" أضف منطقة محددة من mpBidBlocks إلى mpHistoricalBidBlocks '************************************ ********************* Sub BidBlock (i_blockID كعدد صحيح) خافت SelCount كعدد صحيح خافت SelTableName كسلسلة قاتمة i_lstCountry ، i_contractid ، i_type ، i_stage ، i_MIPRINX كعدد صحيح خافت i_RelinqDate كعدد صحيح خافت s_CurrentRelinqComments كسلسلة قاتمة s_RelinqSchComments كسلسلة قاتمة s_CurrentRelinqArea كسلسلة باهتة مثل سلسلة باهتة إرجاع نتيجة كسلسلة قاتمة returnResultStatus كعملية خافتة للعدد الصحيح كعملية سلسلة = "moveBidBlock" print chr $ (12) "تأكد من فتح الجداول الداعمة إذا getSelectionInfo (SelCelectionInfo (SelCelectionInfo (SelCelectionInfo ، SelTableName) ثم إذا كان SelCount> 0 ، ثم إذا كان SelTableName = vwBidBlocks ، فانتقل "لديك عقد واحد محدد" إلى عمليات التنازل وتحديث العقود التاريخية إذا كان TableOpen (vwHistoricalBidBlocks) ثم "الجداول مفتوحة" هل تحتاج إلى الحفظ إذا كان يفعل TableNeedSave (vwHistoricalBidTableNlocks) vwBi dBlocks) ثم لاحظ "يجب عليك حفظ التعديلات قبل استخدام هذه الوظيفة!" الخروج من النهاية الفرعية إذا كان "مضلعًا إذا كان ObjectInfo (Selection.obj، OBJ_INFO_TYPE) = OBJ_TYPE_REGION ثم" أخيرًا - هل قام المستخدم بإغلاق هذه الدولة إذا كان userHasSelectedCountryLocked () ثم "كل شيء جاهز res = logFile (dataroot + debugfile،" تاريخي كتلة منع العطاءات: "+ i_BlockID،" INF ")" الآن يمكننا إكمال نقل كتلة العطاء التاريخي إذا نفذت SPReturnResult (عملية ، "أعلنout varchar (200) ، @ Return int exec dbo.pr_moveBidBlockBLOCKID =" + i_blockId + "، @ MI12 = 'MapInfo'، @ NewMI_PRINX = @ Return output، @ Message = @ out output حدد @ out، @ Return "، returnResult، returnResultStatus) ثم res = logFile (dataroot + debugfile،" Historical BidBlock returnResult: "+ returnResult +" "+ returnResultstatus،" INF ")" التحقق من النتيجة جيدة 'إذا كان returnresultstatus> = 0 ثم' تحديث الجداول ، استدعاء RefreshServerTable (vwBidBlocks ، false) ، استدعاء RefreshServerTable (vwHistoricalBidBlocks ، false) res = logFile (dataroot + debugfile، "finish" + عملية ، "INF") ملاحظة "اكتمال BidBlock التاريخي لـ BlockId:" + i_BlockID else ملاحظة "فشل BidBlock التاريخي لـ BlockId:" + i_BlockID + "خطأ محتمل في التحقق من الصحة؟" end if else note "خطأ في محاولة تشغيل" + process + "، تم إرجاع الخطأ:" + returnresult exit sub end إذا لم يكن لديك "+ Selection.Country +" locked "end if else note" يجب عليك حدد مضلع BidBlock "end إذا كان الأمر كذلك ، لاحظ أن vwHistoricalBidBlocks +" يجب أن يكون مفتوحًا "end إذا لاحظ آخر" يجب أن يكون اختيارك من BidBlock لتنفيذ عرض مزايدة تاريخي "end if if else" يجب تحديد كائن BidBlock واحد لتنفيذ عرض مزايدة تاريخي "end if else note" تحتاج إلى تحديد BidBlock قبل أن تتمكن من استخدام هذه الوظيفة "end if end sub

نعم ، تحتاج إلى تخزين اسم جدول التحديد والإشارة إليه بالاسم بدلاً من استخدام الاسم الخاص "التحديد". يمكنك الحصول على اسم جدول التحديد باستخداممعلومات التحديد (SEL_INFO_SELNAME). بمجرد حصولك على ذلك ، ستحتاج إلى استخدام متغيرات الاسم المستعار للإشارة إلى حقول ذلك الجدول. أيضًا ، تحتاج إلى التأكد من استخدام ملفاتأحضرلاسترداد كل سجل أو لن ينتقل المؤشر أبدًا إلى الصف التالي. فمثلا:

قم بتعتيم اختياراتي كـ String Dim alRowIDColumn كـ اسم مستعار mySelection = SelectionInfo (SEL_INFO_SELNAME) alRowIDColumn = mySelection & ".RowID" جلب أولاً من mySelection '// احصل على السجل الأول في التحديد Do while not EOT (mySelection) Print "الصف الحالي:" alRowIDColumn '// افعل أشياء بهذا السجل ... جلب التالي من mySelection' // احصل على السجل التالي في حلقة التحديد

شاهد الفيديو: MapBasic in MapInfo. Урок 1. Основы языка