Category: Programlama


Crystal Reports (v13) Visual Studio 2010

Yaklaşık bir seneden beri merakla beklediğim Crystal Reports’un Visual Studio 2010 için olan sürümü sonunda dağıtım sürümüne ulaştı. Yeniliklerden bazıları şöyle:

  • WPF için görüntüleyici desteği (WPF based Crystal Reports Viewer control)
  • Basitleştirilmiş paket
  • Adobe Flash desteği

Crystal Reports v13 Visual Studio 2010

Benim testlerime göre:

  • Raporlar daha hızlı yüklenmekte ve beklemeyi minimuma indirmekte.
  • Görüntüleme dili olarak Türkçe desteği eklenmiş.
  • Rapor boyutu olarak kullanıcı tanımlı boyut eklenmiş (tam test edemedim)

Crystal Reports’un yeni versiyonunu şuradan indirebilirsiniz.

Bugün geliştirmeler için SQL Server 2008 Enterprise kurulumu yaparken SQL Server 2005 Express Tools hatası aldım. Hatanın detayı:

Checks whether SQL Server 2005 Express Tools are installed.

The SQL Server 2005 Express Tools are installed. To continue, remove the SQL Server 2005 Express Tools.

Daha önde SQL 2005 kurulu idi fakat bunu kaldırmak istemediğimden ve kaldıracak böyle bir kurulum olmadığından birazcık araştırma yaptım ve sorunun kısa yoldan çözümünü buldum.

x64 sistemler için:
Registry’den HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server\90 ve HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90 adlı kaydın adını değiştirin. (90old gibi)

x86 sistemler için de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90 adlı kaydın adını değiştirin.

Kaynaklar:

Cannot install RC0. Must remove SQL2005 Express tools. Huh?

C# ile metin sıralamalarını değiştirme

Veritabanından çektiğim kategori navigasyonu için tekrardan veritabanı işlemleri yapmamak adına pratik bir fonksiyon yazayım dedim. Fonksiyon Ürünler » Çikolatalar » Alpella gibi bir metinsel ifadeyi Alpella « Çikolatalar « Ürünler şekline çevirmekte kullanılabilir. Stackoverflow’da sorduğum soruya daha kısa alternatif ise Linq sınıfını kullanan bir kod tavsiye edildi. Onu da altta veriyorum.


public static string ReverseString(string input, string separator, string outSeparator)
{
string result = String.Empty;
string[] temp = Regex.Split(input, separator, RegexOptions.IgnoreCase);
Array.Reverse(temp);
for (int i = 0; i < temp.Length; i++)
{
result += temp[i] + " " + outSeparator + " ";
}
return result;
}

Not: System.Text.RegularExpressions sınıfını kullanır.

Stackoverflow alternatifi:


public static string ReverseString(string input, string separator, string outSeparator)
{
return String.Join(" " + outSeparator + " ", input.Split(new[] { " " + separator + " " }, StringSplitOptions.RemoveEmptyEntries).Reverse().ToArray());
}

Not: System.Linq sınıfını kullanır.

Ayrıca stackoverflow tavsiyelerine göre fonksiyonu StringBuilder ile kullanmak uzun metinsel ifadelerde performans sağlayacaktır:


public static string ReverseString(string input, string separator, string outSeparator)
{
StringBuilder result = new StringBuilder();
string[] temp = Regex.Split(input, separator, RegexOptions.IgnoreCase);
Array.Reverse(temp);
for (int i = 0; i < temp.Length; i++)
{
result.Append(temp[i] + " " + outSeparator + " ");
}
return result.ToString();
}

Asp.Net ile Türkçe e-posta adresi doğrulama

Asp.Net’te normal olarak bir metin kutusuna e-posta adresi doğrulaması eklerseniz (regularExpressioVlidator) hasanöşiğüı@hasangürsoy.com.tr gibi bir e-posta adresini doğrulamayı geçemez. Bu da tasarladığımız web sitesindeki iletişim formuna Türkçe domain sahiplerinin e-postalarını girmemesine neden olacaktır.

İletişim formu

Son tasarladığım bir web projesinde bu nokta sonunda beni araştırmaya sevk etti. Fakat pek de istediğim gibi birşey bulamadığımdan ifadeyi (expression) kendim yazdım. İfade şu şekilde:

\w*[\wçığöşü]+([-+.']\w+)*@\w*[\wçığöşü]+([-.]\w+)*\.\w+([-.]\w+)*

Bunu bir örnekte açıklayacak olursak formumuzda aşağıdaki kod yer almalı. Ayrıca bir de requiredFieldValidator koyuyorum ki e-posta kutucuğu boş da bırakılamasın.


<asp:TextBox ID="tEPosta" runat="server" CssClass="input" />
<asp:RequiredFieldValidator ID="rfvEPosta" runat="server" ControlToValidate="tEPosta" ErrorMessage="* zorunlu" Display="Dynamic" />
<asp:RegularExpressionValidator ID="revEPosta" runat="server" ControlToValidate="tEPosta" ErrorMessage="* geçersiz" Display="Dynamic" ValidationExpression="\w*[\wçığöşü]+([-+.']\w+)*@\w*[\wçığöşü]+([-.]\w+)*\.\w+([-.]\w+)*" />

Bu soruya stackoverflow‘da ve asp.net‘te yanıt aradım.

Today I got this error while I was coding a cms panel. I’ve researched for solution but there was nothing to do with most of them. Then I’ve looked up my code and I’ve realized that I haven’t closed my reader. After I added rdr.Close(); to my code block before closing using statement, problem was solved.

Also you can add rdr.Dispose(); In my code I delete previous uploaded files and sometimes it gives error when the file that needs to be deleted is already deleted. And this is the reason why command cannot be closed. So close and dispose the reader. Problemo solved :)

Error:
COM object that has been separated from its underlying RCW cannot be used.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.InvalidComObjectException: COM object that has been separated from its underlying RCW cannot be used.

Stack Trace:

[InvalidComObjectException: COM object that has been separated from its underlying RCW cannot be used.]
   System.Data.Common.IAccessor.ReleaseAccessor(IntPtr hAccessor, Int32& pcRefCount) +0
   System.Data.OleDb.RowBinding.Dispose() +86
   System.Data.OleDb.Bindings.Dispose() +30
   System.Data.OleDb.OleDbCommand.CloseInternalParameters() +18
   System.Data.OleDb.OleDbCommand.ResetConnection() +23
   System.Data.OleDb.OleDbCommand.Dispose(Boolean disposing) +27
   System.ComponentModel.Component.Dispose() +17
   Admin_addContent.LoadCategory() in z:\siteRoot\*.com\Admin\addContent.aspx.cs:223
   Admin_addContent.Page_Load(Object sender, EventArgs e) in z:\siteRoot\*.com\Admin\addContent.aspx.cs:29
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +99
   System.Web.UI.Control.LoadRecursive() +50
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
WordPress.com'dan blog alın. | Tema Motion, volcanic tarafından yapılmıştır.
Takip Et

Get every new post delivered to your Inbox.