26 Kasım 2007 Pazartesi

_123 TSQL functions

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

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") = ""

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

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 :)

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))

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

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

Visual C# 2005 Keyboard Shortcuts

VS.Net icerisinde kullanilan kisa yollar. Büyütmek icin lütfen resmin üzerine tiklayin.

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

----------------------------------------

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;
}
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

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



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.

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.

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,','))

16 Temmuz 2007 Pazartesi

Merhaba

Sevgili blog.. banada kalbin kadar ..... :p