View Full Version : سوال: ادغام دو جدول در يك ديتابيس (كپي كردن از جدول 1 يه جدول 2)
behzad_lover
جمعه 25 شهریور 1390, 13:58 عصر
با سلام، همونطور كه از عنوان تاپيك مشخصه، من ميخوام اطلاعات جدول 1 ديتابيسم رو تماما انتقال بدم به جدول 2 و بعدش جدول 1 رو خالي كنم!!! چطوري ميتونم اين كار رو بكنم!!!
راستي من يكم اطلاعاتم در مورد انبرداري و فاكتور نويسي محدود هست! كسي ميتونه بهم كمك كنه و يا سورس انبارداري در اختيارم بزاره؟؟؟
M.T.P
جمعه 25 شهریور 1390, 23:11 عصر
اگه جدول 2 شما ساختارش دقیقا مثل جدول 1 باشه که کل جدول 1 رو تو یه رکوردست میریزی و با AddNew و یک حلقه تو جدول 2 اضافه میکنی.
behzad_lover
شنبه 26 شهریور 1390, 01:07 صبح
خيلي ممنون كه جواب دادين!!!
راستش من ميخوام مثلا وقتي طرف كالاهارو داره فاكتور ميزنه، با كليك زدن ثبت كالا، كالاها به ترتيب اول به يه تيبل(جدول خريد موقت) ريخته بشن و بعد اينكه روي دكمه ثبت فاكتور كليك كردي!!! تمام اطلاعات جدول خريد موقت به جدول ليست اجناس انتقال داده بشن و بعدش اطلاعات جدول خريد موقت پاك بشه!!! و هدفم هم از اين كار اينه كه اگه احيانا در طول ثبت فاكتور مشكلي پيش اومد يا مثلا برق رفت و يا ... فاكتور نيمه تمام و ناقص ثبت نشه!!!
(اين پروژه زياد تجاري نيست و ميخوام خودم رو در نوشتن يه برنامه كامل و بي نقص حسابداري ارزيابي كنم و همچنين مشكلات و اشتباهات خودم رو برطرف كنم. پس خيلي خوشحال ميشم كمكم كنيد...)
سپاس فراوان!!!
Restlesa
شنبه 26 شهریور 1390, 10:46 صبح
شاید یکی دیگه از جنبه های برنامه نویسی پایگاه داده توانایی کپی کردن اطلاعات از پایگاه داده ای به پایگاه داده دیگر باشه که بیشترین کاربرد این عمل در پشتیبان گیری یا انتقال اطلاعات از جدول فرعی به جدول اصلی ( مادر ) مشخص می شود .
» برای انجام این انتقال دو نوع روش وجود داره. روش اول اینه که ما اطلاعات را به صورت رکورد به رکورد از جدول فرعی بخونیم و به صورت رکورد به رکورد در جدول اصلی قرار بدیم و مراقب باشیم که اطلاعات تکراری در این عملیات کپی نشن، که انجام کد نویسی برای این روش به نظر من کاری مشکل و دشوار هست. روش دوم استفاده از دستورات SQLه که برای انجام چنین عملیاتی ایجاد شده اند و امکان انجام همه این کارها را در یک خط کد نویسی فراهم می کنن. در سورس زیر از روش دوم استفاده شده است.
» برای مثال شما دو پایگاه داده با نام های mdb1 ( پایگاه داده مادر ) و mdb2 ( پایگاه داده فرعی ) که دارای ساختار یکسانی هستند را در نظر بگیرید . من قصد دارم اطلاعات موجود در پایگاه داده فرعی را بر روی اطلاعات موجود در پایگاه داده مادر بیفزایم . پس در این حالت اطلاعاتی باید از پایگاه داده فرعی یا رابط به پایگاه داده مادر کپی گردند که نظیری در پایگاه داده مادر ندارند تا به این صورت از ذخیره سازی داده های تکراری در پایگاه داده مادر جلوگیری شود .
_ به دلیل این که انجام این کار در یک خط کد نویسی صورت می گیره ما دیگه توانایی مراقبت از ورود داده های تکراری را نداریم . پس بهتره که انجام این کار را هم بر عهده خود دستور قرار بدیم . به این صورت که اگر ما در پایگاه داده مادر فیلدی را به عنوان کلید قرار بدیم در موقع انتقال داده ها این کلید به طور خودکار اجازه ورود داده های تکراری را نخواهد داد و فقط داده های کپی خواهند شد که در فیلد کلید نظیری ندارند . برای مثال شما دو پایگاه داده را به صورت زیر تنظیم کنید:
» پایگاه داده مادر ( mdb1 ) :
--> یک جدول با نام Table1 دارای فیلد های زیر :
> ID : از نوع عددی به عنوان کلید
> Name : از نوع متن
> Family : از نوع متن
» پایگاه داده فرعی ( mdb2 ) :
--> یک جدول با نام Table2 دارای فیلد های زیر :
> ID : از نوع عدد
> Name : از نوع متن
> Family : از نوع متن
خب حالا میریم سسره کد نویسیش
ابتدا از پنجره References گزینه Microsoft DAO 3.51 Object Libraryرا تیک بزنید و کد زیر را در دکمه ی Copy قرار دهید :
()Private Sub CmdCopy_Click
Dim DBase AsDatabase
Dim SQL As String
Set DBase = OpenDatabase(App.Path & "\mdb2.mdb", True, False)
SQL = " INSERT INTO Table1 IN '" & App.Path & "\mdb1.mdb' SELECT * FROM Table2
DBase.Execute SQL
" vbInformation , " Copy Completed , " عمل انتقال اطلاعات با موفقیت به پایان رسید" Msgbox
End Sub
در این مثال اطلاعات موجود در جدول پایگاه داده فرعی ( Table2) به جدول موجود در پایگاه داده مادر ( Table1 ) بدون تکرار در فیلد ID کپی می شوند .با استفاده از این دستور حتی می تونیم اطلاعات موجود در یه پایگاه داده نوع دیگه مثل Excel رو هم به پایگاه داده Access کپی کرد که این خود توضیح جداگانه ای داره.
ALIMAHDE54
شنبه 26 شهریور 1390, 11:21 صبح
دوستان اگه سورس دارن بذارن چطوری میشه یکی یکی اطلاعات رو انتقال داد حجم اطلاعات کمه
Restlesa
شنبه 26 شهریور 1390, 14:00 عصر
با استفاده از آموزشي كه در پست شماره ٤ گفتم مي توني اين انتقال رو به راحتي انجام بدي. نمونه كد هم كه برات با توضيح كامل گذاشتم ديگه دنبال چي هستي ؟؟؟؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.