PDA

View Full Version : سوال: مشکل در مقایسه دو داده



mammadhasantaghavi
چهارشنبه 01 شهریور 1391, 23:02 عصر
با سلام خدمت دوستان عزیز من یه برنامه اکسس طراحی کردم که پروژه های ساختمانی رو توش وارد میکنیم.
حالا میخوام یک شناسه به هر پروژه اختصاص بدم مثلا برای ساختمان های کوچک این کد رو بدم 91.1.1 و برای ساختمان های بزرگ مثلا این کد 91.2.1 با استفاده از خاصیت input mask این حالت رو ایجاد کردم و تو یک فرم همین شناسه رو از جدول مربوطه و یک کامبو باکس که حاوی نوع ساختمان(بزرگ یا کوچک) و یک شناسه که شامل (1.کوچک 2. بزرگ) است رو وارد کردم.خلاصه سرتون رو به در نیارم.حالا من میخوام موقعی که شناسه رو میزنم با نوع ساختمان چک بشه مثلا موقعی میزنم 91.1.1 و نوع ساختمان رو بزرگ انتخاب میکنم یک پیغام خطا بده که کد اشتباه تعریف کردید.حالا من از یک if استفاده کردم یه فرمولی مثل زیر نوشتم:
Private Sub CO_NEW_Click()
If [PR-N].Value = 1 And [PR-KEY].Value Like "91.1.*" Then
MsgBox ("T")
Else
MsgBox ("F")
End If
End Sub
که PR-N کدی هست که تعریف کردم برای ساختمان(چون با فارسی مشکل داشت یک کد تعریف کردم که موقعی که مثلا ساختمان کوچک رو انتخاب میکنم به صورت اتوماتیک این فیلد عدد یک رو مقدار دهی میکنه)
و PR-KEY شناسه مورد نظر هست .حالا هر کاری ما کردیم جواب نداد.اگه هر کدام از شرط ها رو جدا بنویسم برنامه عمل میکنه ولی موقعی از AND یا & استفاده میکنم فقط شرط دوم رو میگیره.
اگه بتونید راهنمایی کنید ممنون میشوم.

emami.sie
پنج شنبه 02 شهریور 1391, 10:50 صبح
با سلام
چند نکته در مورد سئوال شما:
نکته اول: شما از یک طرف گفتید که کد 91.1.1 رو مثلا برای ساختمانهای کوچیک در یک جدول اختصاص دادید، لذا نیازی نیست که در فرمتون بعد از درج کد، کمبو باکسی وجود داشته باشه که نوع ساختمون (بزرگ یا کوچیک) توش وارد بشه و بعد هم بخواد پیغامی مبنی بر درست یا نادرست بودنش نمایش داده بشه؛ و راحتتر اینه که در رویداد After update فیلد کدتون یه شرط تعیین کنید که اگه رقم چهارم از فیلد کدتون 1 بود نوع ساختمون کوچیک و اگه 2 بود بزرگ رو نمایش بده... که شروع کد به این صورت خواهد بود و ادامه ش با خودتون: ..... if Mid([PR-KEY],4,1) = 1 then
نکته دوم: اگه صورت سئوالتون با اون چیزی که در قسمت اول گفتم مطابقت نداره و اصلا مد نظر شما همون چیزیه که در متن سئوالتون گفتید کافیه قسمت If [PR-N].Value = 1 And [PR-KEY].Value Like "91.1.*" Then رو به If [PR-N].Value=Mid([PR-KEY],4,1) Then تغییر بدید...
و نکته سوم اینکه شما برای چک کردن 2 تا فیلد با هم از یک باتون استفاده کردید و کدتون رو در ویداد on_click اون نوشتید که اینکار لازم نیست و بهتره که این کد در رویداد مثلا on_Exit فیلد دوم قرار بگیره و با استفاده از Cancel=true در قسمتی که خطا رخ خواهد داد، از عبور از این فیلد جلوگیری بشه....
اگه نتونستید درستش کنید نمونه بذارید تا بهتر بشه بهتون کمک کرد...
موفق باشید
یا علی

mammadhasantaghavi
پنج شنبه 02 شهریور 1391, 18:43 عصر
با سلام.
از توجه شما ممنون.من به این خاطر هم از کد استفاده کردم هم از خود نوع ساختمان چون پر کردن فرم با اپراتور هست و میخوام ضریب خطا بیاد پایین یعنی ممکنه اپراتور کد رو اشتباه وارد کنه ولی موقعی که مجبور باشه نوع ساختمان رو هم وارد کنه هر دو را با هم میبینه و احتمال خطا کمتر میشه.حالا با این راهنمایی که شما فرمودید من پیش رفتم ولی باز مثل قبل یک شرط رو چک میکنه یه نمونه هم براتون فرستادم.(برا روشن شدن مساله هم این رو اضافه کنم که کد 91.1.2 یعنی (91) پروژه سال 91 و (1) نوع ساختمان بزرگ و (2) کاربری فضا اداری هست.)
ضمنا مطلبی که فرمودید کد رو بزنید خودش نوع پروژه رو تعیین کنه (AFTER UPDATE) اگه بشه به این صورت در بیاد که موقعی کد رو وارد میکنیم فیلد هایی که در فرم آوردم اتوماتیک پر بشه خیلی به کارم میاد.
ممنون از وقتی که میگذارید.

mammadhasantaghavi
جمعه 03 شهریور 1391, 14:03 عصر
میشه نمونه که گذاشتم رو چک کنید

emami.sie
شنبه 04 شهریور 1391, 11:50 صبح
سلام مجدد
نمونه رو ببینید؛ 2 تا فرم براتون تعبیه کردم با رویکردهای متفاوت:
فرم 1: کد رو وارد می کنید و سایر قسمتها پر میشن و اگه کمبو باکسها رو تغییر بدید، پیغام مورد نظر رو دریافت خواهید کرد (اصلاح شده ی روش خودتون)
فرم 2: روش صحیح اینه که کاربر با استفاده از کمبوباکسهای موجود مقادیر مورد نظرشو انتخاب کنه و بعد کد تشکیل بشه (این روش برای کاربر خیلی راحتتره چون نمی خواد بدونه که مثلا کد اداری 2 هستش) بلکه باید کاربر مثلا اداری رو انتخاب کنه و بعد در جایگاه خودش در کد، عدد 2 بشینه...
نمونه رو ببینید بهتر متوجه خواهید شد
موفق باشید
یا علی