PDA

View Full Version : تبدیل داده ها از ACCESSبه SQLSERVER2000



jannati
یک شنبه 29 شهریور 1383, 14:16 عصر
دوستان سلام
من دوتا جدول یکی در اکسس (مثلا A)و یکی دیگه در sqlserver2000(مثلا B)دارم.یک ستون از جدول Aدارای اطلاعاتی است که دقیقا در جدول Bیکی از ستونها باید داشته باشد.یعنی این دوتا جدول از لحاظ تعداد ونوع فیلدها باهم فرق دارند.فقط فیلد نام کتاب در هر دو مشترک است.با توجه به اینکه در جدول Aبه تعداد 3800رکورد وارد شده و من میخوام از اونها استفاده کنم میخواستم بدونم چه راه حلی وجود داره که اطلاعات نام کتاب را از جدول Aدر اکسس به جدول Bدر اسکیوال سرور انتقال بدم تا دوباره 3800تا رکورد تایپ نشه. :roll: :?:

hmm
یک شنبه 29 شهریور 1383, 15:40 عصر
شما میتوانید کل جدول اکسس رو در sql-server وارد کنید(import) و بعد با query هر مقدار فیلد رو که میخواهید اضافه کنید

jannati
یک شنبه 29 شهریور 1383, 15:55 عصر
اگر ممکنه یه کم بیشتر توضیح بدید.با چه کیوری در اسکیول میتونم اینکار رو انجام بدم؟

AminSobati
یک شنبه 29 شهریور 1383, 16:02 عصر
دوست عزیزم،
اگر این دوتا جدول در یک دیتابیس در SQL Server بودن چیکار میکردین؟
یقین دارم که میگین Update انجام میدادم! پس حالا یک Linked Server به بانک اکسس بسازین و مثل دوتا جدول که در SQL Server هستن Update انجام بدین.

موفق باشید،
امین ثباتی MCSD

jannati
دوشنبه 30 شهریور 1383, 08:58 صبح
ممنون از راهنماییتون
اما همون دستور sqlرا میخواستم بدونم شما چطور مینویسید.چون 3800رکورد هر کدام مقادیر مختلفی دارد. :oops:

AminSobati
دوشنبه 30 شهریور 1383, 12:20 عصر
یک سوال:
آیا این دو جدول توسط یک فیلد کلیدی با هم قابل ارتباط (منطقی) هستن؟ یعنی به چه صورت باید تشخیص داد که نام کتاب در جدول A، مال کدام رکورد در جدول B هستش؟

jannati
دوشنبه 30 شهریور 1383, 13:48 عصر
نه دوست عزیز موضوع اینجاست که اصلا بهم مربوط نیستند و حتی فیلدها باهم فرق میکنه.در یکی T_ntitrو در جدول دیگه عنوان فیلد S_nameاست.

AminSobati
دوشنبه 30 شهریور 1383, 14:13 عصر
البته تفاوت اسم فیلدها مهم نیست. ارتباط منطقی لازمه فقط. مثلا SQL Server از کجا بدونه که وقتی نام کتاب رو به جدول دیگه میبره، باید برای کدوم رکورد قرار بده؟
اگر منطقی وجود نداشته باشه، این کار رو به عهده SQL Server(کلا کامپیوتر) نمیشه گذاشت. یعنی این 2 جدول هیچ فیلد مشترکی ندارند؟

jannati
دوشنبه 30 شهریور 1383, 16:30 عصر
نه متاسفانه .مشکل منم همینجاست.جدول قبلی یکی دوسال پیش تهیه شده و من میخوام کار تایپیستها رو کم کنم.در وقت هم صرفه جویی میشه. :|
حالا نمیتونم برای دوتاشون یک فیلد مشترک بسازم.بعد از روی اون عمل کنم؟ :(

بابک زواری
دوشنبه 30 شهریور 1383, 17:36 عصر
خوب خانم جنتی اگر این دو جدول فیلد مشترکی ندارن پس یعنی هیچ ارتباطی منطقی ندارن
حال اینها چه در اکسس و چه در sql چطور میتونن با هم ارتباط داشته باشن ؟ باید یک فیلد
مشترک داشته باشن یا نه ؟
حالا شاید اسم فیلدها یکی نباشه ولی محتوی باید یکی باشه

jannati
سه شنبه 31 شهریور 1383, 09:44 صبح
کد نویس جان مسلما محتوی دوتا فیلد یکی هست که من میخوام کپی کنم دیگه :wink:
فقط نمیدونم از چه اسکیوالی برای کپی کردن محتویاتی فیلددر اکسس به فیلدی در sql serverاستفاده کنم. :roll:

AminSobati
سه شنبه 31 شهریور 1383, 11:01 صبح
برای برقراری ارتباط از داخل SQL Server با فایل اکسس، از OPENDATASOURCE استفاده کنین. اول دستور زیر رو تست کنین:


SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source="e:\db1.mdb";User ID=Admin;Password=;')...MyTable

با فرض بر اینکه نام جدول شما در اکسس MyTable هستش. ضمنا دستور فوق رو در Query Analyzer تست کنین.
حالا یک جدول در SQL Server داریم که اطلاعات فیلد اولش(C1) با فیلدی از MyTable به نام Col1 مشترکه، و قصد داریم فیلد C2 در جدول اولی رو با مقادیری از Col2 که در MyTable هست Update کنیم. یعنی دقیقا کاری که شما نیاز دارید.
اگر جدول موجود در SQL Server رو بنامیم SQLTable، پس دستور Update ما به این شکل خواهد بود:


UPDATE SQLTable SET C2=MyTable.Col2 FROM
OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="e:\db1.mdb";User ID=Admin;Password=;')...MyTable MyTable
WHERE SQLTable.C1=MyTable.Col1

موفق باشید