PDA

View Full Version : بروز رسانی دیتابیس برنامه توسط یک فایل بروز رسان



Site Admin
یک شنبه 13 آذر 1390, 22:15 عصر
با سلام من میخوام در برنامه ام یک فایل جهت بروز رسانی بانک برنامه بسازم که کاربر با اجرا اون تمام فیلدها و جدولهای دیتابیس که در ورژن جدید تغییر کرده در دیتابیس قدیمی ایجاد و ویرایش بشه
در ضمن دیتابیس برنامه من sql server است

سعید صابری
یک شنبه 13 آذر 1390, 23:29 عصر
خب. مشکل کجاست؟

BORHAN TEC
دوشنبه 14 آذر 1390, 09:34 صبح
باید در مورد Metadata تحقیق کنید.
البته در این رابطه یک فیلم با عنوان dbExpress Architecture & Metadata در CodeRage III وجود دارد که توسط آقای Robert Love توضیح داده شده است که پیشنهاد می کنم که آنرا حتماً بررسی کنید.

vcldeveloper
دوشنبه 14 آذر 1390, 12:16 عصر
با سلام من میخوام در برنامه ام یک فایل جهت بروز رسانی بانک برنامه بسازم که کاربر با اجرا اون تمام فیلدها و جدولهای دیتابیس که در ورژن جدید تغییر کرده در دیتابیس قدیمی ایجاد و ویرایش بشه
به قول اون دوستمون، مشکل کجا ست؟!

اگر تغییر در ساختار جداول هست، می تونید به راحتی یک اسکریپت SQL با استفاده از دستوراتی مثل ALTER و غیره بنویسید، و این رو به برنامه تون بدید تا روی بانک اجرا کنه، و باعث اعمال تغییرات در بانک اطلاعاتی بشه.

Site Admin
دوشنبه 14 آذر 1390, 13:41 عصر
با تشکر از دوستان که همکاری کردند
مشکل اینجاست
که اول اینکه هر وقت من تغییری در دیتابیس دادم جایی ثبت نکردم مثلا یک شرکت با برنامه من با دیتابیس 2 سال پیش داره کار میکنه یکی با دیتابیس سه ماه پیش و ... در هر حال نمیدونم در هر دیتابیسی چه جدول و چه فیلدهایی کم و زیاده
دوم اینکه استفاده از دستوراتی مثل alter من باید دقیقا واسه کل جداول و فیلدها بنویسم در ضمن دیتابیس من خیلی بزرگه حدوده 180 جدول با فیلدهای زیاد داره و میخوام با استفاده از یک ویزارد کوئری ایجاد کنم که این عمل رو انجام بده
سوم اینکه حالا فرض بر این میگیریم که من این کوئری رو درست کردم چطور execute کنم
در adocommand یک کوئری به این سنگینی رو چطور اجرا کنم
چهارم اینکه من یک فایل exe میخوام بزارم روی سایت کاربران دانلود کنن و با اجرای فایل و زدن دکمه بروز رسانی برنامه کل دیتابیس بروز رسانی شود
پنجم اینکه فقط اضافه نمودن جدول و فیلد جدید نیست بلکه من در بعضی جداول فیلد تایپ بعضی از فیلدها را ویرایش کردم و بعضی از فیلدها نیز حذف شده

Site Admin
سه شنبه 15 آذر 1390, 22:14 عصر
من تو سایت چنین موضوعی رو پیدا نکردم ممنون میشم کسی جواب من رو بده

vcldeveloper
سه شنبه 15 آذر 1390, 23:48 عصر
در adocommand یک کوئری به این سنگینی رو چطور اجرا کنم
سنگینی یا سبکی اش چه ربطی به AdoCommand داره؟! AdoCommand دستور مربوطه رو به سرور ارسال میکنه، و سرور هست که باید اون رو اجرا کنه.


پنجم اینکه فقط اضافه نمودن جدول و فیلد جدید نیست بلکه من در بعضی جداول فیلد تایپ بعضی از فیلدها را ویرایش کردم و بعضی از فیلدها نیز حذف شده
ALTER برای تغییر نوع داده فیلدها هم قابل استفاده هست، البته تغییر نوع داده فیلد باید به شکلی باشه که نوع داده جدید با نوع داده قبلی سازگار باشه. البته اگر در برنامه دلفی خودتان فیلدهای جداول را به صورت استاتیک تعریف کرده باشید، مجبورید سورس برنامه را هم تغییر بدید، و برنامه جدیدی به کاربر تحویل بدید که نوع این فیلدها در سورسش تغییر کرده باشه. اگر فیلدها به صورت دینامیک از بانک دریافت میشند، نیازی به تغییر سورس برنامه نیست.

Site Admin
چهارشنبه 16 آذر 1390, 22:10 عصر
با تشکر از آقای کشاورز من سورس برنامه رو تغییر دادم و برنامه با بانک جدید مشکلی نداره مهمترین مشکل من اینه که دیتابیس من خیلی بزرگه حدوده 180 جدول و فیلدهای زیادی داره و میخوام با استفاده از یک ویزارد یک کوئری کوئری رو ایجاد کنم یه چیزی که کل دیتابیس و فیلدها رو چک کنه دستی بلد خط خط کوئری بنویسم کلی میخوام وقت ندارم

jst
چهارشنبه 16 آذر 1390, 22:38 عصر
من شبیه اینکار رو انجام دادم به این ترتیب که برنامه نوشتم که اول از طریق کد نویسی در دلفی تغییرات دیتابیس قبلی رو با جدید بررسی کنه , بعد اسکریپت تغییرات رو بسازه و بعد هم اجرا کنه اگه واضح نیست تا رح بیشتری بدم

Site Admin
چهارشنبه 16 آذر 1390, 22:53 عصر
با تشکر از دوستان خودم راهشو پیدا کردم که نیاز به هیچ دردسرسی هم نداره با genrate scripts خود sql server خیلی خوب کوئری را آماده میسازه شما کافی تو برنامه execute کنی
البته هنوز عملیاتیش نکردم اگر تو هین اجرا باگی دیدم خبر میدم