using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace Eczane_Otomasyonu
{
public partial class ilaclariduzenle : Form
{
public ilaclariduzenle()
{
InitializeComponent();
}
OleDbConnection baglan = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=eczane.accdb");
public void yukle()
{
OleDbDataAdapter adaptor = new OleDbDataAdapter("Select * from eczane", baglan);
DataSet ds = new DataSet();
ds.Clear();
adaptor.Fill(ds, "eczane");
dataGridView1.DataSource = ds.Tables["eczane"];
adaptor.Dispose();
}
int id = 0;
private void button1_Click(object sender, EventArgs e)
{
long urunbarkod;
string urunadi, miktari, miadi, fiyati;
urunbarkod = Convert.ToInt64(textBox1.Text);
urunadi = textBox2.Text;
miktari = textBox3.Text;
miadi = textBox4.Text;
fiyati = textBox5.Text;
string sorgu = "update eczane set [Ürün Barkodu]='" + urunbarkod + "',[Ürün Adı]='" + urunadi + "',[Miktarı]='" + miktari + "',[Miadı]='" + miadi + "',[Fiyatı]='" + fiyati + "' where [ID]='" + id + "'";
OleDbCommand komut = new OleDbCommand(sorgu, baglan);
baglan.Open();
komut.ExecuteNonQuery();
baglan.Close();
yukle();
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
int satir;
satir = dataGridView1.CurrentRow.Index;
id = Convert.ToInt32(dataGridView1.Rows[satir].Cells[0].Value.ToString());
textBox1.Text = dataGridView1.Rows[satir].Cells[1].Value.ToString();
textBox2.Text = dataGridView1.Rows[satir].Cells[2].Value.ToString();
textBox3.Text = dataGridView1.Rows[satir].Cells[3].Value.ToString();
textBox4.Text = dataGridView1.Rows[satir].Cells[4].Value.ToString();
textBox5.Text = dataGridView1.Rows[satir].Cells[5].Value.ToString();
}
private void ilaclariduzenle_Load(object sender, EventArgs e)
{
yukle();
}
//OleDbCommand ad = new OleDbCommand("update eczane set [Ürün Barkodu]='" + textBox1.Text + "',[Ürün Adı]='" + textBox2.Text + "',[Miktarı]='" + textBox3.Text + "',[Miadı]='" + textBox4.Text + "',[Fiyatı]='" + textBox5.Text + "' where [ID]='" + id + "'", baglan);
}
} c# Proje ödevim ve şu kodumda bir sıkıntım var [YARDIM]
3
●741
- 30-12-2012, 20:59:10Üyeliği durdurulduAccessdeki verimi güncelleme amaçlı bir yer oluşturdum update ederken ExecuteNonQuery de Ölçüt ifadesinde veri uyuşmazlığı diye bir hata alıyorum kodlarım bunlar şimdiden yardım edenlere teşekkürlerimi borç bilirim...
- 31-12-2012, 10:25:25Sadece gönderdiğin koda bakarak hatayı bulmak mümkün değil, veritabanı ve textboxlara girdiğin değerleri de bilmek lazım.
veritabanındaki kolonların veri tipi ile sql cümlesinde gönderdiğin değerler uyuşmuyor olabilir. Tarih tipinden kolonun varsa oraya uygun olmayan bir format ta değer gönderiyor olabilirsin.
Şöyle yapabilirsin :
ExecuteNonQuery satırına breakpoint koyup programını çalıştır. Oluşan sql cümleni copy paste ile direk veritabanında çalıştır, muhtemelen aynı hatayı tekrar alacaksın. Sonra hata almayana kadar set ettiğin her alanı geçici olarak silip, hangi alandan dolayı o hatayı aldığını bul. Sonra o alanın tipini ve gönderdiğin değeri kontrol et. - 04-01-2013, 16:53:08miktarı ve fiyatı veritabanında ne olarak tanımladıysan burdaki verileri o şekilde göndermelisin. büyük ihtimalle sorunun bunlardan kaynaklanıyor. mesela miktarı veritabanında int olarak tanımadıysan
miktari = textBox3.Text;
yerine
miktari = int.Parse(textBox3.Text);
yazman lazım
- 04-01-2013, 17:02:46alanların baktım gördüğüm kadarıyla tarihle ilgili bir olay yok..
rawo nun söylediği gibi miktrını o şekilde yapman da sorunu çözmeyecektir
sorun db deki sayısal olan ifadelere sayısal değilmiş gibi davranman.
mesela en basit örnek olarak kodundan örnek verirsem
where [ID]='" + id + "'";
id muhtemelen integer türünden ve otomatik olarka artıyordur
ancak yukarıda yazdığın kısım id yi bir string ifadeymiş gibi gösteriyor. sebebi ise tek tırnaklar arasına yazman
sorunun da bu. sayısal ifadelerde tek tırnak kullanamazsın.
yani buradaki kodun where [ID]=" id;
şeklinde olmalı.
keza diğer alanlara da bak. eğer herhangi bir string türünde değilse (nvarchar,varchar ....) sql cümleciğinde tek tırnakları sil. bu şekilde çalışacaktır
