ورود

View Full Version : ریختن یک selcet داخل clipbord ویندوز؟



karimi.ali2005
دوشنبه 26 تیر 1391, 11:37 صبح
آیا کد sql وجود دارد که بتوان یک select که مجموعه ای از رکوردها و فیلد ها هست کپی کرد(داخل clipbord ریخت) و بالعکس آن یعنی ما مجموعه ای از رکوردها را از یکجا کپی کرده ایم و می خواهیم داخل جدول بریزیم

حمیدرضاصادقیان
دوشنبه 26 تیر 1391, 13:53 عصر
سلام.
شما میتوانید برای این منظور از جداول Temp استفاده کنید که در واقع همون Clipboard محسوب می شوند. نیازی به ساخت جدول نیست و با استفاده از دستو رSelect Into میتوانید اینکارو بکنید.
هر موقع که سیستم Restart بشه یا SQL Server رو Stop کنید این Cache از بین خواهد رفت.

karimi.ali2005
سه شنبه 27 تیر 1391, 08:48 صبح
شاید منظورم را درست نرسوندم من میخوام داخل clipboard بریزم که بعد در برنامه های دیگر مثل excel استفاده کنم

حمیدرضاصادقیان
سه شنبه 27 تیر 1391, 09:19 صبح
خوب شما میتونید مستقیم داده هارو به Excel یا Access یا Text منتقل کنید یا از اونها بخونید.
به این شکل که تو clipboard کپی بشه راهی نیست مگر اینکه شما درخواستتون رو بفرمائید تا راه حل اون ارائه بشه.

karimi.ali2005
سه شنبه 27 تیر 1391, 11:25 صبح
مثلا ما مرحله رفت را انجام دادیم یعنی داده های مورد نظر را که با یک select بدست آورده بودیم داخل excel ریختیم حال دا خل excel تغییراتی داده ایم و می خواهیم جدول مورد نظر را updtae کنیم یک روش این است که یکی یکی زکوردهای excel را بخونیم و بعد یکی یکی رکوردهای جدول را update کنیم زمانی که تعداد رکوردها خیلی زیاد شد این روش زمان گیر هست آیا روشی وجود دارد که این کار را انجام دهیم ؟

حمیدرضاصادقیان
سه شنبه 27 تیر 1391, 12:46 عصر
با استفاده از openrowset میتونید.
اینجا (http://barnamenevis.org/showthread.php?304692-%D8%A7%D9%8A%D9%85%D9%BE%D9%88%D8%B1%D8%AA-%D8%A7%D8%B2-%D8%A7%D9%83%D8%B3%D9%84-%D8%A8%D9%87-%D8%A7%D8%B3%D9%83%D9%8A%D9%88%D8%A7%D9%84&highlight=openrowset) یک مثال هست که فکر کنم کمکتون کنه.

karimi.ali2005
چهارشنبه 28 تیر 1391, 10:41 صبح
خیلی ممنونم
اما یک مشکل دیگه وجود داره من یک جدول دارم که تعداد زیادی رکورد داره که با یک Select تعداد خاصی را داخل excel می ریزم بعد که کاربر تغییراتی در excel داد باید دوباره همون رکوردها را که select کرده بودم داخل جدول بریزیم من یک روش نوشتم که یکی یکی رکوردها را تغییر میده آیا روشی هست که چند رکوردی را که داخل excel ریختم به صورت یکجا در table آن update کنم
و آیااینکه برای msp نیز می توان اینکار را کرد مثل excel

حمیدرضاصادقیان
چهارشنبه 28 تیر 1391, 11:04 صبح
با استفاده از همون دستور که عرض کردم میتونید چند رکورد رو باهم Update کنید و مشکلی در این زمینه نیست.
منظورتون رو از MSP متوجه نشدم!!

karimi.ali2005
چهارشنبه 28 تیر 1391, 11:21 صبح
این کد

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=E:\Other\Book1.xlsx', 'SELECT * FROM [Sheet1$]')


کل excel را برمیگردونه اما من از قبل یک سری رکورد داخل جدول دارم که باید تغییر داده شود و یک سری رکورد هم دارم که دا خل excel نریختم و اون رکوردها نباید تغییر کنند میخواستم ببینم کدی وجود دارد که جدول را با توجه به select که از excel گرفتم تمام رکوردهایی را تغییر دهد که از excel می ریزم
منظورم از msp برنامه Microsoft Office Project که در صنعت استفاده میشود
و آیا اینکه این عملی که انجام دادیم و excel را داخل جدول ریختم آیا روشی هست که جدول یا select داخل excel بریزیم

sarbandi
سه شنبه 03 مرداد 1391, 11:57 صبح
این کد

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=E:\Other\Book1.xlsx', 'SELECT * FROM [Sheet1$]')


کل excel را برمیگردونه اما من از قبل یک سری رکورد داخل جدول دارم که باید تغییر داده شود و یک سری رکورد هم دارم که دا خل excel نریختم و اون رکوردها نباید تغییر کنند میخواستم ببینم کدی وجود دارد که جدول را با توجه به select که از excel گرفتم تمام رکوردهایی را تغییر دهد که از excel می ریزم
منظورم از msp برنامه Microsoft Office Project که در صنعت استفاده میشود
و آیا اینکه این عملی که انجام دادیم و excel را داخل جدول ریختم آیا روشی هست که جدول یا select داخل excel بریزیم


سوال سوم مشکل من هم هست یعنی ریختن یک جدول دا خل excel با استفاده از کد sql

ASKaffash
سه شنبه 03 مرداد 1391, 13:24 عصر
سلام
از LinkedServer استفاده کنید تا راحت با بانک تعامل داشته باشید :
EXEC sp_addlinkedserver 'MyLink','Jet 4.0','Microsoft.Jet.OLEDB.4.0','D:\MyFolder\MyFile .xls',NULL,'Excel 5.0'
نحوه استفاده :
Select * From OpenQuery(MyLink,'Select * From [Sheet1$]')
Update OpenQuery(MyLink,'Select * From [Sheet1$]') Set B='Not' Where A=400

karimi.ali2005
یک شنبه 08 مرداد 1391, 11:55 صبح
سلام
از LinkedServer استفاده کنید تا راحت با بانک تعامل داشته باشید :
EXEC sp_addlinkedserver 'MyLink','Jet 4.0','Microsoft.Jet.OLEDB.4.0','D:\MyFolder\MyFile .xls',NULL,'Excel 5.0'
نحوه استفاده :
Select * From OpenQuery(MyLink,'Select * From [Sheet1$]')
Update OpenQuery(MyLink,'Select * From [Sheet1$]') Set B='Not' Where A=400


ممنون
میشه یک کم بیشتر توضیح دهید یا یک فایل excel هم همره مثال بزارید چون من هر چی تست کردم نحوه استفاده خطا میده

ASKaffash
شنبه 14 مرداد 1391, 06:57 صبح
سلام
این مثال که قرار دادم واقعی است فقط شما بجای 'D:\MyFolder\MyFile .xls' مسیر فایل اکسل خودتان را قرار دهید و بجای MyLink نام مورد علاقه خود را قرار دهید با اجرای این دستور برای شما یک LinkedServer ساخته می شود و هر عملیاتی مثل Insert , Select و ... را مشابه مثال بکار برید البته با استفاده از OpenQuery اگر خطائی دریافت کرده اید لطفا پیام خطا را قرار دهید تا راهنمائی شوید

karimi.ali2005
یک شنبه 15 مرداد 1391, 08:06 صبح
خطای زیر را میده

Invalid column name 'A'.

ASKaffash
سه شنبه 17 مرداد 1391, 12:57 عصر
سلام
A برای مثال من بود برای مثال شما ممکن است ستون A پر نباشد به پیام دقت کنید

karimi.ali2005
پنج شنبه 19 مرداد 1391, 12:12 عصر
ممنون
اگه میشه بگید مشکل این فایل excel چیه

ASKaffash
یک شنبه 22 مرداد 1391, 11:53 صبح
سلام
هیچ مشکلی ندارد من به راحتی تست کردم :