PDA

View Full Version : سوال: 2سوال:: تبدیل به exel و درخواست یک دستور SQL



scorpion_sincity
جمعه 12 شهریور 1389, 12:32 عصر
با سلام و خسته نباشید خدمت تمام دوستان
من 2سوال داشتم خدمتتون

1. میخوام محتوای یک gridview رو به فایل exel بفرستم، باید چکار کنم؟؟
2. یک دستور تو sql که بر اساس شرط داده شده مقادیر کراری یک جدول را پاک کنه

بعنوان مثال:: 2 نوآموز در کلاس ثبت شده اند، حالا ما به دستور کد کلاس، سال و ترم رو میدیم، 2تا پیدا می کنه، یکیش باید پاک بشود

ممنون

scorpion_sincity
شنبه 13 شهریور 1389, 00:55 صبح
دوستان کسی کد نمی دونه راهنمایی کنه؟؟

scorpion_sincity
شنبه 13 شهریور 1389, 20:05 عصر
خیلی ضروری هست
کسی از دوستان نمی دونه؟؟

بهزادصادقی
شنبه 13 شهریور 1389, 20:22 عصر
دوست عزیز

سوال اولتان را من چیزی در موردش نمی دانم

سوال دوم را می توانم به شما کمک کنم. ولی باید خیلی اطلاعات بیشتری بدهی.

مثلا، اسم جدول شما چیست. اسم ستون هان چی؟ نوع ستون ها چیست؟ و حداقل یک مثال کامل با داده های واقع گرانه بزنیم تا بفهمم دقیقا چه کار می خواهی بکنی.

حدس می زنم علت این که هیچ کس نتوانسته کمکت کنه این نیست که دوستان نمی خواهند، بلکه این که احتمالا صورت مسئله شما در حال حاضر خیلی گنگ می باشد. می دونم که برای شخص من که به این صورت است.

scorpion_sincity
شنبه 13 شهریور 1389, 21:15 عصر
با سلام خدمت شما
ممنون از شما
ولی نوع خاصی مد نظر نیس

فرض کنید که یک نوآموز اسمش دوبار در یک جدول اومده
ولی فقط یکبار باید باشد
یا چیزی شبیه به این

میخوام دستور در جدول جستجو کنه مثلا از کد 11302 تعداد 6تا پیدا می کنه، بیاد و 5تاشو پاک کنه
یعنی موارد تکراری پاک بشه

اومیدوارم منظورمو خوب رسونده باشم
کلا یک دستور که بیاد داده های تکراری یک جدول رو پاک کنه

ممنون

بهزادصادقی
شنبه 13 شهریور 1389, 21:46 عصر
این دستور شما مثل این است که به من بگین دستور یک غذای خوب محلی را به من بده. خوب، خیلی غذا ها وجود دارد، ولی احتمالا شما فقط چند نوع خاص مد نظرتون است.

مثلا، فرض کنید من 6 تا سطر با یک شناسه مشترک گیر آوردم. فرق نمی کنه کدوم یکی را نگه دارم و کدام پنچ تا را بریزم دور؟ کد ما باید بدونه بر چه اساسی این تصمیم را بگیره.

تازه، به جای پاک کردن شناسه های تکراری شما خیلی ساده می توانید کاری کنید که جدول شما به هیچ وجه اجازه ندهد شناسه ای تکرار شود. آیا این راه حل بهتری نیست؟

scorpion_sincity
شنبه 13 شهریور 1389, 23:33 عصر
سلام
عکس کاملا گویای منظور من هست
در کلاس هنرهای رزمی در یک سال و یک ترم نوآموز 11302 چندبار نامش ثب شده است
حالا ما می خواهیم موارد تکراری حذف شود
و تبدیل به تصویر دوم شود

بهزادصادقی
یک شنبه 14 شهریور 1389, 00:07 صبح
سلام
عکس کاملا گویای منظور من هست
در کلاس هنرهای رزمی در یک سال و یک ترم نوآموز 11302 چندبار نامش ثب شده است
حالا ما می خواهیم موارد تکراری حذف شود
و تبدیل به تصویر دوم شود

از اینکه این عکس ها را از ما دریغ نکردی خیلی تشکر می کنم. بدون این اطلاعات می چه طور می توانستم جواب تو را بدم؟

البته هنوز نگفتی اسم این جدول شما چیه. در ضمن نگفتی آیا به غیر از این ستون ها ستون دیگری هم داره یا نه. مثلا، یک ستون identity که هر سطر رو unique میکنه. من فرض را بر این می گذارم که کل ستون ها همین ها هستند که ما می بینیم، و این جدول primary key هم ندارد. در این صورت، اولین چیزی که واضحه این است که طراح این سیستم احتیاج به مطالعه بیشتری در مورد طراحی سیستم های database دارد، جرا که چند مسئله است که ایشان رعایت نکرده.

بگذارید من از اسم HorriblyDesignedTable برای جدول شما استفاده نمایم. در این صورت، شما می توانید با استفاده از query ذیل این سطرهای اضافی را از جدولتون پاک کنید. این کد فقط قابل احرا در SQL Server 2005 به بالا می باشد. اگر از SQL Server 2000 استفاده می نمائید من پیشنهاد می کنم این کار را با دست انحام دهید. (شوخی می کنم. 2000 که نیستی؟)

حقیقتش این است که برای من خیلی راحت تر است که یک جدول جدید عین جدول شما به وجود بیاورم که سطر تکراری توش نیست، تا اینکه بیام و سطر های اضافی را پاک کنم. بعد، شما می توانید محتویات این جدول جدید را کپی کنید روی متحویات جدول قبلی. من اسم این جدول جدید را گذاشته ام HorriblyDesignedButNowUniquelyPopulatedTable.

کد شما این است:



if object_id( 'dbo.HorriblyDesignedTable' ) is not null begin
drop table dbo.HorriblyDesignedTable;
end;

if object_id( 'dbo.HorriblyDesignedButNowUniquelyPopulatedTable' ) is not null begin
drop table dbo.HorriblyDesignedButNowUniquelyPopulatedTable;
end;
go

create table dbo.HorriblyDesignedTable
(
class_code int,
student_code int,
student_name nvarchar(100)
)

insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11302, 'Alireza' );
insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11302, 'Alireza' );
insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11302, 'Alireza' );
insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11302, 'Alireza' );
insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11302, 'Alireza' );
insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11305, 'Ehsan' );
insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11306, 'Javad' );
insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11307, 'Hamid Reza' );
insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11310, 'Mohammad Bagher' );
insert HorriblyDesignedTable (class_code, student_code, student_name) values (47203, 11302, 'Alireza' );

select h.* from dbo.HorriblyDesignedTable h;

select
OrderedMess.class_code,
OrderedMess.student_code,
OrderedMess.student_name
into
HorriblyDesignedButNowUniquelyPopulatedTable
from
(
select
row_number() over( partition by h.class_code, h.student_code order by student_name) rn,
h.*
from
dbo.HorriblyDesignedTable h
) OrderedMess
where
OrderedMess.rn = 1;

select u.* from dbo.HorriblyDesignedButNowUniquelyPopulatedTable u;


شما باید بتوانید کد بالا را همان طور که هست در SQL Server Management Studio اجرا کنید.

MOJTABAATEFEH
یک شنبه 14 شهریور 1389, 10:17 صبح
دوست عزیز برای مورد اول از لینک زیر کمک بگیرید
http://www.scip.be/index.php?Page=ComponentsExcelExport&Lang=EN


موفق باشید