29 Ocak 2010 Cuma

disable textbox renk değiştirme

 enable =false (disable olmuş) olan bir textbox kontrolünün rengini nasıl değiştiririz ?

Public Class VisualTextbox
Inherits TextBox

Public Sub New()
' Initialise the class
MyBase.New()
End Sub

Public Shadows Property Enabled() As Boolean
Get
Return MyBase.Enabled
End Get
Set(ByVal Value As Boolean)
' Switch draw styles if disabled
Me.SetStyle(ControlStyles.UserPaint, Not Value)
' Set the underlying value
MyBase.Enabled = Value
End Set
End Property

Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)

' Draw the bg in
e.Graphics.FillRectangle(New SolidBrush(Color.LightGray), Me.ClientRectangle)

' Draw the appropriate text in using the fore color
e.Graphics.DrawString(Me.Text, Me.Font, New SolidBrush(Me.ForeColor), -1, 1)
End Sub

End Class

11 Aralık 2009 Cuma

Jquery Visual Studio 2008 Intellisense

Visual Studio 2008 de Jquery için Intellisense kazandırmak mümkün.

1.Adım : Visual Studio 2008 Service pack 1 kur
2.Adım :Intellisense Destek Dosyasını Kur (VS 2008 Patch KB958502 ) Ayrıntılı bilgi
3.Adım :jQuery-vsdoc.js file Dosyasını indir



jquery-vsdoc.js ve  jquery.js dosyalarını pronize ekeyin.




8 Aralık 2009 Salı

T-SQL Haftanın gününü veren fonksiyon

MS SQL üzerinde haftanın gününü veren fonksiyona ihtiyaç duyanlar için ;

CREATE FUNCTION [dbo].[udf_DayOfWeek](@dtDate DATETIME)
RETURNS VARCHAR(10)

AS
BEGIN
DECLARE @rtDayofWeek VARCHAR(10)
SELECT @rtDayofWeek = CASE DATEPART(weekday,@dtDate)
WHEN 1 THEN 'Sunday'
WHEN 2 THEN 'Monday'
WHEN 3 THEN 'Tuesday'
WHEN 4 THEN 'Wednesday'
WHEN 5 THEN 'Thursday'
WHEN 6 THEN 'Friday'
WHEN 7 THEN 'Saturday'
END
RETURN (@rtDayofWeek)
END

fonksiyonun kullanımı ise şöyle ;
SET @dayname =dbo.udf_DayOfWeek(GETDATE())

datatime tarih ve saat yerdeğiştirmesi

Yakın bir zamanda çok farklı bir seneryoyla karşılaştım ve çözümümü paylaşmak istedim seneryo şöyle ; Microsoft SQL Server üzerindeki bir tabloda
VallTime , VallDate isimli  iki sutun vardı ve değerleri  2009-11-09 12:23:00.000  ve
2009-10-09 10:12:10.000  olan verilerin birinin tarih bilgisiyle diğerinin saat bilgisini alarak datetime biçiminde birleştirmekti. özetle ;
2009-11-09 12:23:00.000     +   2009-10-09 10:12:10.000   = 2009-10-09 12:23:00.000

birleştirmek için gerekli olan T-SQL

CREATE FUNCTION [dbo].[COMBINE_DTM]
(
@inDATE_DTM AS datetime,
@inTIME_DTM AS datetime
)
RETURNS datetime
AS
BEGIN
RETURN
CAST((ROUND(CAST(@inDATE_DTM AS float), 0, 1)) AS float) +
(CAST(@inTIME_DTM AS float) - (ROUND(CAST(@inTIME_DTM AS float), 0, 1)) + .00000001)
END
 
Bu Scaler-Valued fonksiyonun kullanımı ise şöyle ;
 
declare @calltime datetime , @calldate datetime , @Combinedatetime datetime
select @calldate = CallDate,@calltime = CallTime from tbJobs where JobID = @JobID and deleted = 0;

set @Combinedatetime= dbo.COMBINE_DTM(@calldate,@calltime)

7 Aralık 2009 Pazartesi

MSSQL Cursor Kullanımı

Cursor çekitiğimiz sorgu içerisinde satır satır dönerek işlemlerimizi yapmamızı sağlayan bir yapıdır.
Altaki örnek de kullanıcıların mail adresleri ile ilgili tabloya tek tek mail gönderilmesi sağlanmakta.
önce işlem yapacağımız veritabanını oluşturalım.
GO
CREATE TABLE EmailList
 (
id smallint identity(1,1),
email varchar(500),
name nvarchar(500),
emailsent bit default 0,
sentdate datetime
)

sonra veri girişi yapalım
INSERT INTO EmailList (email, name) VALUES ('emailaddress1@test.com', N'Darth Vader')
INSERT INTO EmailList (email, name) VALUES ('emailaddress2@test.com', N'Bill Gates')
INSERT INTO EmailList (email, name) VALUES ('emailaddress3@test.com', N'Katy Perry')

daha sonra procedure yazalım .
CREATE PROC SendEmailCursor


AS


-- eMail Variables --
DECLARE @email_subject nvarchar(1000)
DECLARE @email_body nvarchar(max)


SET @email_body = N'Welcome to our Community'
SET @email_body = N'Dear {0},
We''re glad to see you.'
-- eMail Variables (END) --


-- Cursor Variables --
DECLARE @Id smallint;
DECLARE @email varchar(500);
DECLARE @name nvarchar(500);
-- Cursor Variables (END) --


DECLARE @pbody nvarchar(max)


------------------ CURSOR eMail --------------------
DECLARE eMailCursor CURSOR FAST_FORWARD FOR
SELECT
id, email, name
FROM EmailList
WHERE emailsent = 0


OPEN eMailCursor


FETCH NEXT FROM eMailCursor INTO @Id, @email, @name


WHILE @@FETCH_STATUS = 0
BEGIN
---
SET @pbody = REPLACE(@email_body, '{0}', @name)


EXEC msdb.dbo.sp_send_dbmail
@profile_name = N'TBS',
@recipients = @email,
@subject = @email_subject,
@body = @pbody,
@body_format = 'HTML'


UPDATE EmailList SET emailsent = 1, sentdate = GetDate() WHERE id = @Id
---
FETCH NEXT FROM eMailCursor INTO @Id, @email, @name
END


CLOSE eMailCursor
DEALLOCATE eMailCursor
------------------ CURSOR eMail (END) --------------------


GO


ve çalıştıralım

EXEC SendEmailCursor


Cursor ile ilgili bilgi;
FETCH FIRST komutu ile ilk satıra dönüp FETCH LAST komutu ile de son satıra gidebiliriz. SQL SERVER en son işletilen FETCH komutunun durumunu @@FETCH_STATUS degişkeninde tutar. FETCH komutu başarılı ise 0, başarısız ise -1, FETCH edilen satır bulanmıyorsa da -2 döner.