PDA

View Full Version : سوال: مشكل در كپي اطلاعات - نياز به راهنمايي



oghab
سه شنبه 08 بهمن 1387, 19:22 عصر
به نام خدا
سلام
من يك برنامه دارم كه DataBase ش SQL Server 2000 است با بيشتر از 100 تا جدول. اينترفيس اش را هم با دلفي 7 نوشتم.
يكي از اين جدولها (patients) جدول اصليه. كه شامل يه فيلد id است كه idenitity اش yes است و يه فيلد patient_no كه كليد اصلي است و دستي شماره ميگيره و تعداد فيلد شبيه نام و فاميل و غيره است.

تعدادي بقيه جدولها به اين صورت هستند كه يك فيلد id دارند با identity ي yes و يك فيلد patient_no كه كليد خارجي است به كليد اصلي جدول اول و فيلدهاي مورد نياز ديگر. و تعدادي جدول ديگر كه در سطح سوم قرار مي گيرند و يكي از جدولهاي سطح دوم رابطه كليم خارجي دارند. و كليد اصلي آنها id با identity ي yes است.
ساختاري اينچنيني: (البته با تعداد جدولهاي بسيار زيادتر)
http://night-skin.com/up/images/v3cxvxxwqbvq9n6m0ldj.gif

حالا مشكل اينجاست كه سفارش دهنده امكان اينكه برنامه را تحت شبكه استفاده كنه نداره نميتونند همشون به يك database وصل بشند.
و حدود 7 تا كاربر مي خوان بشيند در منزلشون اطلاعات را به صورت همزمان وارد كنند.
اگه هر كدوم به نوبت اطلاعات را وارد ميكردند. ميشد از database بك آپ گرفت و نفر بعدي resotore كنه و بقيه اطلاعات را در ادامه وارد كنه! ولي مشكل اينجاست كه ميخواهند همشون مثلا در روز جمعه بشيند و يك نفر اطلاعات پرونده 1-100 و ديگري 101-200 و ديگري 201-300 و به همين ترتيب وارد كنند.
و بعد اطلاعات را به هم بچسبانند. انگار فايل وُرده!!!!!! :اشتباه:

حالا مشكل اينجاست كه وقتي هر كدوم اطلاعات وارد كنند idenditiy براي هر فيلد به ترتيب اضافه ميشه و مثلا ممكنه هر كدوم اطلاعات متفاوتي را با id شماره 50 وارد كنند. و اگه بخوام از Export و Import براي كپي اطلاعات استفاده كنم. شماره هايي كه براي كليدها در نظر گرفته شده مشابهند. و هنگام import اطلاعات. بعضي از ركوردها Repalce ميشند و تعدادي از اطلاعات از بين ميره. يا اشتباه ميشه.
مثلا ممكنه كاربر اولي براي شماره پرونده 63 يك ct كه ثبت كنه كه شماره 43 گرفته است. و براي همان ct چند ركورد در جدولهاي بعدي ثبت بشه! مثلا در هر 3 جدول ct_chd , ct_cbd , ct_lhd و كاربر دوم براي پرونده شماره 145 يك ct ثبت كند كه شماره 43 بگيرد و تعدادي ركورد در ct_chd ثبت كند. و در ct_cbd , ct_lhd ركوردي ثبت نكند.
هنگامي كه اطلاعات را از database كه كاربر دوم اطلاعات در آن ثبت كرده به DataBase ي كه كاربر اول اطلاعات در آن ثبت كرده Export و Append كنيم.و چون در هر دو databse ركوردي در جدول ct با id شماره 43 داري. اطلاعات ct پرونده 145 جايگزين اطلاعات ct پرونده 63 ميشود. و اطلاعات ct پرونده 63 پاك شده و همچنين اطلاعاتي كه در ct_cbd , ct_lhd براي پرونده 63 ثبت شده به پرونده 145 نسبت داده مي شود. و بدين ترتيب اطلاعات يا از دست مي رود يا اشتباه مي شود.

حالا سوال من اينه:
اگر يك Database داشته باشيم و هر كاربر در كامپيوتر شخصي خود اطلاعات را وارد database كند. چطور مي توان اطلاعات وارد شده توسط تمام كاربران دنبال هم كپي كرد. بطوري كه اطلاعات همه آنها در يك database قرار بگيرد و داده اي از دست نرود و ارتباط بين ركوردهاي جدولها بهم نخورد؟

kiosksoft
چهارشنبه 09 بهمن 1387, 08:03 صبح
دوست عزیز

یه نرم فزاری هست که میتونه مثلا دو دیتابیس رو بگیره و بدون اینکه داده ای از بین بره اونها با هم ادغام کنه , البته من فقط یه بار دیدم که یه نفر برای upgrade دیتابیس حسابداری این کار رو انجام داد . ابتدا هم فکر کردم که خودشون نوشتن , اما بعدا متوجه شدم که ابزار آماده برا ی کار با بانک های اطلاعاتی میباشد, تو بازار ببین میتونی این برنامه پیدا کنی. از اینترنت هم سرچ بزن. شاید کمک تون کنه...

oghab
چهارشنبه 09 بهمن 1387, 17:21 عصر
دوست عزیز

یه نرم فزاری هست که میتونه مثلا دو دیتابیس رو بگیره و بدون اینکه داده ای از بین بره اونها با هم ادغام کنه , البته من فقط یه بار دیدم که یه نفر برای upgrade دیتابیس حسابداری این کار رو انجام داد . ابتدا هم فکر کردم که خودشون نوشتن , اما بعدا متوجه شدم که ابزار آماده برا ی کار با بانک های اطلاعاتی میباشد, تو بازار ببین میتونی این برنامه پیدا کنی. از اینترنت هم سرچ بزن. شاید کمک تون کنه...

سلام
ميشه در مورد برنامه اي كه ميگيد بيشتر توضيح بديد. تا من بدونم چه چيزي سرچ كنم! ممنون ميشم.

بقيه دوستان روشي ديگري به نظرشون نمي رسه كه خودم بتونم اين عمليات ادغام را بدون از دست رفتن بعضي اطلاعات انجام بدم؟

oghab
شنبه 12 بهمن 1387, 09:16 صبح
سلام
يعني هيچ راهي وجود نداره؟ هيچ كس نمي تونه راهنماييم كنه؟

kiosksoft
شنبه 12 بهمن 1387, 10:13 صبح
سلام

در مورد کلمات database , merge , tools سرچ کنید. به نظر من یک تاپیک جدید جدا با این عنوان ها ایجاد کنید.

اینجوری زودتر به نتیجه می رسید.