تابع Lead و Lag در Sql Server چست و چه کاربردی دارد؟
در زمان طراحی کوئری، خیلی از مواقع نیاز است که به سطرهای قبل یا بعد از سطر جاری دسترسی داشته باشیم. یکی از روش های موجود استفاده از تابع Row number بود که از نسخه 2005 اس کیو ال به بعد پشتیبانی می شود. اما از نسخه 2012 دو تابع مفید Lead وLag قابل استفاده هستند.
تابع LAG : دستیابی به مقدار یک فیلد در سطرها قبل از سطر جاری
LAG (value_expression [,offset] [,
default
]) OVER ([query_partition_clause] order_by_clause)
تابع LEAD : دستیابی به مقدار یک فیلد در سطرها بعد از سطر جار
LEAD (value_expression [,offset] [,
default
]) OVER ([query_partition_clause] order_by_clause)
پارامترهای موجود در هر تابع به صورت زیر هستند:
value_expression : نام ستون مورد نظر
Offset: تعداد سطر بعد/قبل از سطر جاری
Default: مقدار پیش فرض در صورت خارج از رنج بودن Offset
query_partition_clause: گروهبندی روی ستون خاص
روش استفاده از تابع Lead را با یک مثال شرح خواهیم داد در این مثال قصد داریم کارمندان یک روز به تاریخ شروع پروژه بعدی را اضافه کنیم.
SELECT
*,
DATEADD(
DAY
, -1, LEAD(Emp_Startdate, 1,
'01-Jan-2100'
)
--کسر کردن یک روز از تاریخ رکورد بعدی
OVER (PARTITION
BY
Emp_Name
ORDER
BY
Emp_Startdate
ASC
))
AS
EndDate
FROM
Employee
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید
نحوه استفاده از Pivot در Sql Server
Pivot table ها در واقع همانند سایر Table های دیگر می باشند فقط با این تفاوت که در نمایش ردیف و ستون های آنها مقداری تفاوت وجود دارد .
دستور pivot جزو دستوراتی از Sql server می باشد که ممکن است در بیشتر پروژه هایمان برای نمایش گزارشات مختلف به استفاده از آن نیاز داشته باشیم . کاربرد دستور pivot تقریبا تبدیل نمایش خروجی یک کوئری از حالت ردیفی به ستونی می باشد . به صورت خیلی خلاصه بخواهیم نحوه کارکرد این دستور را بیان کنیم ، کار آن یک چرخش 90 درجه جداول می باشد ، یعنی جای ستون و ردیف ها را با هم جابه جا کنیم .
در این مثال قصد داریم مجموع ورودی و خروجی های یک جدول خاص از انبار را استخراج کنیم.
SELECT
*
FROM
(
SELECT
[type]
FROM
stock
WHERE
[type]
IN
(
's'
,
'i'
)
) t
PIVOT (
COUNT
(t.[type])
FOR
[type]
IN
(s ,i)
) p
توضیحات کامل این مقاله را در سایت پروژه چی بخوانید
نحوه آپلود فایل با حجم زیاد با استفاده از ASP.NET
برای اینکه بتوانیم فایلی با حجم زیاد در محیط برنامه نویسی سی شارپ با ای اس پی دات نت آپلود کنیم فقط کافی است که کدهای زیر را در وب کانفیگ Webconfig تغییر دهیم.
ابتدا مقدار زیر را قرار دهید.
<system.web>
<httpRuntime shutdownTimeout="120" executionTimeout="3600" useFullyQualifiedRedirectUrl="true" maxRequestLength="1048576" requestLengthDiskThreshold="12288" requestPathInvalidCharacters="<,>,*,%,:,\,?" requestValidationMode="2.0" />
</system.web>
بعد از آن مقدار زیر را هم تغییر دهید
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="100000000" />
</requestFiltering>
</security>
</system.webServer>
نحوه فراخوانی یک وب سرویس asmx
در این مثال قصد داریم که یک وب سرویس که با استفاده از روش Soap کار شده است را نمایش دهیم و این وب سرویس را در بخش رفرنس ها اضافه کرده ایم. و نهایتا بتوانیم از آنها استفاده کنیم.
WSHttpBinding binding = new WSHttpBinding ();
binding.MaxReceivedMessageSize = 2147483647;
binding.MaxBufferPoolSize = 2147483647;
binding.ReaderQuotas.MaxArrayLength = binding.ReaderQuotas.MaxBytesPerRead = binding.ReaderQuotas.MaxStringContentLength = 2147483647;
binding.CloseTimeout = binding.OpenTimeout = binding.ReceiveTimeout = binding.SendTimeout = new TimeSpan (3,0,0);
//binding.MessageEncoding = WSMessageEncoding.Mtom;
EndpointAddress ea = new EndpointAddress ("http://xxxxxxxxxxxxxxxxx/TestService.svc");
ShahrbanServiceTest.ShahrbanServiceClient service = new ShahrbanServiceTest.ShahrbanServiceClient (binding,ea);
service.ClientCredentials.Windows.ClientCredential.Domain = "babakhani.ir";
service.ClientCredentials.Windows.ClientCredential.UserName = "babakhani";
service.ClientCredentials.Windows.ClientCredential.Password = "sirous";
ShahrbanServiceTest.DistrictCartableFilterType CartableFilter = ShahrbanServiceTest.DistrictCartableFilterType.Normal;
//var spr = service.GetAllDistrictWarning ();
DateTime Date1 = Convert.ToDateTime ("2015-11-18");
DateTime Date2 = Convert.ToDateTime ("2015-11-16");
var spr = service.GetDistrictMainFilesByDate (Date2,Date1);
نحوه دانلود فایل متنی در برنامه نویسی #C
در این مثال قصد داریم که یک متنی را در داخل برنامه توسط برنامه نویسی سی شارپ تولید کنیم و کاربر نهایی بتواند آن را دانلود کند.
string text="1,12154 \n 45545,واریز بهمن, \n sdfa,48575,kjdk ";
StringWriter ObjStringWrite=new StringWriter ();
ObjStringWrite.Write (text);
// Response.ContentType="application/ocetet-stream"; //For Excel
Response.ContentType = "text/plain"; //For Text File
//Response.AddHeader ("content-disposition","attachment;filename="+"test.txt");
Response.AddHeader ("content-disposition","attachment;filename=test.txt");
Response.Clear ();
using (StreamWriter ObjStramWriter=new StreamWriter (Response.OutputStream,Encoding.UTF8))
{
ObjStramWriter.Write (ObjStringWrite.ToString());
Response.End ();
}