GridView RowDataBound da ImageButton larla popup ve confirm işlemi

04 Temmuz 2012


Asp.NET GridView CommandField için OnClientClick Methodu

27 Haziran 2012


CommandName'lerinden yakaladığımız ImageButton'lara OnClientClick property sini kullanarak mesaj verdirme işlemi aşağıdaki gibi sonuçlanmakta.











DataView ilw sqlDataSource dan veri okuma - örnek kod

08 Haziran 2012

                 sdsS1ASponsor.DataBind();

                DataView dv = (DataView)sdsS1ASponsor.Select(DataSourceSelectArguments.Empty);
                string RS = "";

                for (int i = 0; i < dv.Table.Rows.Count; i++)
                {

                    RS = dv.Table.Rows[i]["Tanim"].ToString();

                    if (RS == "B1")
                    {
                        ltrlB1.Text = dv.Table.Rows[i]["ResimIcerik"].ToString().Replace("<p>", "").Replace("</p>", "");
                    }
                    else if (RS == "B2")
                    {
                        ltrlB2.Text = dv.Table.Rows[i]["ResimIcerik"].ToString();
                    }
                    else if (RS == "B3")
                    {
                        ltrlB3.Text = dv.Table.Rows[i]["ResimIcerik"].ToString();
                    }
                    else if (RS == "R5")
                    {
                        ltrlR5.Text = dv.Table.Rows[i]["ResimIcerik"].ToString().Replace("<p>", "").Replace("</p>", "");
                    }
                }

Asp.Net Kontrollerinde Eval() akışı

09 Aralık 2011

01.05.2009 tarihinde oğuzhan tarafından yazıldı.

Huh! başlık enteresan oldu ama konu çok enteresan değil. Kendime bir CheetSheet yapayım diyorum hatırlaması kolay olsun diye, neyse konuya girelim..

Asp.Net kontrollerini kullanırken DataBinding olayın da, gelen verinin belirli koşullara göre bind olmasını isteyebilirsiniz.  Böyle durumlarda Eval() metodunu kullanarak kontrolün istediğimiz özelliğine (attributes) belirli bir koşula göre değer atayabilme ihtiyacımız doğar. Aşağıda Eval() metodu ile nasıl koşul kullanabiliyoruz bildiğim kadarı ile örneklerini veriyorum.

Olayı tam çözmek için
<%# BirSeylerYap(Eval("deger")) %>
       private string BirSeylerYap(string Deger)
        {
            if (Deger.Equals("bune"))
                return "beyaz";
            else
                return "siyah";
        }
Kullanışlı bir örnek.
<%#Eval("deger").Equals("bune") ? "beyaz" : "siyah"%>
Object türünden.
<%#Eval("deger") ?? "beyaz"%>
if..else..else if gibi ise.
            <%#Eval("deger").Equals("A") ? "beyaz" : 
                    Eval("deger").Equals("B")? "siyah":
                    Eval("deger").Equals("C") ? "yesil":
                                                    "sari"%>
bu kadar ;)

A simple makro in Excel - listing the names of png files in the folder

05 Ekim 2011

Sub Makro1()
Dim MyFolder As String, MyFile As String
Dim i As Long
MyFolder = "E:\works\ufuk\ufukAksesuar01\galeri\big\stopper"
MyFile = Dir(MyFolder & Application.PathSeparator & "*.png", vbDirectory)
Do While MyFile <> ""
Cells(i + 1, 1) = MyFile
i = i + 1
MyFile = Dir
Loop

End Sub

SqlDataSource: Getting @@Identity after Insert

14 Temmuz 2011

Yesterday I was developing a simple form using a SqlDataSource to INSERT or UPDATE when saving the form. The form consisted of a few controls and a button. In the case of a new item, on clicking the save button I am executing SqlDataSource1.Insert(). For an existing item, I’m using an “ID” parameter on the query string which in turn is used by the UPDATE command. So I need the ID of the row I’ve just inserted to allow the user to update the form. I should mention my table has a column called “ID” of type int which is specified as the auto-incrementing identity column.

I put together the form in less than 30 minutes and then spent twice that time trying to find the solution you are reading now. I was sorely tempted to ditch the DataSource as this is straightforward when you’re executing your SQL commands directly in the code-behind. But I was curious and persevered until I found the answer:

Firstly, let me describe how to set up the DataSource to do the insert. The InsertCommandType is “Text”. For the InsertQuery click the button to open the Command and Parameter dialog. Use the query builder, if you like, to create your insert statement. After the insert statement append “SET @Identity = @@Identity;” so our insert command looks something like this:

INSERT INTO TestTable (TestCol) VALUES (@TestValue); SET @Identity = @@Identity;

The statement above has 2 parameters. One is TestValue we’re setting in to TestCol. The other is Identity which will be the ID of the column we insert. Click Add Parameter and type “TestValue”, Parameter source is control, and ControlID is a textbox. Add another parameter called “Identity”. This time click Show Advanced Properties, set Direction to “Output” and Type to “int” (leaving Parameter source as “None”).

Now the trick is catching the DataSource at the right time so that our output parameter will have a value. Don’t mistake the DataSource.InputParameters as the place to look as this merely describes the parameters we’ve configured above. To actually see the parameters after execution you need to catch the OnInsertedevent. Here we have SqlDataSourceStatusEventArgs which contains the command and its parameters after the command has executed.

protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e)

{

//Read the value of the @Identity OUTPUT parameter

string sID = e.Command.Parameters["@Identity"].Value.ToString();

//Display new ID

Label1.Text = sID;

}

So with the ID known I can now redirect the user to "page.aspx?ID=" + sID such that they may update the form.


Alıntıdır...

Google Like Search TextBox By Rahul Garad

25 Mart 2011

örnek makale için buraya tıklayınız.

FETCH (Transact-SQL) SQL Server 2008

Retrieves a specific row from a Transact-SQL server cursor.
Topic link iconTransact-SQL Syntax Conventions

FETCH 
          [ [ NEXT | PRIOR | FIRST | LAST 
                    | ABSOLUTE { n | @nvar } 
                    | RELATIVE { n | @nvar } 
               ] 
               FROM 
          ] 
{ { [ GLOBAL ] cursor_name } | @cursor_variable_name } 
[ INTO @variable_name [ ,...n ] ] 

NEXT

Returns the result row immediately following the current row and increments the current row to the row returned. If FETCH NEXT is the first fetch against a cursor, it returns the first row in the result set. NEXT is the default cursor fetch option.
PRIOR
Returns the result row immediately preceding the current row, and decrements the current row to the row returned. If FETCH PRIOR is the first fetch against a cursor, no row is returned and the cursor is left positioned before the first row.
FIRST
Returns the first row in the cursor and makes it the current row.
LAST
Returns the last row in the cursor and makes it the current row.
ABSOLUTE { n| @nvar}
If n or @nvar is positive, returns the row n rows from the front of the cursor and makes the returned row the new current row. If n or @nvar is negative, returns the row n rows before the end of the cursor and makes the returned row the new current row. If n or @nvar is 0, no rows are returned. n must be an integer constant and @nvar must be smallint, tinyint, orint.
RELATIVE { n| @nvar}
If n or @nvar is positive, returns the row n rows beyond the current row and makes the returned row the new current row. If n or @nvar is negative, returns the row n rows prior to the current row and makes the returned row the new current row. If n or @nvar is 0, returns the current row. If FETCH RELATIVE is specified with n or @nvar set to negative numbers or 0 on the first fetch done against a cursor, no rows are returned. n must be an integer constant and @nvar must be smallint, tinyint, orint.
GLOBAL
Specifies that cursor_name refers to a global cursor.
cursor_name
Is the name of the open cursor from which the fetch should be made. If both a global and a local cursor exist with cursor_name as their name, cursor_name to the global cursor if GLOBAL is specified and to the local cursor if GLOBAL is not specified.
@ cursor_variable_name
Is the name of a cursor variable referencing the open cursor from which the fetch should be made.
INTO @variable_name[ ,...n]
Allows data from the columns of a fetch to be placed into local variables. Each variable in the list, from left to right, is associated with the corresponding column in the cursor result set. The data type of each variable must either match or be a supported implicit conversion of the data type of the corresponding result set column. The number of variables must match the number of columns in the cursor select list.
If the SCROLL option is not specified in an ISO style DECLARE CURSOR statement, NEXT is the only FETCH option supported. If SCROLL is specified in an ISO style DECLARE CURSOR, all FETCH options are supported.
When the Transact-SQL DECLARE cursor extensions are used, these rules apply:
  • If either FORWARD_ONLY or FAST_FORWARD is specified, NEXT is the only FETCH option supported.
  • If DYNAMIC, FORWARD_ONLY or FAST_FORWARD are not specified, and one of KEYSET, STATIC, or SCROLL are specified, all FETCH options are supported.
  • DYNAMIC SCROLL cursors support all the FETCH options except ABSOLUTE.
The @@FETCH_STATUS function reports the status of the last FETCH statement. The same information is recorded in the fetch_status column in the cursor returned by sp_describe_cursor. This status information should be used to determine the validity of the data returned by a FETCH statement prior to attempting any operation against that data. For more information, see @@FETCH_STATUS (Transact-SQL).
FETCH permissions default to any valid user.

A.Using FETCH in a simple cursor

The following example declares a simple cursor for the rows in the Person.Contact table with a last name that starts with B, and uses FETCH NEXT to step through the rows. The FETCH statements return the value for the column specified in DECLARE CURSOR as a single-row result set.

USE AdventureWorks
GO
DECLARE contact_cursor CURSOR FOR
SELECT LastName FROM Person.Contact
WHERE LastName LIKE 'B%'
ORDER BY LastName

OPEN contact_cursor

-- Perform the first fetch.
FETCH NEXT FROM contact_cursor

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
   -- This is executed as long as the previous fetch succeeds.
   FETCH NEXT FROM contact_cursor
END

CLOSE contact_cursor
DEALLOCATE contact_cursor
GO

B.Using FETCH to store values in variables

The following example is similar to example A, except the output of the FETCH statements is stored in local variables instead of being returned directly to the client. The PRINT statement combines the variables into a single string and returns them to the client.

USE AdventureWorks
GO
-- Declare the variables to store the values returned by FETCH.
DECLARE @LastName varchar(50), @FirstName varchar(50)

DECLARE contact_cursor CURSOR FOR
SELECT LastName, FirstName FROM Person.Contact
WHERE LastName LIKE 'B%'
ORDER BY LastName, FirstName

OPEN contact_cursor

-- Perform the first fetch and store the values in variables.
-- Note: The variables are in the same order as the columns
-- in the SELECT statement. 

FETCH NEXT FROM contact_cursor
INTO @LastName, @FirstName

-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN

   -- Concatenate and display the current values in the variables.
   PRINT 'Contact Name: ' + @FirstName + ' ' +  @LastName

   -- This is executed as long as the previous fetch succeeds.
   FETCH NEXT FROM contact_cursor
   INTO @LastName, @FirstName
END

CLOSE contact_cursor
DEALLOCATE contact_cursor
GO

C.Declaring a SCROLL cursor and using the other FETCH options

The following example creates a SCROLL cursor to allow full scrolling capabilities through the LAST, PRIOR, RELATIVE, and ABSOLUTE options.

USE AdventureWorks
GO
-- Execute the SELECT statement alone to show the 
-- full result set that is used by the cursor.
SELECT LastName, FirstName FROM Person.Contact
ORDER BY LastName, FirstName

-- Declare the cursor.
DECLARE contact_cursor SCROLL CURSOR FOR
SELECT LastName, FirstName FROM Person.Contact
ORDER BY LastName, FirstName

OPEN contact_cursor

-- Fetch the last row in the cursor.
FETCH LAST FROM contact_cursor

-- Fetch the row immediately prior to the current row in the cursor.
FETCH PRIOR FROM contact_cursor

-- Fetch the second row in the cursor.
FETCH ABSOLUTE 2 FROM contact_cursor

-- Fetch the row that is three rows after the current row.
FETCH RELATIVE 3 FROM contact_cursor

-- Fetch the row that is two rows prior to the current row.
FETCH RELATIVE -2 FROM contact_cursor

CLOSE contact_cursor
DEALLOCATE contact_cursor
GO

SQL SERVER’DA VERİLERİ SAYFALAMAK

by Halil İbrahim ARAÇ 27. Eylül 2009 21:57
 
Veritabanından gelen verileri listelediğiniz bir örnekte eğer gelen veri sayısı çok fazla ise sayfalama yapmanız gerekir. Aksi halde 10000 kayıtlık bir veri yığınını veritabanından bir seferde çekerek  DataGrid ile göstermeye çalıştığınızda bu sayfanın yüklenme süresi çok uzun olacaktır.
Bazılarımızın aklına şöyle bir soru gelebilir. Ben GridView’in sayfalama özelliğini etkinleştiririm ve her sayfada 10 kayıt görüntülerim. Bu sayede sayfanın yoğunluğunu azaltırım. Bu çoğu kişinin düştüğü bir yanlışlıktır. Çünkü GridView’in sayfalamasını etkinleştirseniz bile tüm veri veritabanından çekilecektir. Peki o halde tüm veri Grid’ e bağlandığı halde GridView sayfalamayı nasıl gerçekleştiriyor da sizin istediğiniz sayfa numarası aralığındaki veriyi görüntüleyebiliyor?
Siz GridView’e veriyi bağlandığınızda bağlanan tüm veri sayfa içerisinde Viewstate içerisinde saklanıyor ve başka bir sayfa için Grid’in sayfa numarasına tıkladığınızda ViewState PostBack ile sayfaya taşınıyor ve bu veri içerisinde istediğiniz aralıkta yer alan kayıt yığını görüntülenebiliyor.
Ancak bu 10000 verilik bir kayıt seti için bu 10000 satırın sayfa her pospback edildiğinde Viewstate ile taşınması demektir. Çünkü sizin tüm kayıtları çekmek için veritabanından yaptığınız SQL sorgulaması muhtemelen “select * from Sozler” şeklinde bir sorgudur ve bu sorgunun sonucunda da pek tabii Sozler tablosunda yer alan tüm sözler getirilecektir. Eğer Sozler tablosunda yer alan tüm kayıtları değil de bizim belirlediğimiz aralıktaki (örneğin 20 ve 30. kayıt arasındaki tüm kayıtlar) kayıtları getirebilirsek çok daha kullanışlı bir sorgu yazabilmiş oluruz ve o zaman yukarıda bahsettiğimiz Grid sayfalama problemini de çözebiliriz.
Aslında yukarıdaki satırları yazarken aklıma MySql veritabanı üzerinde sorgu yazdığım günler geldi. MySql sorgularında tam bu ihtiyacımızı karşılayabilen bir sorgu ifadesi mevcuttu. O da LIMIT komutuydu. Kullandığımız veritabanı yönetim sistemi MySql olsaydı  Sozler tablosunda yer alan kayıtların 1 ve 5. kayıtlar arasındaki verileri çekmek için “select * from Sozler orderby SozID LIMIT 1,5” sorgusunu kullanmamız yeterli olurdu. 5 ve 10. kayıtlar arasındaki verileri getirmek için “select * from Sozler orderby SozID LIMIT 5,10” ifadesi yeterli olacaktı. Gördüğünüz gibi MySql’de bu sorun çok kolay bir şekilde aşılabiliyordu. Size düşen sayfanın her postback olduğunda hangi sayfanın talep edildiğini öğrenmek ve bu LIMIT ifadesine sayfa numarasına bağlı olarak değişen bir değişkeni bağlayarak Grid’e bu sql ifadesin sonucunda gelen veriyi bağlamaktır.
Böyle bir ifadenin Sql Server’da karşılığının olmaması çok garip olurdu. Evet garip olurdu diyorum çünkü SqlServer da birçok kullanıcının yoğun olarak kullandığı bir veritabanı yönetim sistemidir.Geçenlerde bu konu üzerine araştırma yaparken bu işin Sql Server’da nasıl yapılacağı üzerine makaleler okuyordum ve ilginç bir SqlServer ifadesi buldum. Bu makalemde sizinle onu paylaşmak istedim. Örneğimde kullanacağım veritabanım SozlerDB isimli veritabanı olacak. Bu veritabanı Asenkron Web Servisi Çağrılması üzerine yazmış olduğum makalemde yer alan veritabanıdır.  Bu veritabanımın içerisinde Sozler isimli bir tablom var ve içerisinde özlü sözler kaydedilmiş durumda. Tablomun görüntüsü aşağıdaki gibidir.

RowNumber

Bize sayfalama imkanı sunan fonksiyonumuz ROW_NUMBER() isimli fonksiyondur. Bu fonksiyon her bir kaydın kaçıncı satırda olduğunu veren bir fonksiyondur. Örneğin her bir kaydın satır numarasını veren bir sorgu yazalım.

select ROW_NUMBER() OVER(ORDER BY SozID) AS RowNumber,* from Sozler

Sorguyu çalıştırdığımızda aşağıdaki çıktıyı elde ederiz.

Sql Server Sayfalama

Bu ekran görüntüsünden aslında ROW_NUMBER() fonksiyonun ne iş yaptığını anlamışsınızdır. Bu fonksiyon OVER ifadesi ile beraber çalışır ve OVER ile sıralamanın esas alınacağı kolonu belirtmeniz gerekir. Yukarıdaki sorguyu eğer aşağıdaki gibi yazarsak sonuç çok daha farklı olacaktır.


select ROW_NUMBER() OVER(ORDER BY SozID desc) AS RowNumber,* from Sozler

Sorgu sonucu aşağıdaki gibi olacaktır.

ROW_NUMBER()

Bu sefer OVER ifadesinde ID’ler tersten sıralandığı için satır numaraları da bu sıraya göre verilmiştir. İşte biz belirli bir aralıkta yer alan verileri sıralamak için bu RowNumber isimli kullanmaya çalışağız. Yani 3 ve 8. kayıtlar arasını getirebilmek için RowNumber kolonunun değeri 3 ve 5 arasında olanlar şeklinde bir şart koyacağız.
Daha esnek olması için biz bu değerleri dışarıdan parametre olarak alan bir prosedür yazmaya çalışalım.

CREATE proc [dbo].[VERIGETIR]
(
@bas int,
@son int
)
as
begin

with kayitseti as
(
      select ROW_NUMBER() OVER(ORDER BY SozID) AS 'RowNumber',* from Sozler
)

select * from kayitseti where RowNumber between @bas and @son

end

Bu prosedürü aşağıdaki değerlerle çalıştırdığınızda

exec VERIGETIR 3,8

Aşağıdaki sonucu elde edeceğiz.

OVER

Bu prosedürde önce RowNumber kolonunu içeren bir kayıtseti oluşturulmuş ve daha sonra bu kayıt seti içerisinde istediğimiz aralığı sorgulayan bir select ifadesi kullanılmıştır. Burada kayitseti dediğimiz veri kümesini aslında temp bir tablo gibi düşünebilirsiniz.
Yukarıdaki prosedürü aşağıdaki gibi de yazabilirsiniz.

ALTER proc [dbo].[VERIGETIR]
(
@bas int,
@son int
)
as
begin

select * from(SELECT ROW_NUMBER() OVER(ORDER BY SozID) AS RowNumber,* FROM Sozler) as kayitseti
where RowNumber between @bas and @son

end

Gene 3 ve 8 değerleri ile prosedürü çalıştırdığınızda aynı sonucu elde edeceksiniz. Bu sefer RowNumber kolonunu da içeren tüm veri kümesi as ifadesi ile bir kayıt seti olarak elde edilmiştir.
Böylece MySql’de yer alan LIMIT ifadesini karşılayacak bir prosedür yazmış olduk. Böylece bu prosedürü kullanarak verileri çeken bir Grid uygulamasında tüm veriyi değilde görüntülenecek olan sayfaya ait verileri veritabanından çekersiniz ki bu da ciddi bir performans artışı sağlayacaktır.
Bu makalemizin sonuna geldik. Başka makalelerde buluşmak dileğiyle hepinize iyi çalışmalar.

Örnek veritabanını indirmek için tıklayınız.(SozlerDB.bak (2,91 mb))

SQL Server 2008 de Otomatik BackUp için Job Oluşturma (Schedule)

15 Nisan 2010

SQL Server üzerinde bulunan Job (Schedule) mantığıyla bir çok işi otomatik olarak SQL Server a yaptırmak mümkün. Bu işlemlerden biride otomatik yedek aldırma. Örneğin bir job tasarlayıp her akşam gece 12.00 da database veya databaselerin yedeğini aldırabiliriz.

Örneğin, SQL Server 2008 üzerinde AdventureWorks databasenin otomatik yedeğini almak için bir job tasarlayalım.

Management Studio >> SQL Server Agent >> Jobs kısmına gelip sağ tık ile New job a geçelim.

sc1

General kısmında Name ve istediğiniz bir category i seçtikten sonra Steps kısmına geçiniz.

sc2

Steps kısmında bu job için uygulanacak adımlar tanımlanmaktadır. Yani burda birden fazla database in yedeklenmesini farklı adımlar olarak tanımlayabiliriz. Biz bu örneğimiz için sadece tek adım yani AdventureWorks ün yedeklenmesini tanımlayacağız.

Bunun için New butonuna basalım.

sc3

Resimde görüldüğü gibi alanları dolduralım. Command kısmında yazan yazı BackUp alma işlemini gerçekleştirecek T-SQL komutudur.

1 BACKUP DATABASE [AdventureWorks]
2 TO DISK = N'c:\\AdventureWorks.bak'

Gerekli alanların tamamını resimdeki gibi doldurduktan sonra OK e basıp arka ekranda Schedules kısmına gelelim.

sc4

Schedules bölümü job un hangi otomatik süreyle işleneceğinin belirleneceği bölümdür. Resimde de görmüş olduğunuz üzere günlük,haftalık,aylık istediğimiz gibi ayarlama yapabilmekteyiz. Biz bu örneğimizde sonucu hızlıca alabilmek açısından dakikada 1 seçeneğini ayarlıyoruz.

Resimde görüldüğü gibi alanları doldurduktan sonra OK e basıp arka ekranda Notifications kısmına geçelim.

sc5

Notifications kısmı, job görevini tamamladıktan sonra ilgili kişilere bilgi vermelerin ayarlandığı bölümdür. Ben bu örnek için işlem tamamlandığımda kendimi mail attırıyorum. Bu arada SQL Server 2008 de Mail Gönderme işlemi ile alakalı yazdığım yazıyı okumadıysanız okumanızı tavsiye ederim. Buradan erişebilirsiniz.

Notification larıda ayarladıktan sonra OK e basıyoruz. Job görevini almış durumda.:)

Bu arada ek bir bilgi vermek istiyorum. Bu jobların çalışabilmesi için SQL Server Agent in çalışır durumda olması gerekiyor. Bu bilgide aklınızda bulunsun.

Şimdi 3-4 dk kadar bekleyelim. Bu bekleme sırasında 3-4 defa BackUp işlemi gerçekleşecek ve mailler de mail kutumuza düşecektir.

Evet yeteri kadar bekledik. Mailimizi kontrol ettiğimizde BackUp Complete maillerinin gelmiş olduğunu görüyoruz.

sc6

sc7

Birde management studio üzerinde ki job un history sine bakalım. Bunun için Management Studio >> SQL Server Agent >> Jobs >> JobumuzunAdi kısmından sağ tık ile View History kısmını açalım.

sc8

Bu ekranda, oluşturduğumuz job un bütün tamamlanmış step history sine bakabilirsiniz.

Aklınıza takılan bir şey olursa yorum kısmından sorabilirsiniz.

İyi çalışmalar

Turgay Sahtiyan


...alıntıdır...

CASE SENSITIVE VERİTABANINDA ARAMA

31 Aralık 2009

SELECT ad, soyad
FROM b_KisiBilgileri
WHERE (UPPER(soyad) LIKE N'KENAR')


ya da

SELECT ad, soyad
FROM b_KisiBilgileri
WHERE (lower(soyad) LIKE N'kenar')

ilk sorguda db den gelen değerleri büyük harflere çevirip büyük harfli arama yapıyoruz.
ikinci sorguda da gelen değerleri küçük harflerle alıp, küçük harfli sorgu yapıyoruz.

Database diagram support objects cannot be installed...

07 Aralık 2009

EXEC sp_dbcmptlevel 'benimDB', '90';
go
ALTER AUTHORIZATION ON DATABASE:: benimDB TO "sa"
go
use [benimDB]
go
EXECUTE AS USER = N'dbo' REVERT
go

Basit Trigger Örnekleri

31 Temmuz 2009

-- Kullanıcının tablo üzerinde güncelleme yaptığında
-- değişiklik tarihi kolonunun otomatik olarak
-- güncelleme yapıldığı tarihi alınmasının sağlanması
-- için yazılan update trigger örneği

Örnek Tablo kolonları:
KisiID, ZiyaretID,DegisiklikTarihi

CREATE TRIGGER trigger_Guncellendi
ON Kisiler
for UPDATE
as

declare @id int
select @id = ziyaretID  from deleted -- güncelleme için kayıt önce deleted (silinenler)
                                                          -- tablosuna gönderilir
ardından da kayıt insert edilir

UPDATE Kisiler
SET degisiklikTarihi = getdate() --güncelleme yapıldığı tarihi db ye eklemiş olduk
WHERE ziyaretID=@id



--Kullanıcının birden fazla kayıt silmesini engellemek için yazılan bir delete trigger örneği


CREATE TRIGGER trigger_Silindi --Trigger adı
ON Kisiler --İlgili Tablo
for DELETE --Oluşturulacak trigger türü
as
declare @sayi int
select @sayi = count(*) from deleted --Silme işlemi için deleted (Silinmişler)
--tablosuna
gönderilen kayıt sayısı
if @sayi>1
begin
rollback transaction
end

Web Uygulamalarında Dataset Kullanmak

24 Haziran 2009

1.BÖLÜM

<a href="http://video.msn.com/?mkt=tr-TR&amp;playlist=videoByUuids:uuids:475b0717-bf0a-4aa6-8bf6-3d8757bff302&amp;showPlaylist=true" target="_new" title="Web uygulamalarinda dataset kullanmak">Video: Web uygulamalarinda dataset kullanmak</a>
2.BÖLÜM

<a href="http://video.msn.com/?mkt=tr-TR&amp;playlist=videoByUuids:uuids:721483a2-6c5a-4035-8199-d9c296dbfbca&amp;showPlaylist=true" target="_new" title="Web uygulamalarinda dataset kullanmak - 2">Video: Web uygulamalarinda dataset kullanmak - 2</a>
3.BÖLÜM

<a href="http://video.msn.com/?mkt=tr-TR&amp;playlist=videoByUuids:uuids:919e4508-bf9f-4a25-b329-842c020fe46a&amp;showPlaylist=true" target="_new" title="Web uygulamalarinda dataset kullanmak - 3">Video: Web uygulamalarinda dataset kullanmak - 3</a>

DataSet Kullanımına Örnek Uygulama

Sql Datetime Formatlama

09 Haziran 2009



TC Kimlik No Kontrolü

18 Mayıs 2009



ALINTIDIR...

Geçerli TC Kimlik No Kontrol - C# Windows Application 
Algoritma: 
TC Kimlik numaramız 11 basamaklı ve her bir rakamı kn ile ifade edelim(n€N) 
TC no: k1k2k3k4k5k6k7k8k9k10k11 olsun. 
tekler = k1+k3+k5+k7+k9 
çiftler = k2+k4+k6+k8     (dikkat k10 yok!) 

TC kimlik numarasının son iki basamağı (k10 ve k11) kontrol amaçlıdır. Şimdi o kontrolü 
yapmak için aşağıdaki işlemler yapılır: 

t1 = (tekler*3)+çiftler 
c1 = (10 - (t1 mod10))mod10 
t2 = c1 + çiftler 
t3 = (t2*3)+tekler 
c2 = (10 - (t3 mod10))mod10 

Eğer, 
c1 = k10 (yani Tc nonun 10.basamağı) ve c2=k11 (yani son basamak) 
ozaman bu TC kimlik numarası geçerlidir denir. 

Not bu C# kodunu web uygulaması vs yaparken de kullanabilrsiniz(messageBoxları çıkarmanız gerekebilir). 

Numan GÖÇERİ

DataList içindeki DropDownList’in Value’sunu SelectedIndexChange'de alma

28 Nisan 2009


Senaryoda bir DataList'imiz olsun. O DataList'in içinde de DropDownList'imiz olsun. DropDownList'in SelectedValue'sunu yakalamak için aşağıdaki kodu yamamız yeterli olur.

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownList ddl = sender as DropDownList
string deger = ddl.Items[ddl.SelectedIndex].Value; 
}


DropDownList ve Validation Conrol

27 Nisan 2009


DropDownList
'imizde bir alanın muhakkak seçilmesini ve seçilmediği taktirde uyarı vermesini istemiyorsak, DropDownList'in  "
Initial Value" özelliğinden faydalanabiliriz. 




Zaman zaman bilgilendirmek ve dikkati çekmek için DropDownList'lere "Seçiniz.." vs gibi ibareler ekleriz. Seçili bir alan olmadığı taktirde uyarı göstermesini istiyorsak, bir  RequiredFieldValidator ekleyelim, "Control to validate" özelliğine de muhakkak şeçili geçerli bir alanın olmasını istideğiniz DropDownList'i bağlayalım. Initial Value suna "Seçiniz.." itemının value sunu yazalım.

Bunu yapmakla, "Seçiniz.." dışında bir item seçilmediği taktirde uyarı gözükmesini sağlayabiliriz.

İyi Çalışmalar.


CETURK Java Teknoloji Günleri - Kıbrıs

13 Nisan 2009

CETURK Java Teknoloji Günleri - Kıbrıs         11.04.2009

Bugüne kadar çok farklı konu ve teknoloji ile ilgili yaptığı ücretsiz etkinliklerle sektörünün gelişmesine katkıda bulunan CETURK etkinliklerine devam ediyor.

İstanbul'da IBMMicrosoftYıldız Teknik ÜniversitesiBahçeşehir Üniversitesi ve özel bir çok kurumda ücretsiz etkinlikler düzenleyen CETURK, 2009 yılında "CETURK Anadolu Bilişim Turu" başlıklı organizasyonda ülkemizin 7 bölgesinde en az 1 kere bilişim etkinliği hedeflemektedir. CETURK Anadolu Bilişim Turu 3 Ocak 2009'da Ankara'da Çankaya Üniversitesi'nde yapılan Java Teknolojileri Etkinliği ile başladı. Elazığ'ta Fırat Üniversitesi Atatürk Kültür Merkazi'nde yapılan "CETURK Yazılım Mimarisi Tasarımı Günü" etkinliği ile devam etti. 

CETURK Anadolu Bilişim Turu'nun 3. Durağı Kıbrıs... 
Doğu Akdeniz Üniversitesi Yazılım Kulübü işbirliği ile 11 ve 12 Nisan'da "CETURK Java Teknoloji Günü – Kıbrıs" etkinliği gerçekleşiyor. Etkinliğe 1 Almanya'dan, 2 İstanbul'dan ve 2 Ankara olmak üzere toplam 5 konuşmacı katılıyor.

  • Furkan Horasan - Volantis
  • Kenan Sevindik - Spring (Acegi) security framework
  • Mehmet Gursul - Zihin Haritası(Mind Map) yöntemi ile çalışmak
  • Özcan Acar - Java ile yüksek performanslı web platformlarının oluşturulması

Etkinliğe katılım her zamanki gibi ücretsiz olacak. Ayrıca her zaman olduğu gibi etkinliğe katılan kişilere çekiliş ile kitap hediye edilecek ve katılım sertifikası verilecek. Etkinliğe katılamayanlar için video kaydı yapılarak CETURK.TV'de yayınlanacak.


ETKİNLİK DETAYLARI
Etkinlik Konusu :CETURK Java Teknoloji Günleri - Kıbrıs
Etkinlik Türü :Workshop
Kontenjan :200
Etkinlik Tarihi - Saati :11.04.2009 -- 11.04.2009 ( 13 - 16.30) ve 12.04.2009 ( 10:30- 16:00)
Süre :2 Gün
Etkinlik Yeri :Doğu Akdeniz Üniversitesi - Mavi Salon -  Kıbrıs

CETURK TV

 

ETKINLIK IÇERİĞİ
11 Nisan : Cumartesi ( 13.00-16.30)
  • Mehmet ACA- CETURK Tanıtımı
  • Furkan Horasan - Volantis
12 Nisan Pazar ( 10.30- 16.00)
  • Mehmet ACA- CETURK Tanıtımı
  • Kenan Sevindik - Spring (Acegi) security framework
  • Mehmet Gursul - Zihin Haritası(Mind Map) yöntemi ile çalışmak
  • Özcan Acar - Java ile yüksek performanslı web platformlarının oluşturulması




ETKİNLİK HEDİYEMİZ

Etkinliğe katılan 3 kişiye, ayrıca bu etkinlik haberini kişisel blogunda/sitesinde duyurup daha fazla kişinin faydalanması için bize destek olan 4 kişiye çekilişle Özcan Acar'ın aşağıdaki kitabından hediye edilecektir.
Özcan Acar'a kitap desteği için teşekkür ederiz.