Sqlcommandbuilder Update Sorunu
-
merhabalar,
da = new SqlDataAdapter("select c.ClientID,c.AdiSoyadi as Müşteri, "
+"p.AdiSoyadi as Personel,c.KayitTarihi,c.Adres,c.AdresTarifi, "
+"c.OzelTercihler,c.Telefon1,c.EMail,c.Cinsiyet,c.Aciklama "
+"from tbl_Clients c inner join tbl_Personnel p on c.PersonelID=p.PersonelID "
+"where ClientID='" + AramaID + "'", con);
dt = new DataTable();
cmdbu = new SqlCommandBuilder(da);
cmdbu.DataAdapter.Fill(dt);
gridMusteriList.DataSource = dt;şimdi ben table'ımın üzerinde alttaki kodla üzerinde değişiklikleri update etmeye çalişiyorum fakat sorun veriyor alttaki kod.
cmdbu.DataAdapter.Update(dt);
inner joinden kaynaklanıyor heralde birden çok table birbirine bağlı oldugu için.
verdiği hata kodu:Dynamic SQL generation is not supported against multiple base tables.
bunu nasil çözerim.
-
ilk gördüğüm hata türkçe karakterler.. hocam neden kullanıyorsun türkçe karakterleri? Müşteri ne demek :)
aralarda boşluk varsa ya da türkçe karakter varsa bunları köşeli parantezlere almak lazım [ ] bu şekilde dene.. eğer hala aynıysa özel mesajdan
team id-pass ver bağlanıp bakayım
-
unbalanced bunu yazdı
ilk gördüğüm hata türkçe karakterler.. hocam neden kullanıyorsun türkçe karakterleri? Müşteri ne demek :)
aralarda boşluk varsa ya da türkçe karakter varsa bunları köşeli parantezlere almak lazım [ ] bu şekilde dene.. eğer hala aynıysa özel mesajdan
team id-pass ver bağlanıp bakayım
sorun turkce karakterden değil.ister istemez arada kaçıyor türkçe karakter :D
geç oldu açık degilsindir heralde müsait bizamanda hallederiz inş :D
-
burdayım hocam.. türkçe karakterler ya da boşluklarda [] kullanılır :)
neyse yolla id yi bakalım
+
tez zamanda entity framework a geçmeni tavsiye ederim..
-
unbalanced bunu yazdı
burdayım hocam.. türkçe karakterler ya da boşluklarda [] kullanılır :)
neyse yolla id yi bakalım
+
tez zamanda entity framework a geçmeni tavsiye ederim..
eli öpülesi adasın :D
geçecem inş :)
-
est. sorunla ilgili belki aynı problemi yaşayanlar çıkabilir. burada net olarak görülmese de
iki tabloyu aynı anda güncellemeye çalışıyor, oysa commandbuilder sadece tek tabloyu destekliyor güncelleme,silme ve ekleme işlemlerinde.
o yüzden kendi sql kodlarını yazmak zorundasın
-
unbalanced bunu yazdı
est. sorunla ilgili belki aynı problemi yaşayanlar çıkabilir. burada net olarak görülmese de
iki tabloyu aynı anda güncellemeye çalışıyor, oysa commandbuilder sadece tek tabloyu destekliyor güncelleme,silme ve ekleme işlemlerinde.
o yüzden kendi sql kodlarını yazmak zorundasın
olayı hocam ın dediği gibi çözdüm kodlar altta birine lazım olur belki. :D
try
{
string strQuery = string.Empty;
DataTable dtChanges;
DataTable dtEmployee = (DataTable)dataGridViewUrunListele.DataSource;
SqlCommand objCmd = new SqlCommand();
dtChanges = dtEmployee.GetChanges(DataRowState.Modified);
if (dtChanges != null)
{
con.Open();
objCmd.Connection = con;
for (int i = 0; i < dtChanges.Rows.Count; i++)
{
strQuery = "UPDATE tbl_Product SET ";
strQuery += "UrunKodu = '" + dtChanges.Rows[i]["UrunKodu"].ToString() + "', ";
strQuery += "UrunAdi = '" + dtChanges.Rows[i]["UrunAdi"].ToString() + "', ";
strQuery += "Aciklama = '" + dtChanges.Rows[i]["Aciklama"].ToString() + "', ";
strQuery += "Fiyat = '" + dtChanges.Rows[i]["Fiyat"].ToString() + "' ";
strQuery += "WHERE ProductID = '" + dtChanges.Rows[i]["ProductID"].ToString() + "'";
objCmd.CommandText = strQuery;
objCmd.ExecuteNonQuery();
}
dtChanges = null;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
finally
{
con.Close();
MessageBox.Show("Güncelleme Yapıldı!!!");
}
