PDA

View Full Version : سوال: روشی بهتر برای ذخیره اطلاعات پایه



حسین خانی
شنبه 01 اسفند 1388, 22:51 عصر
با سلام :لبخندساده:
من تو برنامه ام برای اینکه بتونم اطلاعات پایه برنامه رو ذخیره کنم دو راه رو امتحان کردم :


ذخیره رکوردهای هر فیلد در فایل متنی مربوطه و جدا
ذخیره در جدول

که در هر کدام با مشکلی مواجه شدم !

با زیاد شدن تعداد فیلدهای پایه فایل های متنی به تعداد فیلدها مورد نیاز زیاد می شود و اصلا جالب نیست .
و در مورد ذخیره در جدول هم چون فیلدها دارای رکوردهای برابری نیستند پس :


برای فراخوانی در فرم مربوطه مثلا استفاده در ComboBox باید Query نوشت تا فقط رکوردهای غیر Null را برگرداند و با این کار فرم موقع بالا آمدن با کمی سختی باز می شود !
اگر کاربر بخواهد رکوردی از فیلدی در جدول پایه را حذف کند ناخواسته رکوردهای هم سطر نیز حذف می شوند !
و اگر هم بخواهم برای هر فیلدی جدولی مجزا داشته باشم تعداد جداولم زیاد می شود و این یکی دیگر قابل تحمل نیست !!!

ممنون می شوم از دوستان با تجربه روش مناسبی را راهنمایی کنند و یا راه حل مناسبی نسبت به دو راه حل امتحانی من عنوان کنند !

با تشکر ...

حمیدرضاصادقیان
شنبه 01 اسفند 1388, 23:48 عصر
سلام.معمولا برای جداول پایه( خودم از همین روش استفاده کردم) سه تا فیلد قرار میدهیم. یکی id یکی id group و یکی name . که اولی کد خود اطلاعات پایه هست. دومین کد مربوط به دسته بندی اطلاعات پایه مانند تحصیلات - پایان خدمت - ازدواج - جنیست و ... می باشد که برای هر کدوم خودتون میتونید یک رنج در نظر بگیرید یا نه یک جدول هم برای گروه داشته باشید و به این لینکش بدین.
سومین فیلد هم نام اطلاعات پایه هست.
با این روش در هر قسمت با توجه به نوع گروه اون اطلاعات ، اطلاعات مربوطه رو در combobox لود میکنید.
موفق باشید.

حسین خانی
یک شنبه 02 اسفند 1388, 15:16 عصر
ممنون و سپاس از توجه شما

آقای صادقیان عزیز اگر در فرمی مثلا 10 تا ComboBox داشته باشیم و هر کدام اطلاعات مربوط به یک فیلد را لود کنند اولا بایستی برای هر کدام Query مجزا نوشت و ثانیا موقع باز شدن فرم به سختی و با مکث قابل توجه ای بالا می آید !
اینطور نیست ؟
و اگر اشتباه میکنم لطفا راهنمایی کنید ...

حمیدرضاصادقیان
یک شنبه 02 اسفند 1388, 15:29 عصر
سلام.من شخصا به این مشکل برخورد نکردم. برای حل این میتونید یک تابع کلی بنویسید هنگامی که کاربر روی combobox کلیک کرد و خواست بازش کنه یک مقداری به تابع پاس بده و براساس اون مقدار تابع بفهمه جز کدوم گروه قرار داره و کوئری مربوط به اونو نوشته و یک پارامتر دیگه تابع نام combobox است که در همون تابع تمامی اطلاعات رو داخل اون combo لود کنید.
اینجوری نیازی نیست زمانی که فرم لود میشه تمامی اطلاعات رو لود کنید و فقط زمانی که هر combo باز شد اطلاعاتش از سرور خونده میشه و لود میشه و کانکشن با دیتابیس بسته میشه سرعت برنامه هم بالا خواهد بود.
موفق باشید.

حسین خانی
یک شنبه 02 اسفند 1388, 16:04 عصر
ممنون از شما
راهنمایی شما رو در اولین فرصت امتحان می کنم !


ذخیره رکوردهای هر فیلد در فایل متنی مربوطه و جدا
با زیاد شدن تعداد فیلدهای پایه فایل های متنی به تعداد فیلدها مورد نیاز زیاد می شود و اصلا جالب نیست . آیا راه حلی هست که بشه تمام مقادیر فیلدها را به جای درج در فایل متنی جدا برای هر فیلد ، مقادیر همه فیلدها را در یک فایل متنی ریخت ؟
چون فراخوانی از فایل متنی سرعت بالایی دارد ...
و اصلا استفاده از فایل متنی روش مناسبی است و مشکلی ( امنیت برنامه یا ... ) ایجاد نمی کند ؟

حمیدرضاصادقیان
دوشنبه 03 اسفند 1388, 08:01 صبح
سلام.فکر نمیکنم راه مناسبی باشه. به دلیل اینکه اولا وقتی شما از برنامه backup بگیرید این فایل نیست باید جداگانه اونو جایی کپی کنید. با فرمت کردن ممکنه از دست بره (اگر backup ازش نداشته باشید) سرعت خوندن و نوشتن در تعداد بالا کم میشه. نمیتونید روش ایندکس گذاری درستی انجام بدید. کاربر میتونه به راحتی این فایل رو باز کنه و محتویاتشو تغییر بده .
موفق باشید