29 Ekim 2013 Salı

The client disconnected.

Geliştirdiğimiz Web uygulamalarında exception logging yapıyorsak “System.Web.HttpException: The client disconnected. —> System.Web.UI.ViewStateException: Invalid viewstate” hatası ile mutlaka karşılaşmışsınızdır. Bu sorunun birçok nedeni olabilmektedir. Bu nedenler farm’da çalışan web uygulamaları için machine key’in aynı olmaması, sunucu üzerinde çalışan antivirüs veya firewall yazılımları, veya client’ın veri gönderirken proxy’de Viewstate hidden field’ının uzun olmasından dolayı kırpılması olabilmektedir. İlk iki sebep için kod tarafında bir düzeltme yapılması mümkün gözükmezken son sebebi web.config dosyasında System.Web nodunda bulunan pages nesnesi içine  maxPageStateFieldLength=”512″ yazarak çözebilirsiniz. Yaptığınız bu değişiklik Viewstate hidden field’ının 512′şer karakter içeren birden fazla alana bölünmesini sağlayacaktır. Bu çözümle Invalid Viewstate hatalarının birçoğundan kurtuldum.

http://www.tameroz.com/en/invalid-viewstate-exception/

16 Nisan 2013 Salı

ASP NET Türkçe Karakter Problemi

Eğer tüm ayarlarınızı doğru yaptığınızdan eminseniz(Db karakter seti ve connection bağlantısı) birde aşağıdaki seçenekleri denemenizde fayda var.

1) Aspx sayfanızı not defteri ile açıp farklı kaydet seçeneğini seçip UTF-8 olarak kaydedin.
2) Aspx sayfanızın en üstüne  CodePage="28599" yazın.

16 Mart 2013 Cumartesi

Mssql yetki ayarlaması

Lafı fazla uzatmadan hemen konuya geçiyorum. Eğer MsSql'de daha önceden oluşturulan bir tabloda değişiklik yapmaya çalışıyorsanız ve karşınıza aşağıdaki hata mesajı çıkıyorsa panik yapmanıza ve Türk işi bir çözüm aramanıza gerek yok.

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes to a table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

22 Kasım 2012 Perşembe

Update komutu ile select cümlesini bir arada kullanmak


begin tran
select * from tbl_TibbiBirimler order By TibbiBirim


UPDATE
bir
SET
TibbiBirim = '----' + TibbiBirim
FROM
tbl_TibbiBirimler bir

select * from tbl_TibbiBirimler order By TibbiBirim
rollback


Tablomuza vermiş olduğumuz takma adı ile UPDATE kodunda kullanaraktan tablomuzu güncelleyebiliyoruz.

18 Haziran 2011 Cumartesi

internet explorer ‘da gmail açmaya çalışırkenki ‘güvenli olmayan öğeler’ uyarısını yok etmek..

ie ‘nin kıllık olsun diye mi yaptığı bi şeydir bilmiyorum ama gmail ‘i bile beğenmeyip, sayfaya ulaşmaya çalışırken verdiği “bu sayfa hem güvenli hem de güvenli olmayan öğeler içeriyor. güvenli olmayan öğeleri görüntülemek istiyor musunuz?” şeklindeki uyarısı beni kıl ediyordu uzun zamandır. gerçi firefox kullanıyorum normalde ama bazen ie kullanmak gerekebiliyor, bu yüzden de bu uyarıdan kurtulmak gerekiyor.. internet explorer ‘ın neredeyse tüm ayarlarını kurcaladıktan sonra anca bulabildim uyarının nereden iptal edileceğini.. siz de uyarı çıkmasın istiyorsanız, şu yolu izleyiverin gayri:

- internet explorer ‘da internet seçenekleri ‘ni açın.
- en yukarıdaki sekmelerden güvenlik sekmesine gidin.
- güvenlik sayfası altındaki seçeneklerden önce internet ‘i seçin.
- sonra alt taraftaki bölge güvenlik düzeyi bölümünden özel düzey ‘i açın.
- oradaki uzunca listeden çeşitli başlığı altındaki karışık içerik görüntüle maddesini bulun.
- bu maddede varsayılan olarak sor seçeneği seçilidir(bende öyleydi). bu seçeneği değiştirip devre dışı bırak seçeneğine ayarlayın. tamam deyip onaylayın, “emin misiniz” diye soracak; “he he eminim” deyin, geçin. sonra bi daha tamam deyin, çıkın.
- tam anlamadım ama sanırım bu şekilde o uyarının çıktığı sayfalardaki güvenli olmayan öğeler-size sorulmaksızın-görüntülenmeyecek.


Kaynak : http://www.adilekin.net/gunluk/internet-explorer-da-gmail-acmaya-calisirkenki-guvenli-olmayan-ogeler-uyarisini-yok-etmek/

1 Aralık 2010 Çarşamba

CETURK – ORACLE Günü’10 ”






Bugüne kadar çok farklı konu ve teknoloji ile ilgili yaptığı ücretsiz etkinliklerle bilişim sektörünün gelişmesine katkıda bulunan CETURK etkinliklerine büyük bir hızla devam ediyor. 4 Aralık 2010 tarihinde Bahçeşehir Üniversitesi'nde ” CETURK – ORACLE Günü’10 ” etkinliği gerçekleştirilecek. Bugüne kadar gerçekleştirilen gerek CETURK gerekse ORACLE etkinlikleri içerisinde konu ve konuşmacılarıyla öne çıkan bu etkinliğe katılım ücretsiz olacak.

Etkinliğin konuşmacıları :

  • Türkiye’de Oracle Certified Master(OCM) sertifikasına
    sahip tek kişi olan Cem Zorba,

  • BI alanından Oracle ACED ve 2009 yılın Oracle DBA’yi unvanlarının
    sahibi ve bu ödüllere sahip Turkiye’deki tek, tüm dünyadaki en en geç uzman olan Hüsnü Şensoy,

  • 10 seneyi aşan Oracle veritabanı tecrübesine sahip olan H. Tonguç Yılmaz,

  • Özel bir bankada ORACLE DBA olarak çalışan Gökhan Karagözlü ve Talip Hakan Öztürk


    Ayrıntılı bilgi için tıklayınız.

    Etkinliğe kayıt için tıklayınız.


14 Eylül 2010 Salı

ASP.NET ve Culture ayarları






'This code produces the following output. This output has been cropped for brevity.
'
'CULTURE SPECIFIC CULTURE
'ar Arabic ar-SA
'bg Bulgarian bg-BG
'ca Catalan ca-ES
'zh-Hans Chinese (Simplified) zh-CN
'cs Czech cs-CZ
'da Danish da-DK
'de German de-DE
'el Greek el-GR
'en English en-US
'es Spanish es-ES
'fi Finnish fi-FI
'fr French fr-FR
'he Hebrew he-IL
'hu Hungarian hu-HU
'is Icelandic is-IS
'it Italian it-IT
'ja Japanese ja-JP
'ko Korean ko-KR
'nl Dutch nl-NL
'no Norwegian nb-NO
'pl Polish pl-PL
'pt Portuguese pt-BR
'rm Romansh rm-CH
'ro Romanian ro-RO
'ru Russian ru-RU
'hr Croatian hr-HR
'sk Slovak sk-SK
'sq Albanian sq-AL
'sv Swedish sv-SE
'th Thai th-TH
'tr Turkish tr-TR
'ur Urdu ur-PK
'id Indonesian id-ID
'uk Ukrainian uk-UA
'be Belarusian be-BY
'sl Slovenian sl-SI
'et Estonian et-EE
'lv Latvian lv-LV
'lt Lithuanian lt-LT
'tg Tajik tg-Cyrl-TJ
'fa Persian fa-IR
'vi Vietnamese vi-VN
'hy Armenian hy-AM
'az Azeri az-Latn-AZ
'zh-TW Chinese (Traditional, Taiwan) zh-TW
'zh-CN Chinese (Simplified, PRC) zh-CN
'zh-HK Chinese (Traditional, Hong Kong S.A.R.) zh-HK
'zh-SG Chinese (Simplified, Singapore) zh-SG
'zh-MO Chinese (Traditional, Macao S.A.R.) zh-MO
'zh Chinese zh-CN
'zh-Hant Chinese (Traditional) zh-HK
'zh-CHS Chinese (Simplified) Legacy zh-CN
'zh-CHT Chinese (Traditional) Legacy zh-HK

6 Eylül 2010 Pazartesi

Convert.ToInt32(), Int32.Parse() ve Int32.TryParse() Farklılıkları

Erkan Güzelküçük adlı arkadaşım integera convert etme işlemlerinde kullanılan methodlar üzerine güzel bir makale yazmış.

http://erkanguzelkucuk.wordpress.com/2010/01/14/convert-toint32-int32-parse-ve-int32-tryparse-farkliliklari/

5 Eylül 2010 Pazar

SQL ile Tablonun Kopyasını Almak

SQL’de tabloların kopyasını almak için düzenlemiş her hangi bir komut yok. Bu işlemi tablo yaratmak için kullandığımız CREATE TABLE komutuna bir SELECT ekleyerek yapabiliriz. Örneğin:

CREATE TABLE yedek_emp AS SELECT * FROM employees;

Eğer sadece tablonun yapısını kopyalamak istiyorsak (içerisinde kayıt olmadan), SELECT sorgusuna bir filtre (WHERE) koyarak bunu yapabiliriz:

CREATE TABLE yedek_dep AS SELECT * FROM departments WHERE 1 = 0;

Kaynak: http://www.gokhanatil.com/2008/06/sql-ile-tablonun-kopyasini-almak/

21 Temmuz 2010 Çarşamba

PadLeft, PadRight ve Bazı String İfadeler

PadLeft ve PadRight

Sürekli bir sayının başına sıfır koymaya çalıştığımda toString("00") kullanıyordum. Örneğin illlerin plaka kodlarını düşünürsek 1, 2 .. olarak gidiyor daha güzel gözükmesi için 01, 02 .. yapıyordum.

Nette dolaşırken hiç de bu zamana kadar dikkatimi çekmeyen 2 fonksiyon gördüm. PadLeft ve
PadRight.

string il = "1";
string kod = "366";


MessageBox.Show(il.PadLeft(2, '0')); // Sonuç: 01

MessageBox.Show(kod.PadLeft(4, '0')); // Sonuç: 0366

MessageBox.Show(il.PadRight(2,'0')); // Sonuç: 10
MessageBox.Show(kod.PadRight(4,'0')); // Sonuç: 3660

ToLowerInvariant, ToUpperInvariant

String değerleri küçük karakter yapmak için ToLover, büyük yapmak içinse ToUpper fonksiyonlarını kullanmamız gerektiğini hepimiz biliriz. Pekala çeviri yaptığımız değerleri olduğu gibi değilde sistemin diline göre (ı, i duyarlı) çevirmek için nasıl bir yöntem izleriz. İşte burada ToLoverInvariant ve ToUpperInvariant fonksiyonlarını kullanırız.

string txt = "BirDunyaTarif";

Response.Write(text.ToLower()); // birdunyatarif
Response.Write(text.ToLowerInvariant()); // birdunyatarif
Response.Write(text.ToUpper()); // BİRDUNYATARİF
Response.Write(text.ToUpperInvariant()); // BIRDUNYATARIF

NOT: İşletim sistemim ingilizcedir.

StringBuilder()

Bu zamana kadar string birleştirirken string değişkenlerinin arasına + işaretini ekledim. Bunun çok yalnış olduğunu ve sistemi yorduğunu öğrendim. Bunun yerine StringBuilder sınıfı kullanılmalı.

StringBuilder builder = new StringBuilder();

string[] txt= new string[] { "Tekno", "Gezgin"};

for (int i = 0; i < txt.Length; i++) {
builder.Append(txt[i] + " ");
}
Response.Write(builder.ToString());

5 Temmuz 2010 Pazartesi

MsSql Script Olarak Backup (Yedek) Alma

Geçenlerde Visual Studio ve MySql ile proje geliştirirken MySql'in yedeğini aldım. Yedek dosyasını script şeklinde verdi. Sürekli MsSql ile çalıştığımdan bu bana garip geldi. MsSql'de yedek alırken hep bak dosyası şeklinde yedek alıyordum ve merak edip MySql'de olduğu gibi MsSql'de de script şeklinde yedek almaya baktım.
MsSql ücretsiz versiyonu (Express) uzun aramalardan sonra bu şekilde bir şey olmadığını gördüm. Tabiki imdadıma yine Visual Studio yetişti. Sağ taraftaki Server Explorer'dan veritabanım üzerine sağ tıklayınca açılan pencereden "Publish to provider" seçerek karşımıza çıkan ekranlarda sürekli next next diyerekten veritabanımızı script olaraktan yedek almış oluyoruz.

Eğer "Publish to provider" seçeneği karşınıza çıkmazsa Microsoft SQL Server Database Publishing Wizard 1.1 bu linkten indirip tekrardan deneyin.

1 Temmuz 2010 Perşembe

Yazdığımız Kodların Güvenliği

Arkadaşlar yazdığımız kodları nasıl koruma altına alırız (almaya çalışırız). Bu konuda güzel bir makale yazmışlar. Direk sizinle paylaşıyorum. Kolay gelsin.

http://www.csharpnedir.com/forum2/forum_posts.asp?TID=29958

MSN'le Gelen Sinir Bozucu Pencere

MSN her açtığımda otomatik olarak açılan ve benim beklememe(makinem çok yavaş :D) sebep olan pencerenin artık karşıma nasıl bir daha çıkmayacağını buldum.

Msn’inizde sırasıyla Araçlar >> Seçenekler >> Genel sekmesine gelin veya Otorum Aç sekmesine gelin >> Messenger’da oturum açtığımda Windows Live Bugün’ü görüntüle

şeklinde bir seçenek var. Bunu işaretleyip uygula dedikten sonra artık penceresiz bol günler.

26 Haziran 2010 Cumartesi

Captcha ve KittenAuth Nedir ?

Captcha ve KittenAuth zaman geçtikçe gelişen teknolojilere bir nebze güvenlik katmak için geliştirilen yapılardır. Hepinizin bildiği ve günlük hayatta sürekli karşısına çıkan (yorum yazarken vs) değişik harf ve sayılardan oluşan resimleri ekrana girmeniz istenir. Buna Captcha denir.

Paragrafın başında dediğim gibi sürekli gelişen bir teknolojiyle bu güvenlik ayarınıda geçmeyi başardılar. (Değişik yazılımlarla grafikleri okuma programları yaygınlaştı.) Buna karşıda Captcha gelişti ve KittenAuth adında bir güvenlik mekanizması ortaya çıktı. Bunun anlamıda karşımıza çeşitli görseller çıkıyor ve aynı olanlarını seçmemizi istiyor.

22 Haziran 2010 Salı

CSS İle Yazıya Takla Attırma

Arkadaşlar HTML yazıyı aşağıdan yukarıya doğru yazdırırken hep "mso-rotate:90;" css kodunu kullanıyordum. Ama yukarıdan aşağıya doğru bu kod işe yaramıyordu . Gel zaman git zaman aşağıdaki css kodunu buldum. Rotation=3 değerini değiştirtikçe istediğiniz yönü verebiliyorsunuz.

"float:left; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);"

18 Haziran 2010 Cuma

C# NULL Kontrolü

Bazı değişkenleri kontol ederken null olup olmadıklarına göre işlem yaparız. Bunun içinde ben sürekli eğer bu değişken null'sa bunu yap gibi bir kod kullanıyordum. Bunun yerine yeni öğrendiğim bir kodu sizinle paylaşıyorum.

Yalnış:
var i = null;
var k = null;
if (i==null)
{
k=değer;
}

Doğru:
var i = null;
var k = null;
k = i ?? değer;

i değişkeni null'sa k değişkeninin içine değeri atama yapıyor. Değilse i değişkenini atıyor.
Ayrıca aynı javascriptteki gibi değişkenleri tanımlarken var k gibi tanımlama yapabiliyoruz. Bu sayede ileriki aşamalarda bu değikenimizin tipini belirleyebiliyoruz.

Linq To Sql Left Outer Join

İki tabloyu birlikte sorgulamak için inner join kullanırız. Bunu Linq To Sql ile yaparken aşağıdaki gibi bir Linq Query yazarak çözüyoruz
(Kisi, Telefon ve Adres tablolarımız olduğunu, bir kişinin de birden çok adresi ve telefonu olduğunu düşünüyoruz )
Bu sorgu sonucunda bana kişiler tablosundaki isimler ve bunlara ait telefon numaraları gelecektir.

from kisi in Kisis
join tlf in Telefons
on kisi.ID equals tlf.KisiID
select new
{
Ad = kisi.Ad,
Tlf = tlf.Numara
}

T-Sql çıktısı
SELECT [t0].[Ad], [t1].[Numara] AS [Tlf]
FROM [Kisi] AS [t0]
INNER JOIN [Telefon] AS [t1] ON [t0].[ID] = [t1].[KisiID]

Lambda Expression
Kisis.Join ( Telefons, kisi => kisi.ID, tlf => tlf.KisiID, (kisi, tlf) => new { Ad = kisi.Ad, Tlf = tlf.Numara } )



Senaryomuzu değiştirelim ;
Kişiler tablosundaki tüm kayıtlat gelsin, telefon numarası olmayanlar da gelsin telefonu yoksa null değer gelsin. Bunun içinde Left Outer Join ile çözeriz. Linq sorugumuzu şu şekilde değiştirmemiz yeterli olacaktır.

from kisi in Kisis
join tlf in Telefons
on kisi.ID equals tlf.KisiID into data
from x in data.DefaultIfEmpty()
select new
{
Ad = kisi.Ad,
Tlf = x.Numara
}

T-SQL çıktısı

SELECT [t0].[Ad], [t1].[Numara] AS [Tlf]
FROM [Kisi] AS [t0]
LEFT OUTER JOIN [Telefon] AS [t1] ON [t0].[ID] = [t1].[KisiID]

Lambda Expression
Kisis
.GroupJoin (
Telefons,
kisi => kisi.ID,
tlf => tlf.KisiID,
(kisi, data) =>
new
{
kisi = kisi,
data = data
}
)
.SelectMany (
temp0 => temp0.data.DefaultIfEmpty (),
(temp0, x) =>
new
{
Ad = temp0.kisi.Ad,
Tlf = x.Numara
}
)



Kaynak: http://www.oguzyagmur.com/PermaLink,guid,b9fcc750-0e3b-43e4-a9e8-212ee94afa4e.aspx

25 Mayıs 2010 Salı

XHTML Nedir?

XHTML (Extensible Hyper Text Markup Language) tüm browserlar tarafından kabul görmüş standartları belirtir. Diğer bir deyişle HTML yazımında getirilen standartlardır. XHTML kullanmanın en önemli avantajı farklı tarayıcılarda(Opera, Explorer, Crome vs) sorun çıkarmamasıdır. Bir diğer avantajı ise arama motorlarının XHTML standartlarına uygun yazılmış sitelere daha yüksek not vermeleridir.

XHTML Dikkat Edilmesi Gereken Kurallar?

1) Browserin XHTML standartlarına uyulduğunu anlayabilmesi için sayfanın en üstüne aşağıdaki kodların eklenmesi gerekmektedir.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

NOT:Geçerli 3 adet XHTML döküman tipi vardır:

a) XHTML Strict
XHTML Dökümanlarını css dökümanları ile beraber kullanmanız gerektiğinde kullanılır. HTML’nin dizayn unsurlarını içermez.
Tanımı:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

b) XHTML 1.0 Transitional
CSS anlamayan web gezginlerini desteklemek ve HTML’nin dizayn unsurlarını kullanmak istiyorsanız bu döküman tipini kulanın.
Tanımı:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">

c) XHTML 1.0 Frameset
Eğer XHTML dökümanları pencerelere bölünmüş olarak gösterilecekse bu döküman tipini kullanın.
Tanımı:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

2) Türkçe karakterlerin doğru çıkması içinde head tagının arasına aşağıdaki kodun eklenmesi gerekmektedir.

<meta equiv="Content-Type" content="text/html; charset=utf-8">

3) Kodlar açıldıkları sırada kapanmalıdırlar.

Doğru:
<html>
<head>
<title></title>
</head>
<body>
<div>TeknoGezgin</div>
</body>
</html>

Yalnış:
<html>
<head>
<title></title>
<body>
</head>
<div>TeknoGezgin</div>
</html>
</body>

4) Tagları ve değerlerini küçük harfle yazın.

Doğru:
<title></title>
<div style="">TeknoGezgin</div>

Yalnış:
<TITLE></TITLE>
<div STYLE="">TeknoGezgin</div>

5)Açılan her tag kapanmalıdır.

Doğru:
<b></b>
<hr />

Yalnış:
<hr>
<br>

6) HTML tagı içerisinde head ve body tagları kullanılmak zorundadır.

7) Link ve Resim eklerken bir başlık (title) girilmelidir.

Doğru:
<img src="" href="Kastamonu.gif" title="Kastamonu Resimi" />
<a href="http://www.teknogezgin.blogspot.com/" title="Teknolojik Bilgiler :)">

Yalnış:
<img src="" href="kastamonu.gif" />
</a><a href="http://www.teknogezgin.blogspot.com/">

8) Parametreler tırnak içinde olmalıdır.

Doğru:
<div width="100%"></div>
<a href="http://www.teknogezgin.blogspot.com/">teknogezgin</a>

Yalnış:
<div width=100%></div>
<a href=http://www.teknogezgin.blogspot.com/>teknogezgin</a>

9) Parametrelerde kısaltmalar kullanılmamalıdır.

Doğru:
<input type="radio" checked="checked" />
<option selected="selected" />

Yalnış:
<input type="radio" checked />
<option selected />

10) Sadece Id parametresi kullanın. XHTML id parametresini kullanmamızı istiyor.

Doğru:
<p id="parag">
<input id="parag" value="deger" type="submit">

Yalnış:
<p name="parag">
<input name="parag" value="deger" type="submit">

O zaman kısaca XHTML dikkat edilmesi gereken kuralları şu formül ile açıklayabiliriz. XHTML = XML

24 Mayıs 2010 Pazartesi

T-SQL İle Tarihler Üzerinde İşlemler Yapmak

SELECT CURRENT_TIMESTAMP
-- Sonuç : 2009-07-20 10:39:15.097


SELECT DATEADD(day,2,'2009-07-20')
-- Sonuç : 2009-07-22 00:00:00.000

SELECT DATEADD(month,2,'2009-07-20')
-- Sonuç : 2009-09-20 00:00:00.000


SELECT DATEDIFF(day,'2009-07-20','2015-02-09')
-- Sonuç : 2030 (Gün olarak aldık)

SELECT DATENAME(month, '2009-07-20')
-- Sonuç : July


SELECT DATENAME(weekday, '2009-07-20')
-- Sonuç : Monday

SELECT DATEPART(month, '2009-07-20')
-- Sonuç : 7


--Şuanki Zaman ve Tarihi verir
SELECT GETDATE()
-- Sonuç : 2009-07-20 11:52:32.893

-- Londra - Greenwich Saati
SELECT GETUTCDATE()
-- Sonuç : 2009-07-20 08:52:44.693


--Girilen string değerin tarih olup olmadığını belirler. 1 ise tarih 0 ise değil.
SELECT ISDATE('2009-07-20') -- Sonuç : 1
SELECT ISDATE('2014-18-09') -- Sonuç : 0

--girilen Tarihin gün bilgisini verir.
SELECT DAY('2009-07-20')
-- Sonuç : 20


--girilen Tarihin ay bilgisini verir.
SELECT MONTH('2009-07-20')
-- Sonuç : 7

--Girilen Tarihin yıl bilgisini verir.
SELECT YEAR('2009-07-20')
-- Sonuç : 2009


--Sistem Zamanını verir.
SELECT SYSDATETIME()
-- Sonuç : 2009-07-20 11:53:15.7138432

--Sistem Zamanını Greenwiche göre verir.
SELECT SYSUTCDATETIME()
-- Sonuç : 2009-07-20 08:53:25.9958432


-- DATEADD: Şuanki, Tarihe 7 Gün ekleyelim.
-- Bunun için 1 hafta eklemek veya 7 gün eklemek yeterlidir.
SELECT DATEADD(DD, 7, GETDATE())

SELECT DATEADD(WW, 1, GETDATE())

-- Şuanki Tarihe göre Ayın hangi günündeyiz.
SELECT DAY(GETDATE())


-- Şuanki Ayın Ilk günü
SELECT DATEADD(DD,-(DAY(GETDATE())-1),CONVERT(VARCHAR,GETDATE(),112))

-- Şuanki Ayın son günü
SELECT DATEADD(DD,-(DAY(DATEADD(MM,1,GETDATE()))),DATEADD(MM,1, CONVERT(VARCHAR,GETDATE(),112)))


-- DATEDIFF: Ocak 1 2007 den bugune kadar kaç gün geçti
SELECT DATEDIFF(DD,'20070101',GETDATE())

-- DATENAME: Şuanki Ay
SELECT DATENAME(MM, GETDATE())


-- Hangi Aydayız.
SELECT MONTH(GETDATE())

-- Hangi Yıldayız
SELECT YEAR(CURRENT_TIMESTAMP)


--C#'taki gibi Tarih Stilleri
1- 101 (mm/dd/yy)
2- 102 (yy.mm.dd)
3- 103 (dd/mm/yy)
4- 104 (dd.mm.yy)
5- 105 (dd-mm-yy)
6- 106 (dd mon yy)
7- 107 (Mon dd , yy)
8- 108 (hh:mm:ss)
9- 109 (Mon dd yyyy Hh:mi:ss:mmm AM yada PM)
10 – 110 (mm-dd-yy)
11 – 111 (Yy/mm/dd)
12- 112 (Yymmdd)
13- 11 3 (Dd mm yyy hh:mm:ss:mmm)
14- 114 (Hh:mi:ss:mmm)
20- 120 (Yyyy-mm:dd hh:mm:ss)
21- 121 (Yyy-mm:dd hh:mi:ss:mmm)

Microsoft'un sitesinden de farklı stillere bakabilirsiniz.

SELECT CONVERT(CHAR(20), GETDATE(),103) as "şu andaki zaman" 07.07.2010
SELECT CONVERT(CHAR(20), GETDATE(),108) as "şu andaki saat" 14:51:25

Zamanla buraya daha farklı zaman fonksiyonlarıda ekliyecem.

13 Mayıs 2010 Perşembe

Asp.net Dinamik event handler ve Dinamik Kontroller

Merhaba arkadaşlar. kısa olmasına karşın çok pratik bir kod paylaşacağım.
Bu kodda asp.net kontrollerini dinamik oluşturacağız. ama sırf bunu anlatmak için açmadım konuyu. birde

ajax ile de kullanabileceğiniz kullanabileceğiniz dinamik event handler atama işlemine değineceğim.

Sayfamıza bir placeholder ekleyelim ve pageload'a gelelim

for(int i=1;i<10;i++)
{
Button tus = new Button();
tus.Click += new System.EventHandler(this.tikla);
tus.ID = "tus" + i.ToString();
tus.Text = "Tus " + i.ToString();
PlaceHolder1.Controls.Add(tus);


Literal lt = new Literal();
lt.Text = "
";
lt.ID = "lit" + i.ToString();
PlaceHolder1.Controls.Add(lt);
}

kodumuz yukarıda biraz açıklayacak olursak. for döngümüz içinde buton sınıfından bir nesne

oluşturuyoruz. bu nesnenin click özelliğine kendi yazdığımız tıkla fonksiyonunu atıyoruz. id'sini ve

text'ini fordaki i değişkenimizle, sıralı oalcak şekilde atıyoruz (tus1,tus2..) evet butonumuz oluştu.

şimdi bunu sayfamızda görebilmek için placeholder nesnemize atalım.

2. bölümde aynı işlemleri literal için yapıyoruz. alt satıra atmak için literal textine
br atıyoruz.hiç dinamik kontrol kullanmayanlara örnek olması için. bir de literal oluşturdum.

Şimdi fonksiyonumuza geçelim. bu fonksiyon yukarıda butonlara atadığımız kendi yazacağımız fonksiyon.

static butonlarda butona çift tıklayınca çıkan onclick fonksiyonundan pek farklı değil.


protected void tikla(object sender, EventArgs e)
{


System.Web.UI.WebControls.Button dugme = sender as System.Web.UI.WebControls.Button;


if (dugme != null)
{
Response.Write(dugme.Text+" basıldı");


//buton numarasını alabiliriz. veri tabanındaki id'yi atadıysak querystring yerine

kullanabiliriz.
int id = Convert.ToInt32(dugme.ID.Replace("tus",""));

}


}

kısaca açıklayacak olursak.normal click fonksiyonundan farklı olarak biz bu fonksiyonu for döngüsü

içinde 10 tane butona atatık. ve hangi butona tıklandığına ilişkin bir kod yazacağız fonksiyona.

sender objnesnesizim butonumuzu temsil ediyor bu zaten static fonksiyonlarda da var. ama bunu yine

System.Web.UI.WebControls sınıfından butona çevirmeden direkt kullanamıyoruz.(fonksiyon içindeki ilk kod

bunu yapıyor) dugme nesnesine atadık.

2. kodda null olmadığından emin olalım her ihtimale karşı önlemimizi alalım. evet artık hangi butona

tıklandığını bulmuş olduk. bu butonun text'ini yazdıyoruz. buton id'sindeki tus kelimesini replace

ederek de numarasını buluyoruz.

bu numara bulma işlemi eğer for değilde bir db'den çekilen kayıtla oluşturulmuş nesnelerde (veri

tabanındaki kayıt id'si atanmışsa) direkt bize id'yi verir. evet kısa da olsa ajaxla uğraştığım

zamanlarda geliştirdiğim bana çok kolaylık sağlamış bir koddur.

Ajaxla uğraşanlar bilirler request işlemlerini kullanmak istediğimizde başımız belaya girer :) her

sayfaya query string de gönderemeyiz. çünkü yenilenmemesi gerekir.yada link olması gerekir.

işte bu gibi durumlarda bu kod kurtarıcınız olacakatır.
id göndermeden işlem yapmak isterseniz. yine server ve asp.net tabanlı güzel bir çözümdür.

aynı zamanda birden çok butonu tek fonksiyondan kontrol etmek isterseniz yine buradan

faydalanabilirsiniz.

Kaynak: http://www.kodaman.org/yazi/asp-net-dinamik-event-handler