Cok yararli T-SQL fonksiyonlarinin oldugu bir link.
Download edileblir zip dosya sitede bulunmakda.
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=502&lngWId=5
26 Kasım 2007 Pazartesi
13 Kasım 2007 Salı
Asp.Net - Jscript ile sayfa üzerindeki bir kontrolü gizlemek (invisible)
Örnegimizde bir dropdownlist ve bir linkbutton kontrolü kullaniyoruz.
CodeBehind sayfamizda öncelikle drowpdownlist kontrolümüzün attribute'ne onchange event'nde hangi JScript fonksiyonun cagrilcagini belirtiyoruz.
ddlNation.Attributes("onchange") = "javascript:checkSelectedNation(this, " & DBConstants.Land.SCHWEIZ & ");"
checkSelectedNation fonksiyonu parametre olarak ddlNation (dropdownlist) kontrolünü ve birde kodumuz icinde tanimlamis oldugumuz constant bir degeri aliyor.
aspx sayfamiz icine yazacagimiz JScript kodu ise söyle olacak:
function checkSelectedNation(dropDown, schweizID)
{
var selectedVal = dropDown.value;
var btnGebOrt = document.getElementById('<%=btnSelCHGebOrt.ClientID%>');
if (selectedVal == schweizID)
{
btnGebOrt.style.display="";
}else
{
btnGebOrt.style.display="none";
}
}
----
dropdownlist kontrolünde secilen deger bizim yolladiigmiz constant degere esit ise btnSelCHGebOrt button kontrolü görülecek. Aksi durumda ise gizlenecek.
Burda önemli bir durum var. Örnegin sayfa ilk yüklenirken DB den gelen "ddlNation" in degerine göre, btnSelCHGebOrt konrolümüzü yine gizlicez yada göstericez. Bu durumda btnSelCHGebOrt kontrolünün visible özelligini kullanirsak, false set ettigimiz durumda, daha sonra kullanacagimiz JScript fonksiyonumuz calismicakdir. Bunuun yerine ilk yüklemede codebehind' da söyle bir kullanim vardir.
Kontolü gizlemek icin:
btnSelCHGebOrt.Style.Item("display") = "none"
Kontolü göstermek icin:
btnSelCHGebOrt.Style.Item("display") = ""
CodeBehind sayfamizda öncelikle drowpdownlist kontrolümüzün attribute'ne onchange event'nde hangi JScript fonksiyonun cagrilcagini belirtiyoruz.
ddlNation.Attributes("onchange") = "javascript:checkSelectedNation(this, " & DBConstants.Land.SCHWEIZ & ");"
checkSelectedNation fonksiyonu parametre olarak ddlNation (dropdownlist) kontrolünü ve birde kodumuz icinde tanimlamis oldugumuz constant bir degeri aliyor.
aspx sayfamiz icine yazacagimiz JScript kodu ise söyle olacak:
function checkSelectedNation(dropDown, schweizID)
{
var selectedVal = dropDown.value;
var btnGebOrt = document.getElementById('<%=btnSelCHGebOrt.ClientID%>');
if (selectedVal == schweizID)
{
btnGebOrt.style.display="";
}else
{
btnGebOrt.style.display="none";
}
}
----
dropdownlist kontrolünde secilen deger bizim yolladiigmiz constant degere esit ise btnSelCHGebOrt button kontrolü görülecek. Aksi durumda ise gizlenecek.
Burda önemli bir durum var. Örnegin sayfa ilk yüklenirken DB den gelen "ddlNation" in degerine göre, btnSelCHGebOrt konrolümüzü yine gizlicez yada göstericez. Bu durumda btnSelCHGebOrt kontrolünün visible özelligini kullanirsak, false set ettigimiz durumda, daha sonra kullanacagimiz JScript fonksiyonumuz calismicakdir. Bunuun yerine ilk yüklemede codebehind' da söyle bir kullanim vardir.
Kontolü gizlemek icin:
btnSelCHGebOrt.Style.Item("display") = "none"
Kontolü göstermek icin:
btnSelCHGebOrt.Style.Item("display") = ""
24 Ekim 2007 Çarşamba
Birden fazla kriter ile TSQL Case Statement
select case
when 2 IN (1,2,4,8,10) then 'Found in criteria'
else 'not found'
end
when 2 IN (1,2,4,8,10) then 'Found in criteria'
else 'not found'
end
17 Ağustos 2007 Cuma
Remote Dektop da Ctrl+Alt+Del yapmak
Remote Desktop kullanirken explorer.exe beklenmedik bir sekilde kapanirsa ekraniniz microsoft un güzel mavisi ile kaplanir. Bu durumda Task Manager calistirip Run kismindan explorer.exe tekrar balslatmak gerekir. Task Manager i baslatmak icin Remote Desktop da ctrl + alt + del ne yazikki ise yaramiyor. Bunun icin gerekli olan kombinasyon:
Ctrl + Alt + End
Kücük bir ipucu :)
Ctrl + Alt + End
Kücük bir ipucu :)
14 Ağustos 2007 Salı
Oracle DB de tekrarlanan kayitlari silme
Asagidaki örnekde TestTable da min rowid ye sahip olan kayit saklanacak geri kalan tekrarlanan kayitlar silinecek.
Delete from TestTable t1
where t1.rowid >
(Select min(t2.rowID) from TestTable t2
where t1.col1 = t2.col1
and t1.col2 = t2.col2)
Benzer bir cözüm sql server icin söyle olabilir:
Oracle daki "rowid" yerine tablomuzun birincil anahtarini (PK) kullanabiliriz.
PK: sysID
Delete from TestTable where sysID IN (
Select sysID from TestTable t1
where t1.sysID > (Select min(t2.sysID) from TestTable t2
where t1.col1 = t2.col1
and t1.col2 = t2.col2))
Delete from TestTable t1
where t1.rowid >
(Select min(t2.rowID) from TestTable t2
where t1.col1 = t2.col1
and t1.col2 = t2.col2)
Benzer bir cözüm sql server icin söyle olabilir:
Oracle daki "rowid" yerine tablomuzun birincil anahtarini (PK) kullanabiliriz.
PK: sysID
Delete from TestTable where sysID IN (
Select sysID from TestTable t1
where t1.sysID > (Select min(t2.sysID) from TestTable t2
where t1.col1 = t2.col1
and t1.col2 = t2.col2))
11 Ağustos 2007 Cumartesi
SharePoint Tips & Tricks
Microsoft Share Point Server ve Windows SharePoint Services ile ilgili önemli ipucu ve cözümlerin bulunabilecegi kapsamli bir blog. Sharepoint ile ugrasanlarin isine cok yarayacagini düsünüyorum. Bir göz atmak da fayda var.
http://www.sharepoint-tips.com/2007/01/how-to-add-print-list-option-to-list.html
http://www.sharepoint-tips.com/2007/01/how-to-add-print-list-option-to-list.html
10 Ağustos 2007 Cuma
Debugging Oracle PL/SQL from Visual Studio
PL/SQL kodlarini VS.NET icerisinde debug etmek ile ilgili güzel bir makale.
http://www.oracle.com/technology/obe/net11gobe/debugging/debugging.htm?msgid=5794223
9 Ağustos 2007 Perşembe
Commandline dan PC yi tekrar baslatmak
MSDN den konu ile ilgili bir örnek:
----------------------------------------
To shut down \\MyServer in 60 seconds, force running applications to close, restart the computer after shutdown, indicate a user code, indicate that the shutdown is planned, log major reason code 125, and log minor reason code 1, type:
shutdown -r -f -m \\MyServer -t 60 -d up:125:1
----------------------------------------
----------------------------------------
To shut down \\MyServer in 60 seconds, force running applications to close, restart the computer after shutdown, indicate a user code, indicate that the shutdown is planned, log major reason code 125, and log minor reason code 1, type:
shutdown -r -f -m \\MyServer -t 60 -d up:125:1
----------------------------------------
8 Ağustos 2007 Çarşamba
Web.Config dosyasindaki Mail ayarlarini okumak.
Web.Config dosyasindaki <mailSettings> tagi altinda bulunan mail ayarlarini c# ile kod icerisinden okumak icin asagidaki örnegi kullanabilirsiniz.
using System.Configuration;
using System.Web.Configuration;
using System.Net.Configuration;
String path = Request.CurrentExecutionFilePath;
path = path.Substring(0, path.LastIndexOf('/'));
Configuration configurationFile = WebConfigurationManager.OpenWebConfiguration(path);
MailSettingsSectionGroup mailSettings = configurationFile.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;
if (mailSettings != null)
{
iPort = mailSettings.Smtp.Network.Port;
strHost = mailSettings.Smtp.Network.Host;
strPassword = mailSettings.Smtp.Network.Password;
strUserName = mailSettings.Smtp.Network.UserName;
}
using System.Configuration;
using System.Web.Configuration;
using System.Net.Configuration;
String path = Request.CurrentExecutionFilePath;
path = path.Substring(0, path.LastIndexOf('/'));
Configuration configurationFile = WebConfigurationManager.OpenWebConfiguration(path);
MailSettingsSectionGroup mailSettings = configurationFile.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup;
if (mailSettings != null)
{
iPort = mailSettings.Smtp.Network.Port;
strHost = mailSettings.Smtp.Network.Host;
strPassword = mailSettings.Smtp.Network.Password;
strUserName = mailSettings.Smtp.Network.UserName;
}
Burak Selim Senyurt'un LINQ ile ilgili cok güzel bir makalesi. Yine cok özen göstererek yazmis.
http://www.csharpnedir.com/makalegoster.asp?MId=729
http://www.csharpnedir.com/makalegoster.asp?MId=729
7 Ağustos 2007 Salı
Veri modellerinde Entity sınıf ve Typed DataSet karsilastirilmasi
Emre Coskun'un konu ile ilgili yazdigi güzel bir makale:
http://emrecoskun.blogspot.com/2007/03/neden-typed-dataset-kullanlmaldr.html
http://emrecoskun.blogspot.com/2007/03/neden-typed-dataset-kullanlmaldr.html
6 Ağustos 2007 Pazartesi
Bir resultsetden split edilmis string olusturmak
Sql Server üzerinde yaratacagimiz bu UDF, özellikle Reporting konusunda kullanilabilecek bir function örnegidir.
Örnegimizde Northwind veritabani kullaniyoruz.
Bunun icin öncelikle veritabaninda "GetProductIDs" isimli bir UDF olusturuyoruz. Fonksiyonumuz parametere olarak OrderID alacak ve OrderDetails tablosunda bu OrderID ye ait olan kayitlardaki ProductID leri bize virgül ile ayrilmis sekilde varchar olarak döndürecek.
CREATE FUNCTION [dbo].[GetProductIDs]
(
@OrderID int
)
RETURNS nvarchar(MAX)
AS
BEGIN
DECLARE @productIDList nvarchar(MAX)
SELECT @productIDList = COALESCE(@productIDList + ', ', '') +
CAST(ProductID AS varchar(20))
from dbo.[Order Details] Where OrderID = @OrderID
return @productIDList
END;
Fonksiyonumuz database üzerinde yaratildiktan sonra, su sekilde fonksiyonumuzu test edebiliriz.
Select dbo.GetProductIDs(OrderID) as ProductIDs from dbo.Orders
Örnegimizde Northwind veritabani kullaniyoruz.
Bunun icin öncelikle veritabaninda "GetProductIDs" isimli bir UDF olusturuyoruz. Fonksiyonumuz parametere olarak OrderID alacak ve OrderDetails tablosunda bu OrderID ye ait olan kayitlardaki ProductID leri bize virgül ile ayrilmis sekilde varchar olarak döndürecek.
CREATE FUNCTION [dbo].[GetProductIDs]
(
@OrderID int
)
RETURNS nvarchar(MAX)
AS
BEGIN
DECLARE @productIDList nvarchar(MAX)
SELECT @productIDList = COALESCE(@productIDList + ', ', '') +
CAST(ProductID AS varchar(20))
from dbo.[Order Details] Where OrderID = @OrderID
return @productIDList
END;
Fonksiyonumuz database üzerinde yaratildiktan sonra, su sekilde fonksiyonumuzu test edebiliriz.
Select dbo.GetProductIDs(OrderID) as ProductIDs from dbo.Orders
FreeTextBox icin sayfada Validation kaldirmak.
Asp.Net sayfalarinda FreeTextBox daki bir degeri veritabanina kaydederken bir güvenlik hatasi olusabilir:
"A potentially dangerous Request.Form value was detected from the client"
Bunu Page tag'ine
ValidateRequest="false"
ekleyerek önleyebiliriz.
"A potentially dangerous Request.Form value was detected from the client"
Bunu Page tag'ine
ValidateRequest="false"
ekleyerek önleyebiliriz.
30 Temmuz 2007 Pazartesi
.Net Validator kontrollerinin submit sirasinda calismasini engellemek
Asp.Net sayfalarinda bulunan validation controllerin herhangi bir submit isleminde, örnegin validation gerektirmeyen bir button tiklanip sayfa submit oldugunda calismamasi icin, button controlünün;
CausesValidation = False
özelligini set ediyoruz.
btnNew >> CausesValidation = False
btnSave >> CausesValidation = True
Save islemi sirasinda validation controllerinin calismasini sagliyoruz.
CausesValidation = False
özelligini set ediyoruz.
btnNew >> CausesValidation = False
btnSave >> CausesValidation = True
Save islemi sirasinda validation controllerinin calismasini sagliyoruz.
27 Temmuz 2007 Cuma
Multi Parameter > Where IN clause
SQL Split UDF:
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[UTILfn_Split]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[UTILfn_Split]
GO
create function dbo.UTILfn_Split(
@String nvarchar (4000),
@Delimiter nvarchar (10)
)
returns @ValueTable table ([Value] nvarchar(4000))
begin
declare @NextString nvarchar(4000)
declare @Pos int
declare @NextPos int
declare @CommaCheck nvarchar(1)
--Initialize
set @NextString = ''
set @CommaCheck = right(@String,1)
--Check for trailing Comma, if not exists, INSERT
--if (@CommaCheck <> @Delimiter )
set @String = @String + @Delimiter
--Get position of first Comma
set @Pos = charindex(@Delimiter,@String)
set @NextPos = 1
--Loop while there is still a comma in the String of levels
while (@pos <> 0)
begin
set @NextString = substring(@String,1,@Pos - 1)
insert into @ValueTable ( [Value]) Values (@NextString)
set @String = substring(@String,@pos +1,len(@String))
set @NextPos = @Pos
set @pos = charindex(@Delimiter,@String)
end
return
end
--------
DECLARE @params nvarchar(100)
SET @params='962, 979, 971'
select * from dbo.TABLETEST
where ID IN (select * from dbo.UTILfn_Split(@params,','))
if exists (select * from dbo.sysobjects where id =
object_id(N'[dbo].[UTILfn_Split]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[UTILfn_Split]
GO
create function dbo.UTILfn_Split(
@String nvarchar (4000),
@Delimiter nvarchar (10)
)
returns @ValueTable table ([Value] nvarchar(4000))
begin
declare @NextString nvarchar(4000)
declare @Pos int
declare @NextPos int
declare @CommaCheck nvarchar(1)
--Initialize
set @NextString = ''
set @CommaCheck = right(@String,1)
--Check for trailing Comma, if not exists, INSERT
--if (@CommaCheck <> @Delimiter )
set @String = @String + @Delimiter
--Get position of first Comma
set @Pos = charindex(@Delimiter,@String)
set @NextPos = 1
--Loop while there is still a comma in the String of levels
while (@pos <> 0)
begin
set @NextString = substring(@String,1,@Pos - 1)
insert into @ValueTable ( [Value]) Values (@NextString)
set @String = substring(@String,@pos +1,len(@String))
set @NextPos = @Pos
set @pos = charindex(@Delimiter,@String)
end
return
end
--------
DECLARE @params nvarchar(100)
SET @params='962, 979, 971'
select * from dbo.TABLETEST
where ID IN (select * from dbo.UTILfn_Split(@params,','))
16 Temmuz 2007 Pazartesi
Kaydol:
Kayıtlar (Atom)