ورود

View Full Version : انتقال از بانک CardDB1 جدول table1 به بانک CardDB2 جدول table1



ali_abbasi22145
شنبه 20 اسفند 1384, 09:55 صبح
سلام

دوستان من چطوری میتونم توی برنامه ای که به واسطه ADO به بانک SQL Server 2000 متصل شده ام رکوردها رو از Tableی به Table دیگر منتقل کنم ؟

با استفاده از Query چگونه میتوان این کار را انجام داد .
لیست فیلدها به قرار زیر است :

fname,lname,condition

اگر condition کارمند به retired یا بازنشسته تغییر پیدا کرد رکورد از بانک CardDB1 جدول table1 به بانک CardDB2 جدول table1 انتقال یابد و رکورد از از بانک CardDB1 جدول table1 پاک شود.

در ضمن دو بانک CardDB1 , CardDB2 از لحاظ جداول و رکوردها دقیقا مثل هم هستند ولی در ابتدا بانک CardDB2 خالی است.
و برنامه من به راحتی به دو بانک وصل می شود این قسمت هیچ مشکلی نیست.

Inspiration
شنبه 20 اسفند 1384, 10:31 صبح
BEGIN TRANSACTION
INSERT INTO DB2..Tbl2(fname,lname,condition)
SELECT fname,lname,condition
FROM DB1..Tb1
WHERE condition =0


DELETE FROM DB1..Tb1
WHERE condition =0
IF @@ERROR <> 0
ROLLBACK TRAN
Else
COMMIT TRAN

ali_abbasi22145
شنبه 31 مرداد 1388, 12:31 عصر
سلام
دستور زير را نوشتم ولي خطاي زير را مي دهد:

INSERT INTO CardDB.CardTable(first_name,last_name,employee_num ber)
SELECT first_name,last_name,employee_number
FROM CardDB2.CardTable
WHERE employee_number > 105

خطا:
Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'CardDB.CardTable'.
Server: Msg 208, Level 16, State 1, Line 1
Invalid object name 'CardDB2.CardTable'.

محمد سلیم آبادی
شنبه 31 مرداد 1388, 13:41 عصر
USE db1
SELECT *
INTO #temp
FROM t1
GO
USE db2
INSERT INTO t1
SELECT *
FROM #temp
GO
DROP TABLE #temp

ali_abbasi22145
یک شنبه 01 شهریور 1388, 21:27 عصر
USE db1
SELECT *
INTO #temp
FROM t1
GO
USE db2
INSERT INTO t1
SELECT *
FROM #temp
GO
DROP TABLE #temp


سلام
تست كردم ولي دستورت كار كپي كردن اطلاعات را انجام نمي دهد!

محمد سلیم آبادی
یک شنبه 01 شهریور 1388, 23:19 عصر
شما می خواهید در بانک اول و در جدول 1 بعد از ویرایش فیلد condition در صورتی که به تغییر retired کرد سطر مذکور از table1 از Carddb1 به جدول table1 از بانک Carddb2 انتقال بکند سپس از جدول بانک یک حذف شود؟
اول باید یک trigger از نوع After Update ایجاد کنید و در بدنه آن کدهایی بنویسید که در صورتی که مقدار فیلد به مقدار مورد نظر تغییر کرد سپس این سطر در بانک دوم درج شده و از بانک اول حذف شود.
فکر کنم در یک تاپیک دیگه به اندازه کافی توضیح داده باشم.
http://www.barnamenevis.org/forum/showthread.php?t=174334

ali_abbasi22145
سه شنبه 03 شهریور 1388, 18:55 عصر
سلام
از تيگر نمي خواهم استفاده كنم.
اصلا مسله جوري ديگر مطرح مي كنم كه اين راه حل داشته باشد مشكلم هم حل مي شود:

من خواهم در بانک اول كه حاوي جدول اول مي باشد و 30 ركورد دارد 1و2و...و30 و بانک دوم كه حاوي جدول اول مي باشد و 50 ركورد دارد 1و2و3و...و50
حال ركودهاي بانک دوم كه حاوي جدول اول است فقط ركوردهاي 31تا50 به ته بانك بانک اول كه حاوي جدول اول اضافه شود؟

محمد سلیم آبادی
سه شنبه 03 شهریور 1388, 21:14 عصر
به این روش باید عمل شود:
اول تمام سطر های جدول بانک اول را از تمام سطرهای جدول بانک دوم تفریق کرده سپس سطر های باقیمانده را در جدول بانک اول درج کنیم.



INSERT INTO t1
SELECT * FROM t2
EXCEPT
SELECT * FROM t1


برای اینکه از دو بانک مختلف می خواهید این کار را انجام دهید باید از temporary table کمک بگیرید.

راستی نگفتید از چه نسخه SQL استفاده می کنید اگر از 2000 استفاده می کنید فکر نکنم EXCEPT در آن نسخه وجود داشته باشد به جای آن می توانید از عملگر های NOT EXISTS یا NOT IN یا LEFT JOIN استفاده کنید.

برای اطلاعات بیشتر لینک زیر را ببنید:

http://www.barnamenevis.org/forum/showthread.php?t=175253

ali_abbasi22145
چهارشنبه 04 شهریور 1388, 15:28 عصر
سلام
از 2000 استفاده می كنم آيا EXCEPT دارد ؟
برنامه ام را در 2005 هم كار مي كند 2005 آيا EXCEPT دارد ؟

محمد سلیم آبادی
چهارشنبه 04 شهریور 1388, 15:48 عصر
فکر نکنم 2000 شامل except باشد ولی راه های سنتی مختلفی برای پیاده سازی except وجود دارد اگر علاقه دارید می توانید مقاله ضمیمه شده لینک زیر را مطالعه کنید.(پست شماره 3)
http://www.barnamenevis.org/forum/showthread.php?t=171687

نسخه 2005 این عملگر را شامل می شود.

ali_abbasi22145
چهارشنبه 04 شهریور 1388, 20:55 عصر
2005 پشتيباني نمي كند؟

محمد سلیم آبادی
چهارشنبه 04 شهریور 1388, 21:06 عصر
2005 پشتیبانی نمی کند؟
منظورتان except است؟
خب، من که گفتم پشتیبانی می کند! شامل شدن یعنی دارا بودن یعنی اینکه در آنجا پیاده سازی شده است یعنی در آنجا کار می کند یا در آنجا موجود است.
برای فهمیدن این موضوع کافیه این کلمه را در یک query تایپ کنید اگر به رنگ آبی (پیش فرض) در آمد یعنی اینکه در آنجا کار می کند.
اصلا من خودم با 2005 دارم کار می کنم.