أكثر

تعبئة الحقول بالجمل الشرطية

تعبئة الحقول بالجمل الشرطية


لدي أربعة حقول في ملف الأشكال الخاص بي. أرغب في ملء واحدة منهم فقط (خلية جدول السمات) وبعد كتابة خلية واحدة تلقائيًا ، سيتم ملء الخلية الأخرى بجملة شرطية. أحتاج إلى الاحتفاظ بهذا الشرط هناك ، وملء سمة القيمة ، دون الحاجة إلى تشغيل الآلة الحاسبة المودعة (تلقائيًا).


يمكنك أن تخلق الحقول الافتراضية للحقول التي تريد تحديثها تلقائيًا. عندما تقوم بإنشاء تعبير لهذه الحقول الافتراضية ، سيتم تطبيقها في كل مرة تقوم فيها بإجراء تغييرات وحفظها على ملف الشكل (قد تحتاج إلى إعادة تحميل جدول البيانات لمعرفة التغييرات).

لاحظ أيضًا أنك ستحتاج إلى إنشاء ملف مشروع لملف الشكل (إذا لم تكن قد قمت بذلك بالفعل) حيث يتم تخزين الحقول الافتراضية في ملفات المشروع (.qgs).


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

layer = qgis.utils.iface.activeLayer () layer.startEditing () idx_1 = layer.fieldNameIndex ("nivel_1") idx_2 = layer.fieldNameIndex ("nivel_2") idx_3 = layer.fieldNameIndex ("nivel_3") الصيغة_1 = 'case عندما "codigo" = 1 ثم 1 end 'الصيغة_2 =' الحالة عندما "codigo" = 2 ثم 2 end 'الصيغة_3 =' الحالة عندما "codigo" = 3 ثم 3 end 'e_1 = QgsExpression (الصيغة_1) e_2 = QgsExpression (الصيغة_2) e_3 = QgsExpression (format_3) e.prepare (layer.pendingFields ()) لـ f in layer.getFeatures (): f [idx_1] = e_1.evaluate (f) f [idx_2] = e_2.evaluate (f) f [idx_3 ] = e_3.evaluate (f) layer.updateFeature (f) layer.commitChanges ()

ملاحظة: هناك طرق أفضل للكتابة النصية لتحقيق ذلك!


أتمنى أن يساعدك هذا!


شاهد الفيديو: الجمل الشرطية في اللغة الانجليزية