1

Konu: Vb.net data format

Öncelikle Merhabalar
Vb.net'te sql databasesine kullanıyorum.Burada bi  alanınımın  veri tipi datetime bu alana veri kaydederken aldığım değer datetime.today fakat bundan gelen değeri yazmada sürekli format uymadı şeklinde hata alıyorum bu formatı ayarlamak için yöntemleri araştırıyorum fakat bi sonuca ulaşamadım. bu konuda yardımcı olabilecek arkadaşlar şimdiden teşekkür ederim.

2

Re: Vb.net data format

Ben vb ile yazmıyorum C# ile yazıyorum. bahsettiğin sorun yok ama yinede şunuda bir dene. Belki vbde böyle kullanılıyordur.

C#
DateTime.Now

3

Re: Vb.net data format

Hic kod vermemissin. Uymayan ne gormenin imkani yok. Anladigim kadariyla normalde DateTime kullanman gerekirken string kullaniyorsun ve yanlis formatlaniyor.

4

Re: Vb.net data format

Çetin hocam kod olarak bi textbox a bende

C#
Datetime.Now

  şeklinde tarihi alıyorum daha sonra kaydet dediğimde

C#
VeriYaz.CommandText = "INSERT INTO stok (stokkodu,tarihi,işlem) " & _

            "VALUES('" & ftak1 & "','" & ftak2 & "','C')"


şeklinde bi kodum var burada tarihi olan alan sürekli tarihsel değerde hata veriyor.Tarih formatı örnek olarak 28.09.2011 şeklinde bu tarih şeklinden ötürü hata veriyor diye tahmin ediyorum ama bunu kaydederken değiştirmeye çalıştım buradada sonuç alamadım.

5

Re: Vb.net data format

Bu şekilde insert update işlemlerini yapman sakıncalı. Sql Injection'a açık.Onun yerina parametre göndermek daha doğru.

C#
VeriYaz.CommandText = "INSERT INTO stok (stokkodu,tarihi,işlem) " 

            "VALUES(@StokKodu,@Tarihi,@Islem)"


Eğer VeriYaz SqlCommandsa:

C#
VeriYaz.Parameters.Add("StokKodu", SqlDbType.VarChar).Value = ftak1;

VeriYaz.Parameters.Add("Tarihi", SqlDbType.DateTime).Value = ftak2;
VeriYaz.Parameters.Add("Islem", SqlDbType.Char).Value = 'C';


Eger VeriYaz DbCommandsa(not:Ben hiç DbCommand kullanmadım kodu test etmen gerekir):

C#
DbParameter param = VeriYaz.CreateParameter();

param.ParameterName = "@Tarihi";
param.Value = ftak2;
param.DbType = DbType.DateTime;
VeriYaz.Parameters.Add(param);




ama senin yöntemlede imkansız değil.Ben böyle yapmanı tavsiye etmem.Eğer yapacaksanda kod şöyle olmalı:

C#
System.Globalization.DateTimeFormatInfo dfInfo = new System.Globalization.DateTimeFormatInfo();

VeriYaz.CommandText = "INSERT INTO stok (stokkodu,tarihi,işlem) "
            "VALUES('" + ftak1 + "','" + Convert.ToString((DateTime)ftak2,dfInfo) + "','C')"

6

Re: Vb.net data format

Çok Sağol Cemal Abi büyüksün inan bayağıdır uğraşıyordum.Çok Teşekkür ederim parametreli olarak gönderdim şu an hata vermiyor.:D

7

Re: Vb.net data format

smile Lafı bile olmaz.

Tavsiyem programında bu şekilde çalışan her komutu (select , insert, update delete hepsini) parametreliye çevirmen.
Sql Injection en kolay ve en yaygın sql hackleme metodudur.

8 Son düzenleyen, cetinbasoz (28.09.2011 10:46:09)

Re: Vb.net data format

Valla Cemal herseyi yazmis ben sadece onun dediklerini tekrarliyorum.

Kesinlikle o sekilde SQL kodu kullanma. Cemal'in dedigi gibi SQL injection icin ideal kod. Hackerlara gelin benim datami tepe tepe kullanin demek. Parametre kullan. Hem parametre kullanirsan DateTime, int vs tip/format cevirimi ile ugrasmayacaksin.

SqlCommand:

C#
VeriYaz.CommandText = "INSERT INTO stok (stokkodu,tarihi,islem) " & _

            "  VALUES  (@stokkodu,@tarihi,'C')"
VeriYaz.Parameters.AddWithValue("@stokkodu",ftak1)
VeriYaz.Parameters.AddWithValue("@tarihi",ftak2)

OleDbCommand:

C#
VeriYaz.CommandText = "INSERT INTO stok (stokkodu,tarihi,islem) " & _

            " VALUES (?,?,'C')"
VeriYaz.Parameters.AddWithValue("@stokkodu",ftak1)
VeriYaz.Parameters.AddWithValue("@tarihi",ftak2)

SqlCommand ile OleDbCommand arasindaki fark birisinde ? ile parametre yer tutucularini belirliyorsun ve mutlaka sirasiyla (OleDbCommand'de) Parameters koleksiyonuna eklemen gerekli. Parametre adinin onemi yok (yani ilk eklenen adi ne olursa olsun stokkodu icin olan parametre, ikincisi tarih). SqlCommand'de isimler kullaniliyor.

ftak2 burada anladigim kadariyla string (kodu gene kirpip vermissin). Tahminime gore:

ftak2 = txtTarih.Text

gibi birsey. Oyle ise onu DateTime'a cevir:

C#
DateTime? ftak2 = null;

DateTime _Tarih
if ( DateTime.TryParse(txtTarih.Text,new CultureInfo("tr-TR"),DateTimeStyles.None,out _Tarih) )
{
   ftak2 = _Tarih;
}

Bu sekilde "31 Ocak 2011", "31/1/2011" vs yazilan dogru cevrilir. Tabii textbox yerine bir calendar kontrolden almakta fayda var.

9

Re: Vb.net data format

Ya da Linq kullansan ...VB.Net ile şöyle oluyor

C#
Dim ekle as new  stok = {.stokkodu=txtstokodu.text,.tarihi=txttarih.text,islem = "C"}

db.stok.insertonsubmit(ekle)
db.submitchanges()


tabi birde tarihi calendar aracılığıyla alsan format probleminde olmaz.