Forum
Değerli bilişim üstadları merhaba.
C# ta hazırladığım projemde Sql e dataadapter ile bağlanıp muhasebe programımdaki stokların sayılarını almaya çalışıyorum. Fakat hazırladığım query sql de çalışmasına rağmen projemde aşağıdaki metni hata olarak döndürüyor. msdn forumlarında bazı anlatımlar var. önerilen çözümleri denememe rağmen sorunu gideremedim. Değerli çözüm önerilerinizi paylaşabilir misiniz? İyi çalışmalar dilerim.
HATA MESAJI :
SELECT failed because the following SET options have incorrect settings: 'ARITHABORT'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.
Hata mesajına ek olarak kodunu ve veritabanının özelliklerini de paylaşabilir misin?
Ayrıca şu konfigürasyon seçenekleri kodun içinde bulunuyor mu?
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT ON
SET QUOTED_IDENTIFIER ON
Kodlarım aşağıdaki gibidir. Veritabanı kendi tasarımım olmadığı için özelliklerini paylaşamıyorum.
DataTable dtStokMiktarlari = new DataTable();
#region MİKTARLAR GÜNCELLENDİ.
using (SqlConnection baglanti = new SqlConnection(ConfigurationManager.ConnectionStrings["DB2016ConStr"].ToString()))
{
baglanti.Open();
using (SqlDataAdapter da = new SqlDataAdapter(@"SELECT [STOCKREF],[ONHAND] AS StokMiktar FROM LV_004_01_STINVTOT WHERE INVENNO = '0' ORDER BY STOCKREF", baglanti))
{
da.Fill(dtStokMiktarlari);
}
}
using (SqlConnection baglanti = new SqlConnection(ConfigurationManager.ConnectionStrings["SGBayiPortaliConStr"].ToString()))
{
baglanti.Open();
using (SqlCommand cmd = new SqlCommand("UPDATE Stok SET StokMiktar = @StokMiktar WHERE StokLogicalref = @StokLogicalref", baglanti))
{
for (int i = 0; i < dtStokMiktarlari.Rows.Count; i++)
{
cmd.Parameters.Add("@StokMiktar", SqlDbType.NVarChar).Value = dtStokMiktarlari.Rows[i]["ONHAND"].ToString();
cmd.Parameters.Add("@StokLogicalref", SqlDbType.Int).Value = dtStokMiktarlari.Rows[i]["STOCKREF"].ToString();
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
}
using (SqlConnection baglanti = new SqlConnection(ConfigurationManager.ConnectionStrings["SGBayiPortaliConStr"].ToString()))
{
baglanti.Open();
using (SqlCommand cmd = new SqlCommand("UPDATE Stok SET StokMiktar = '0' WHERE StokMiktar IS NULL", baglanti))
{
cmd.ExecuteNonQuery();
}
}
#endregion
Önceki mesajımda bahsettiğim ayarları aşağıdaki komutları kullanarak uygulayın; yani sorgulamalarınızı, aşağıdakileri yaptıktan sonra gerçekleştirin.
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT ON
SET QUOTED_IDENTIFIER ON
Örnek:
SqlCommand command = new SqlCommand("SET ANSI_NULLS ON
", connection);
command.Connection.Open();
command.ExecuteNonQuery();
Desteğiniz için teşekkür ederim. Sorun giderildi.