PDA

View Full Version : استخراج داده دلخواه از ساب فرم



mahsa.admin
یک شنبه 05 اردیبهشت 1389, 09:32 صبح
با سلام حضور تمامی دوستان مشکلی برخورد کردم که در فایل ضمیمه توضیح دادم اگر لطف کنید راهنمایی کنید ممنون میشم

مهدی قربانی
یک شنبه 05 اردیبهشت 1389, 12:18 عصر
سلام
متوجه منظور شما نميشم ، يعني شما قصد داريد اطلاعات ركوردهايي كه دراري عدد مشخصي هستن به تكست باكسها منتقل بشه يا اينكه مبناي عمل چيز ديگه اي هست !؟ بهتره فرآيند مورد نظرتون رو كامل شرح بديد چون احتمال مي دم روش اجرايي شما ايراد داشته باشه .

mahsa.admin
یک شنبه 05 اردیبهشت 1389, 12:28 عصر
باسلام
بله جناب قربانی هما نطور که گفتید قصد دارم در ساب فرمی که از رکوردهای زیادی تشکیل شده رکورد های خاص که مثلا من 3 تا از ان را معلوم کردم در تکس باکس درنظر گرفته شده قرار گیرد البته با ابدیت کردن مثلا ستون b ویا c تکس باکس ها هم ابدیت شود

مهدی قربانی
یک شنبه 05 اردیبهشت 1389, 12:47 عصر
خوب اينجا يك مشكلي هست ، آيا اين اعداد مبنا در تمام اوقات مقادير ثابتي هستن يا اينكه در نوبتهاي بعدي ممكنه تغيير كنن. بازم تاكيد مي كنم بهتره كل فرآيند رو تشريح كنيد و بفرمائيد كاربر چه استفاده اي قراره از اين برنامه داشته باشه ،شايد امكان راه حل مناسبتري باشه

mahsa.admin
یک شنبه 05 اردیبهشت 1389, 14:50 عصر
بله این اعداد ثابت هستند
این یک برنامه بیمارستانی هست که کل صورت حساب بیمار در یک دیتا شیت ثبت می شود
بعضی از این کد ها که هر کدام به یک خدمات خاصی مثل حق العمل یا بیهوشی اختصاص دارد لازم است از دیتا شیت بیرون بیایدودر تکس باکس نمایش داده شود از طرف دیگر مشکل اساسی اینجاست که در پرینت قیمت هر خدمات جلوی ان بخورد(البته در پرینت کلیه خدمات هست وهر خدماتی که بیمار دارد فقط قیمتش جلوی ان میخورد انهایی که ندارد باید صفر بخورد) البته مشکل تکس با کس حل شود من در مورد پرینت بیشتر توضیح میدهم البته ببخشید از این همه زحمتی که ایجاد کردم

مهدی قربانی
یک شنبه 05 اردیبهشت 1389, 15:16 عصر
سلام
با اين تفاسير ساختار طراحي شما ايراداتي داره ، ببينيد براي روش مورد نظر شما يا بهتره بگيم سيستم ثبت پرونده يا سوابق بيمار بايد جدولي داشته باشيم براي ثبت مشخصات بيمار و همينطور جدولي مربوط به خدمات پزشكي كه حاوي كد خدمات ، تعرفه خدمات و ... و جدولي براي ثبت سوابق بيمار و اين جداول رو به تناسب با هم لينك كنيد . در صورت رعايت اين حالت در مراحل بعدي از جمله فرآيند مورد نظر شما ساده و اصولي تر برآورده خواهد شد . قطعاً ارئه راه حلهاي متنوع و كاربردي ميسر خواهد بود به شرط ايجاد بانك به روش اصولي .

mahsa.admin
دوشنبه 06 اردیبهشت 1389, 08:20 صبح
بله دقیقا همین طور هست یعنی مبنای طراحی من بر این اساس هست مشکلی که وجود دارد این است که دیتا من از فاکس پرو لینک شده به همین خاطر یکسری محدودیت ها را شامل میشود ولی با این اوصاف ایا امکان چنین کاری که در بالا فایل ان راضمیمه کردم هست؟

مهدی قربانی
دوشنبه 06 اردیبهشت 1389, 11:30 صبح
سلام
ببينيد ارائه راه حل متناسب با فرآيند مورد نظر شما امكانپذيره منتها احتمال بروز مشكل بدليل اصولي نبودن طراحي و فرآيند استفاده از برنامه داده ميشه . به هر حال بنده با استفاده از تابع Dlookup خواسته شما رو در نمونه پياده كردم و همينطور در رخداد After Update فيلدهاي b , c , d دستور Referesh فرم m رو صادر ميشه كه به اين ترتيب بعد از ويرايش مقادير فيلدهاي مذكور در سابفرم ، تكست باكسهاي روي فرم بروزآوري خواهند شد .
نكته :يك اشكال اينه كه اگر اعداد مبنايي كه در تابع لحاظ شدن به هر دليلي تغيير كنن عملكرد توابع مختل خواهد شد يعني صحت عملكرد اين توابع در گرو عدم تغيير مقادير 123 , 155 و 124 موجود در فيلد a خواهد بود .

mahsa.admin
دوشنبه 06 اردیبهشت 1389, 12:52 عصر
جناب قربانی باتشکر از وقتی که گذاشتید بسایر عالی بود جسارتن دو سوال هم دارم
1. دستور بالا سرعت رو کم نمیکند (در لود شدن وبارگذاری)
2 فرض کنیم در پرینت(همون بحثی که اول گفتم) مانندفایل ضمیمه خواستم نوشته های مختلفی داریم ولی هریک از عدد های جلوی نوشته خودش باید قرار کیر میشه نگاهی به فایل ضمیمه کنید

انگوران
دوشنبه 06 اردیبهشت 1389, 12:53 عصر
دوست عزيز علاوه بر راه حل استاد قرباني كد زير رو تو رويداد on current فرم بنويس ببين كمكت ميكنه.

Me.a = IIf(Me.w.Form.a = 123, Me.w.Form.a, "")
Me.b = IIf(Me.w.Form.a = 123, Me.w.Form.b, "")
Me.c = IIf(Me.w.Form.a = 123, Me.w.Form.c, "")

mahsa.admin
دوشنبه 06 اردیبهشت 1389, 13:34 عصر
با تشکر از جناب انگوران به خاطر توجهی که به این موضوع کردند
بله جواب میدهد ولی فقط برای سطر اول در بقیه سطر هاجواب نمیدهد ایا سوالی که در مورد پرینت کردم راه حلی دارد

مهدی قربانی
دوشنبه 06 اردیبهشت 1389, 17:37 عصر
جناب قربانی باتشکر از وقتی که گذاشتید بسایر عالی بود جسارتن دو سوال هم دارم
1. دستور بالا سرعت رو کم نمیکند (در لود شدن وبارگذاری)
2 فرض کنیم در پرینت(همون بحثی که اول گفتم) مانندفایل ضمیمه خواستم نوشته های مختلفی داریم ولی هریک از عدد های جلوی نوشته خودش باید قرار کیر میشه نگاهی به فایل ضمیمه کنید


در مورد سرعت بستگي به حجم بانك و تعداد textbox ها داره اگر همين تعداد باشه فكر نمي كنم مشكلي پيش بياد مضاف براينكه اگر سرعت برنامه براي شما مهم باشه بايد برنامه خودتون رو اصولي طراحي كنيد تا بواسطه عملكرد مطلوب سرعت مطلوب هم داشته باشيد علت تاكيد بنده در مراحل قبلي هم دقيقاً همين نكته بود .
در مورد سئوال دوم اگر منظور شما تكست باكسهاي گزارش باشه مي تونيد مشابه فرم از تابع Dlookup استفاده كنيد .


DLookUp("[d]";"w";"[a]='123'")

انگوران
سه شنبه 07 اردیبهشت 1389, 07:56 صبح
با تشکر از جناب انگوران به خاطر توجهی که به این موضوع کردند
بله جواب میدهد ولی فقط برای سطر اول در بقیه سطر هاجواب نمیدهد ایا سوالی که در مورد پرینت کردم راه حلی دارد
اگه درست متوجه منظورتون شده باشم شما بايد نوع هر خدمت رو مثلاً با يك فيلد از نوع yes/no مشخص كنيد سپس در گزارش كدي به شكل زير بنويسين .

if tick=true then
sum=sum+mablagh
end if
سپس فيلدي كه قراره جمع رو نمايش بده مساوي با sum قرار بدي

mahsa.admin
سه شنبه 07 اردیبهشت 1389, 10:02 صبح
باتشکر
جناب قربانی مشکلی که پیش امده این است که این دستور شما فقط روی جدول w جواب میدهددر یک بیمارستان که چندین نفر ممکنه است یک کد مشتر مثلا 124 داشته باشند که مربوط به مثلا ویزیت میشود بنا براین با شرایط موجو به نظر میرسد ایجاد یک ساب فرم که کلیه خدمات شامل یک بیمار را یکجا بیاورد وحالا از داخل این خدمات مربوط به یک فرد که با شماره پرونده مشخص میشود خدمات دلخواه تفکیک شود ایا این امکان وجود دارد دستور DLookUp داد هایش را از جدول نگیر واز از ساب فرمی بگیر که مختص یک فرد خاص هست فایل ضمیمه دقیقا چیزی هست که مد نظر من هست البته شاید با ایجاد کلید اصلی و به شکل استاندارد حل کرد ولی چیزی که من دارم دقیقا مانند فایل ضمیمه هست امکان تغییرات نیست چون دیتا لینک شده به فاکس پرو هست

مهدی قربانی
سه شنبه 07 اردیبهشت 1389, 13:04 عصر
سلام
يه پيشنهاد ، شما بهتره براي اينكه اين مبحث طولاني نشه و از طرفي زودتر و بهتر به نتيجه برسيد اين نمونه رو بر اساس مدل واقعي تكميل كنيد ( جداول ، كوئريها ، فرمها و ...) بعد منابع استخراج اطلاعات رو تعيين كنيد تا اونوقت بشه بهتر و مفيدتر راه حل ارائه كرد ، واقعيت امر بنده هر جور سعي مي كنم نمي تونم اون Image ذهني از ديتابيس شما رو ترسيم كنم تا بتونم راه حل بدم خدمتتون و حس مي كنم به شكل فعلي اگر جلو بريم ابهامات بيشتر بشه و نهايتاً موضوع تبديل به يك كلاف سردرگم بشه . طبق توصيه اي كه تقديمتون شد شما ساختار رو در حد ممكن تكميل و بازسازي كنيد تا بنده و دوستان بهتر بتونيم در خدمت باشيم .

mahsa.admin
سه شنبه 07 اردیبهشت 1389, 13:39 عصر
باتشکر از اقای اقای قربانی وعرض معذرت از زحماتی که ایجاد کردم
فایل اخر که ضمیمه شده شمایی از پروزه من است همان طور که عرض شده دیتای اصلی من به فاکس پرو لینک شده بنا براین ایجاد کلید اصلی یا ارتباط به جداول چندان میسر نمیباشد همان طور که در فایل ضمیمه نمایش داده شده

مهدی قربانی
سه شنبه 07 اردیبهشت 1389, 18:32 عصر
سلام
من در نمونه شما تغييراتي ايجاد كردم از جمله جداول به تناسب باهم مرتبط شدن براي گزارش هم از يك كوئري استفاده شده ، كلاً بهتره تغييرات رو ببينيد و نتيجه بررسي و تناسب اون با خواسته خودتون رو اعلام كنيد .

mahsa.admin
چهارشنبه 08 اردیبهشت 1389, 09:00 صبح
با عرض پوزش خدمت اقای قربانی
جناب قربانی توضیح کاملی همراه با توضحات ارائه میکنم برنامه موجود برنامه یک بیمارستان خصوصی 300 تخته خوابی است برنامه نصبتا پیشرفته که قبلا با فاکس پرو نوشته شده و در در دوسال جدید انرا به اکسس تغییر دادم به ناچار بعضی از اطلاعات قبلی را که با دیتای فاکس پرو هست باید به این شکل گزارش گیری شود
اما در این برنامه گزارشات بسیار متنوع وبعضا پیشرفته ای است من عکس از دومدل گزارش ارائه کردم گزارش یک که شبیه گزارش شما هست بدون مشکلی حاصل میشود یعنی داده ها هر کدام یک ستون اختصاصی در جداول دیتا دارند و به همان شکل هم میایند یعنی بیمار فقط خدماتی که دارد در گزارش میاید اما گزارش دوم که مخصوص بیمه ها است وحتما ه مباید در همین فرمت باشد کلیه خدمات مطابق شکل 2 نوشته شده و بیمار فقط خدماتی که دارد قیمت میخورد وبقیه را که ندارد ندارد صفر میخورد البته در برنامه جدید که تمام با کسس است که خودم نوشتم مشکلی نیست مشکل به همین روشی که شما ارائه دادید حل شده ولی در برنامه قبل که لینک فاکس پرو هست نمیتوانم دلیل ان هم به خاطر نوع جدواولی که لینک شده وعدم اجازه ارتباط چندان با هم تقریبا شبیه فایل ضمیمه قبلی با همان محدودیت ها
به نظر میرسد البته از نظر بنده که شاگرد امثال شما هستم ایجاد یک دیتا شیت همانند ضمیمه قبلی و امدن تمام خدمات یک بیمار در ان است وبعد حالا نمیدونم به هر شکلی از ان قیمت هر خدمات در عکس شمار 2 در جلوی نام خودش بخورد( اوردن خدمات یکجا مشکلی نیست ولی انتقال ان به جلوی اسمش که به شکل نامرتب در گزارش چیده شده سخت است)
امیدوارم منظورم را توانسته باشم انتقال داده باشم
عکس شماره 3 نمونه تکمیل شده کار هست که من در برنامه جدید درست کردم ولی در برنامه لینک شده همچنان به دلیل وجود جداول غیر قابل تغییر به شکل دلخواه مشکل برجاست

mahsa.admin
چهارشنبه 08 اردیبهشت 1389, 15:39 عصر
نمونه قبلی را ضمیمه کردم اگر سه تکس با کس a .b .c همیشه پر باشند و داد هایشان را از ساب فرم بگیرند مشک حل میشود لطفا به فایل ضمیمه نگاهی بیاندازید

mahsa.admin
پنج شنبه 09 اردیبهشت 1389, 08:37 صبح
از مدیران محترم کسی نیست راهنمایی کند واقعا به حل این مشکل نیاز دارم

مهدی قربانی
پنج شنبه 09 اردیبهشت 1389, 10:38 صبح
سلام
من نهايتاً نتونستم منطق اين روش رو درك كنم اما با توجه به فرمايشات شما در پست آخر ، نمونه رو براتون ميذارم ببينيد همين چيزيه كه مي خواين .

mahsa.admin
پنج شنبه 09 اردیبهشت 1389, 11:46 صبح
با عرض شرمندگی جناب قربانی نتو نستم منظورمو بیان کنم یک عکس ضمیمه کردم لطفا نگاه کنید ( ماکه رومون نمیشه دیگه چیزی بپرسیم ببخشید )

mahsa.admin
شنبه 11 اردیبهشت 1389, 08:10 صبح
از دوستان اگر کسی هست بدادم برسه بدجوری به مشکل خوردم خواهش میکنم

مهدی قربانی
شنبه 11 اردیبهشت 1389, 12:54 عصر
سلام
اين نمونه رو چك كنيد .