Maddox67 Posted November 21, 2021 Share Posted November 21, 2021 Merhabalar Arkadaşlar C# de yeni yeni bişiyler öğrenmek istiyorum. Yalnız yaptğım bir çalışmada "System.Data.OleDb.OleDbException: 'Ölçüt ifadesinde veri türü uyuşmazlığı.'" hatası alıyorum. Bilgisi olan yardım edebilirse sevinirim. İyi forumlar. private void btnkaydet_Click(object sender, EventArgs e) { baglanti.Open(); OleDbCommand komut = new OleDbCommand("insert into [Sayfa1$] (DosyaNumarasi,FirmaAdi,TeminatTarihi,TeminatinCinsi) values (@p1,@p2,@p3,@p4)", baglanti); komut.Parameters.AddWithValue("@p1", TxtDosya.Text); komut.Parameters.AddWithValue("@p2",TxtFirma.Text); komut.Parameters.AddWithValue("@p3", TxtTarih.Text); komut.Parameters.AddWithValue("@p4", TxtTuru.Text); komut.ExecuteNonQuery(); baglanti.Close(); MessageBox.Show("Teminat Sisteme Kaydedildi." + Environment.NewLine + "Lütfen Kontrol ederek işlemler yapınız", "Sistem Uyarısı", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); Veriler(); Quote Link to comment Share on other sites More sharing options...
VisuaLNET Posted November 21, 2021 Share Posted November 21, 2021 Maddox67, 7 saat önce yazdı: Merhabalar Arkadaşlar C# de yeni yeni bişiyler öğrenmek istiyorum. Yalnız yaptğım bir çalışmada "System.Data.OleDb.OleDbException: 'Ölçüt ifadesinde veri türü uyuşmazlığı.'" hatası alıyorum. Bilgisi olan yardım edebilirse sevinirim. İyi forumlar. private void btnkaydet_Click(object sender, EventArgs e) { baglanti.Open(); OleDbCommand komut = new OleDbCommand("insert into [Sayfa1$] (DosyaNumarasi,FirmaAdi,TeminatTarihi,TeminatinCinsi) values (@p1,@p2,@p3,@p4)", baglanti); komut.Parameters.AddWithValue("@p1", TxtDosya.Text); komut.Parameters.AddWithValue("@p2",TxtFirma.Text); komut.Parameters.AddWithValue("@p3", TxtTarih.Text); komut.Parameters.AddWithValue("@p4", TxtTuru.Text); komut.ExecuteNonQuery(); baglanti.Close(); MessageBox.Show("Teminat Sisteme Kaydedildi." + Environment.NewLine + "Lütfen Kontrol ederek işlemler yapınız", "Sistem Uyarısı", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); Veriler(); Uzun süredir C# ile uğraşmıyorum. Ancak "TxtTarih.Text" de sorun olabileceğini düşünüyorum. Database'ndeki tarih formatı ile "TxtTarih.Text" uyumsuzluk oluşturmaktadır. Hatırladığım kadarıyla Gün/Ay/Yıl değilde Ay/Gün/Yıl şeklinde dönüştürebilirsin. Quote Link to comment Share on other sites More sharing options...
Maddox67 Posted November 22, 2021 Author Share Posted November 22, 2021 VisuaLNET, 10 saat önce yazdı: Uzun süredir C# ile uğraşmıyorum. Ancak "TxtTarih.Text" de sorun olabileceğini düşünüyorum. Database'ndeki tarih formatı ile "TxtTarih.Text" uyumsuzluk oluşturmaktadır. Hatırladığım kadarıyla Gün/Ay/Yıl değilde Ay/Gün/Yıl şeklinde dönüştürebilirsin. Aslında TxtTarih.Text sadece bir textbox dı. datetime falan değil uyumsuzluk olacağını düşündüğünüz yer TxtTarih.Text değerini string değerine mi dönüştürüp yazdırmam gerekiyor ? Yanlış mı anladım Quote Link to comment Share on other sites More sharing options...
TheRifleman Posted November 22, 2021 Share Posted November 22, 2021 textbox içinden alınan verilerle veri tabanında tanımlanan "(DosyaNumarasi,FirmaAdi,TeminatTarihi,TeminatinCinsi)" değişkenlerinin birisinin veya birden fazlasının veya hepsinin veri tipi uyuşmuyor tahminimce textbox içinden gelen veriler string olarak alınıyor sizin de bu gelen verileri uygun tipe dönüştürmeniz gerek. örneğin "DosyaNumarasi" integer veri kabul ediyor, siz de "@p1" 'i string olarak alıyorsanız tip uyuşmazlığından hata alırsınız. veri tabanındaki değişkenlerin türüne göre tip dönüşümünü yaparsanız sorun çözülür iyi çalışmalar 1 Quote Link to comment Share on other sites More sharing options...
VisuaLNET Posted November 22, 2021 Share Posted November 22, 2021 (edited) Maddox67, 8 saat önce yazdı: Aslında TxtTarih.Text sadece bir textbox dı. datetime falan değil uyumsuzluk olacağını düşündüğünüz yer TxtTarih.Text değerini string değerine mi dönüştürüp yazdırmam gerekiyor ? Yanlış mı anladım Textbox olduğu için 22.11.2021 şeklindedir. Ancak datebase de bu 11.22.2021 gibi birşey olabilir. Yani TheRifleman'ın dediği gibi "veri tabanındaki değişkenlerin türüne göre tip dönüşümünü yaparsanız sorun çözülür". İyi çalışmalar. Edited November 22, 2021 by VisuaLNET Quote Link to comment Share on other sites More sharing options...
Maddox67 Posted November 22, 2021 Author Share Posted November 22, 2021 @TheRifleman @VisuaLNET amacım aynen exceldeki gibi buraya aktarmak teminat ekle için kodlar yukarıdaki gibi Nere de hata yapıyorum anlayamadım bir türlü Please register to see this content. Quote Link to comment Share on other sites More sharing options...
VisuaLNET Posted November 22, 2021 Share Posted November 22, 2021 Maddox67, 19 dakika önce yazdı: @TheRifleman @VisuaLNET amacım aynen exceldeki gibi buraya aktarmak teminat ekle için kodlar yukarıdaki gibi Nere de hata yapıyorum anlayamadım bir türlü Please register to see this content. Demek istediğim; string t1 = txtTarih.ToString("yyyy") + "-" + txtTarih.ToString("MM") + "-" + txtTarih.ToString("dd"); return t1; gibi birşey yapman. Textbox'a yazdığın tarihi veritabanındaki tipe dönüştürmen lazım. Textbox'ta 22.11.2021 yazıyorsa bunu veritabanındaki tipe dönüştürerek 2021-11-22 gibi yada saati de eklemen gerekiyor. Quote Link to comment Share on other sites More sharing options...
By_FaRuK Posted November 22, 2021 Share Posted November 22, 2021 Tarih alanını neden datetimepicker değilde textbox kullanıyorsun? Veritabanındaki veri tipin neyse ona uygun veri tipi ile değer göndermem lazım. Aksi taktirde bu tarz hatalarla karşılaşırsın. 1 Quote Link to comment Share on other sites More sharing options...
Maddox67 Posted November 23, 2021 Author Share Posted November 23, 2021 By_FaRuK, 9 saat önce yazdı: Tarih alanını neden datetimepicker değilde textbox kullanıyorsun? Veritabanındaki veri tipin neyse ona uygun veri tipi ile değer göndermem lazım. Aksi taktirde bu tarz hatalarla karşılaşırsın. Yeniyiz ondan datetimepicker kullanmadım o derslere daha gelmedik Quote Link to comment Share on other sites More sharing options...
TheRifleman Posted November 23, 2021 Share Posted November 23, 2021 Maddox67, 14 saat önce yazdı: @TheRifleman @VisuaLNET amacım aynen exceldeki gibi buraya aktarmak teminat ekle için kodlar yukarıdaki gibi Nere de hata yapıyorum anlayamadım bir türlü Please register to see this content. veri tabanı içindeki "DosyaNumarasi","FirmaAdi,"TeminatTarihi","TeminatinCinsi" değişkenlerinin tipini kontrol edin. Exceldeki veriniz göründüğü kadarıyla string tipinde. String tipindeki verileri varchar olarak veri tabanına ekleyebilirsiniz. Bunları kontrol edin. VisuaLNET arkadaşımızın da dediği gibi tarihte problem olabilir. By_FaRuK arkadaşımızın dediği gibi DateTimePicker kullanabilirsiniz. 1 Quote Link to comment Share on other sites More sharing options...
Maddox67 Posted November 29, 2021 Author Share Posted November 29, 2021 @TheRifleman @By_FaRuK @VisuaLNET Merhabalar ; Dediğiniz gibi yaptım ancak bu seferde dataGridWiew de daha önce yer alan eklenen satırları sonradan bir kez daha ekleme yapıyor. Ekle ve sil butonuna ait kodları ve programın ekran görüntüsünü aşağıda paylaştım yardımcı olursanız çok teşekkür ederim. { baglanti.Open(); OleDbCommand komut = new OleDbCommand("insert into teminatlar (DosyaAd,FirmaAd,teminatTarih,TeminatİadeTarih) values ('" + textBox1.Text + "','" + textBox2.Text + "','" + dateTimePicker1.Value + "','" + dateTimePicker2.Value + "')", baglanti); komut.ExecuteNonQuery(); baglanti.Close(); MessageBox.Show("Teminatınız sisteme kaydedildi.","Sistem Uyarısı",MessageBoxButtons.OK,MessageBoxIcon.Information); listele(); for (int i = 0; i < Controls.Count; i++) { if (Controls[i] is TextBox) { Controls[i].Text = ""; } } } private void button2_Click(object sender, EventArgs e) { baglanti.Open(); OleDbCommand komut = new OleDbCommand ("delete *from teminatlar where DosyaAd='" +dataGridView1.CurrentRow.Cells["DosyaAd"].Value.ToString()+"' and FirmaAd='" + dataGridView1.CurrentRow.Cells["FirmaAd"].Value.ToString() + "'", baglanti); komut.ExecuteNonQuery(); baglanti.Close(); MessageBox.Show("Teminatınız sistemden silindi.", "Sistem Uyarısı", MessageBoxButtons.OK, MessageBoxIcon.Information); tablo.Clear(); listele(); } Please register to see this content. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.