Mysql karmaşıklığı

hbektas

Öğrenci
Katılım
7 Eylül 2012
Mesajlar
21
Reaksiyon puanı
0
Puanları
0
Merhaba ShiftDelete kullanıcıları. Formunuza yeni kayıt oldum. Özel bir firmada IT departmanında yazılımcı olarak çalışıyorum.. Şu anda Asp.Nette şirket satışlarını raporlamak içn bi sistem yapıpyorum aslında bitirdim fakat mysql sapıttımı yoksa benim yazdığım koddamı bir sorun var anlayamadım.. En iyisi ben size sorunun ne olduğunu anlatayım umarım aranızdan yardımcı olan olur. Sonurum Şöyle;

Vari tabanı olarak mysql kullanıyorum. Bilgiler mysql serverde tutuluyor. Local databasede deil başka bir makinanın üzerinde yani. hazırladığım web programında kayıt varsa tekrar kaydetmesini istemiyorum. Aslında kayıdı yapmıyor yani local olarak kendi pcmin IIS inde çalışltırdığımda bu gün için kayıt girilmiştir diye uyarıyı alıyorum ama aynı dosyayı Windows Servera attığımda hrşey aynı şekilde çalışıyor fakat kaydedilmiş gün için uyarı vermiyor ve tkrar kayıt ediyor.

Ne gibi bi problem olmuş olabilir Yardımlarınızı Bekliyorum şimdiden Teşekkürler...
 

tambjk

Profesör
Katılım
10 Mayıs 2011
Mesajlar
3,263
Reaksiyon puanı
16
Puanları
218
Kayıt varsa tekrar keydetmesin diye kontrolü nasıl yapıyorsun? Bu yaptığın kontrol sürekli senin local'ine bakıyor olabilir mi? veritabanı sorguları tek bir noktadan mı çıkış yapıyor? çalıştırdığın farklı sql ler farklı bir datasource a bakıyor olabilir mi?
 

hbektas

Öğrenci
Katılım
7 Eylül 2012
Mesajlar
21
Reaksiyon puanı
0
Puanları
0
Farklı bir databaseye baktığını sanmıyorum çünki ikisindede datasource aynı. Sql cümlesinde bir sorun yok sorun olsa benim localde çalışdığım dosyada tekrar kayıt yapar ama lokaldeki dosyalarımda istediğim sonucu alıyorum.Databaseyi temizliyorum ve serverdeki sayfadan aynı güne ikikez kayıt yapıyorum ama yine aynı problem oluyor kayıdı yapıyor.. yapmaması lazım aklıma acaba Windows serverimde herhangi bir ayarlamamı yapmam gerekir diye geliyor ama bi sonuç alamadım..
 

tambjk

Profesör
Katılım
10 Mayıs 2011
Mesajlar
3,263
Reaksiyon puanı
16
Puanları
218
Farklı bir databaseye baktığını sanmıyorum çünki ikisindede datasource aynı. Sql cümlesinde bir sorun yok sorun olsa benim localde çalışdığım dosyada tekrar kayıt yapar ama lokaldeki dosyalarımda istediğim sonucu alıyorum.Databaseyi temizliyorum ve serverdeki sayfadan aynı güne ikikez kayıt yapıyorum ama yine aynı problem oluyor kayıdı yapıyor.. yapmaması lazım aklıma acaba Windows serverimde herhangi bir ayarlamamı yapmam gerekir diye geliyor ama bi sonuç alamadım..

Aynı kayıttan sadece 1 kere bulunması kontrolünü nasıl sağlıyorsun peki? Bunun 2 yolu var, ya kayıt işleminden önce ufak bir sorgu ile db ye sorarsın, eğer yoksa devam edersin. Yada db de unique constraint tanımlarsın. Eğer 2.yolu seçmişsen server daki db de bu constraint tanımı eksik olabilir mi? 1.yolu seçmiş isen db ye yaptığın örnek sorgu ne şekilde?
 

hbektas

Öğrenci
Katılım
7 Eylül 2012
Mesajlar
21
Reaksiyon puanı
0
Puanları
0
ben birinci yolu kullandım girilen günden önceki günde kayıt varmı diye... Şimdi size kodları gönderiyorum biraz karışık ama baktığınızda anlayabileceksiniz..

protected void AEverieklebtn_Click(object sender, EventArgs e)
{
if (Text1.Value != "")
{
Ustbilgilbl.Text = "";
// Alt iki satırda texte girilen tarihten bir önceki günü buluyoruz
DateTime tarih = Convert.ToDateTime(Text1.Value);
DateTime oncekigun = tarih.AddDays(-1);//


string oncekitarih,stringtarih,gun,ay;
oncekitarih = oncekigun.ToShortDateString ();
stringtarih = tarih.ToShortDateString();
gun = stringtarih.Substring(0, 2);
ay = stringtarih.Substring(3, 2);

if (DropDownList1.SelectedIndex == 0)
{
GolSeviyesitxt.Enabled = true;
GolSeviyesitxt.Text = "";
Aciklamatxt.Text = "";
Guntotxt.Text = "";
Bilgilbl.Visible = false;

DateTime oncekitarih2 = Convert.ToDateTime(Text1.Value);
string kayitoalcaktarih;
kayitoalcaktarih = oncekitarih2.ToShortDateString();


baglanti.Open();


MySqlCommand komut = new MySqlCommand("SELECT * FROM ADOEnerjiTocakHes WHERE Tarih = '"+Text1.Value+"'", baglanti);
MySqlDataReader dr = komut.ExecuteReader();
dr.Read();
if (dr.HasRows == false)
{



dr.Close();
UpdatePanel1.Visible = true;
MySqlCommand komut1 = new MySqlCommand("SELECT * FROM ADOEnerjiTocakHes WHERE Tarih = '" + oncekitarih + "'", baglanti);
MySqlDataReader dr1 = komut1.ExecuteReader();
dr1.Read();


if (dr1.HasRows == true)
{
if ((ay == "01") && (gun == "01"))
{
Aytotxt.Text = "0";
Yiltotxt.Text = "0";
}
else if (gun == "01")
{
Aytotxt.Text = "0";
Yiltotxt.Text = dr1["YillikTU"].ToString();
}
else
{
Aytotxt.Text = dr1["AylikTu"].ToString();
Yiltotxt.Text = dr1["YillikTU"].ToString();
}
}
else
{
Aytotxt.Text = "0";
Yiltotxt.Text = "0";
}
}
else
{
Ustbilgilbl.Visible = true;
Ustbilgilbl.Text = "Bu gün için kayıt girilmiştir...";
UpdatePanel1.Visible = false;


}


}
 

tambjk

Profesör
Katılım
10 Mayıs 2011
Mesajlar
3,263
Reaksiyon puanı
16
Puanları
218
İlettiğin kodu inceledim, herşey doğru gözüküyor. İlk dediğimi tekrar edicem :) Gördüğüm kadarıyla olabilecek tek ihtimal 2 tane farklı "bağlantın" olabilir. Server değişikliği yaptığında bunlardan 1 tanesi değişiyor, diğeri aynı kalıyor olabilir. Debug yapıp inceleyebilirsin bunu, komut'u execute ettiğinde dönen resultları inceleyebilirsin yada bağlantı objenin içeriğini kontrol edebilirsin doğru db lere mi gidiyor diye.
 

hbektas

Öğrenci
Katılım
7 Eylül 2012
Mesajlar
21
Reaksiyon puanı
0
Puanları
0
serverdaki sayfadan database ye veri kaydettiğim zaman localdeki mysql front ile o kaydı görebiliyorum ve localde çalıştırdığım sayfada aynı güne kayıt girdiğimde kayıt girildi diyor...bağlantıyı global olarak bi kere kullandım zaten o konuda bi hata olamaz. Biraz daha araştırmam lazım yardımın için Teşekkür ederim :)
 

hbektas

Öğrenci
Katılım
7 Eylül 2012
Mesajlar
21
Reaksiyon puanı
0
Puanları
0
Merhaba ShiftDelete kullanıcıları. Formunuza yeni kayıt oldum. Özel bir firmada IT departmanındayazılımcı olarak çalışıyorum.. Şu anda Asp.Nette şirketsatışlarını raporlamak içn bi sistem yapıpyorum aslında bitirdim fakat mysql sapıttımı yoksa benim yazdığım koddamı bir sorun var anlayamadım.. En iyisi ben size sorunun ne olduğunu anlatayım umarım aranızdan yardımcı olan olur. Sonurum Şöyle;

Vari tabanı olarak mysql kullanıyorum. Bilgiler mysql serverde tutuluyor. Local databasede deil başka bir makinanın üzerinde yani. hazırladığım webprogramında kayıt varsa tekrar kaydetmesini istemiyorum. Aslında kayıdı yapmıyor yani local olarak kendi pcmin IIS inde çalışltırdığımda bu gün için kayıt girilmiştir diye uyarıyı alıyorum ama aynı dosyayı Windows Servera attığımda hrşey aynı şekilde çalışıyor fakat kaydedilmiş gün için uyarı vermiyor ve tkrar kayıt ediyor..kodlar tamamı ile aynı ama böyle bi durum mevcut. Servera koyduğum sayfadan kayıt girdiğimde veritabanına kayıdı yapıyor. localdeki sayfadan aynı gün için kayıt yap dediğimde uyarıyı alıyorum ama serverdaki sayfadan aynı güne kayıt girince kayıdı yapıyor bunun olmaması lazım locakdeki gibi çalışması gerekiyor ama bi yerde hata var.


protected void AEverieklebtn_Click(object sender, EventArgs e)
{
if (Text1.Value != "")
{
Ustbilgilbl.Text = "";
// Alt iki satırda texte girilen tarihten bir önceki günü buluyoruz
DateTime tarih = Convert.ToDateTime(Text1.Value);
DateTime oncekigun = tarih.AddDays(-1);//


string oncekitarih,stringtarih,gun,ay;
oncekitarih = oncekigun.ToShortDateString ();
stringtarih = tarih.ToShortDateString();
gun = stringtarih.Substring(0, 2);
ay = stringtarih.Substring(3, 2);

if (DropDownList1.SelectedIndex == 0)
{

baglanti.Open();


MySqlCommand komut = new MySqlCommand("SELECT * FROM ADOEnerjiTocakHes WHERE Tarih = '"+Text1.Value+"'", baglanti);//Text1 de 07.07.2012 gibi bi tarih var //

MySqlDataReader dr = komut.ExecuteReader();
dr.Read();
if (dr.HasRows == false)//text1 deki tarih için kayıt yapılmamışsa bir öcneki gündeki bilgileri almak için altsatırdaki ife giidyor//
{
dr.Close();
UpdatePanel1.Visible = true;
MySqlCommand komut1 = new MySqlCommand("SELECT * FROM ADOEnerjiTocakHes WHERE Tarih = '" + oncekitarih + "'", baglanti);//Buraada text1 deki tarinhten önceki gün kayıtlarını alıyoruz.

MySqlDataReader dr1 = komut1.ExecuteReader();
dr1.Read();


if (dr1.HasRows == true)
{
if ((ay == "01") && (gun == "01"))
{
Aytotxt.Text = "0";
Yiltotxt.Text = "0";
}
else if (gun == "01")
{
Aytotxt.Text = "0";
Yiltotxt.Text = dr1["YillikTU"].ToString();
}
else
{
Aytotxt.Text = dr1["AylikTu"].ToString();
Yiltotxt.Text = dr1["YillikTU"].ToString();
}
}
else
{
Aytotxt.Text = "0";
Yiltotxt.Text = "0";
}
}
else
{
Ustbilgilbl.Visible = true;
Ustbilgilbl.Text = "Bu gün için kayıt girilmiştir...";
UpdatePanel1.Visible = false;


Ne gibi bi problem olmuş olabilir Yardımlarınızı Bekliyorum şimdiden Teşekkürler...
 

hbektas

Öğrenci
Katılım
7 Eylül 2012
Mesajlar
21
Reaksiyon puanı
0
Puanları
0
evet arkadaşlar uzunca bir uğraştan sonra sorunun nedenini buldum. Webconfig dosyanıza eklemeniz gereken bir satırcık kod bu sorunu kökünden hallediyor =)
işte o derman kod ;

<system.web>
<globalization culture="tr-TR" uiCulture="tr-TR" />
</system.web>

sunucu dili ve yapısı türkçe dışında başka bir dilde ise tarih formatını saat formatını değiştiriyor. hatta ondalık ifadelerdeki virgülü(,) noktaya (.) çeviriyor.Böyle bir problemle karşılaşırsınız diye paylaşmak istedim. ;) İyi Günler
 

mamanybono

Öğrenci
Katılım
15 Eylül 2012
Mesajlar
9
Reaksiyon puanı
0
Puanları
0
Vay anasına, demek istiyorum affınıza sığınarak bütün mesajları yukarıdan aşağıya soluksuz okudum, filim gibiydi yemin ederim :). En son cevabı görünce içimden vay anasına diyesim geldi. :)
 
Üst