none
Çalışma Dönemi ve Firma Seçimi RRS feed

  • Soru

  • Arkadaşalar Herkese Merhaba

    Benim Sorum Şu Bir Muhasebe Programının Login Formunda Kullanıcı Adı ve Şifre txtBox larım var.

    Çalışma Yılı ve Firma Seç Diye 2 combobox um var.

    benm istediğim şu Programa login olunca seçtiğim firma ve çalışma yılı ile login olmak istiyorum.

    Ve Programın Modüllerinde Bu Login İşlemine Göre Verileri Getirmek İsityorum.

    böyle bir sistemin C# ve Sql Mantığı (Kodları)  nedir bana bu konuda yardımcı Olabilirmisiniz.

    24 Kasım 2012 Cumartesi 03:48

Yanıtlar

  • http://sdrv.ms/TdxRji

    Fikir verme amaçlı bir örnek.

    25 Kasım 2012 Pazar 08:02
    Moderatör
  • Örnekte firmaid ve kullanici adi değişkenleri diğer formlarda nasıl label'lara sabitlenmişse aynı şekilde yaparsın. ++ ile oluşturduğun sql sorgusu sıkıntı. Yazılanlar içinde ' işaretiyle dene, sonucu kendin gör. Verdiğim örnekteki gibi parametre kullanmayı alışkanlık haline getir.
    • Yanıt Olarak İşaretleyen Veli FİLİZ 25 Kasım 2012 Pazar 18:25
    25 Kasım 2012 Pazar 18:09
    Moderatör

  • SqlConnection cnn = newSqlConnection(Data.SqlVer.ConnectStr); SqlCommand cmd = newSqlCommand("select id,Sirket from Users Where kullaniciadi=@kullaniciadi", cnn);

    cmd.Parameters.AddWithValue("@kullaniciadi",kadi);

    //şeklinde olursa daha iyi olur. Hem o kadar tek tırnak, çift tırnak uğraşmana da gerek kalmaz.

    //DataBase sınıfını oluşturmaktaki amacım, olayı göstermekti. Tüm veritabanı işlerini o sınıf üzerinden yürüt.

    //Diğer formlarından veri gönder/ o sınıfta işle/ve verileri getir...

    //olması gereken mantık bu. :D

    //Sorun olur mu olmaz mı buradan kestirmek zor. Kolay gelsin. Yanıt olarak işaretleme.

    cnn.Open(); SqlDataReader dtr = cmd.ExecuteReader(CommandBehavior.CloseConnection); while (dtr.Read()) { Data.SqlVer.user = dtr["id"].ToString(); Data.SqlVer.FirmaAdi = dtr["Sirket"].ToString(); } dtr.Close(); cnn.Close();

    25 Kasım 2012 Pazar 18:52
    Moderatör

Tüm Yanıtlar

  • veritabanı dosyasını firmaAdiYil şeklinde oluşturabilirsiniz. Girişte aldığınız bilgileri kullanarak sadece o dosyanın kullanılmasını sağlamış olursunuz.


    burhansuleymanvural@windowslive.com

    24 Kasım 2012 Cumartesi 08:47
    Yanıtlayıcı
  • Microsoft Access veritabanı kullandığım zamanlarda her firma için bir klasör ve her çalışma yılı için o firma içinde klasör açtırıyordum:

    Firma A --> 2009,2010,2011,2012

    Firma B --> 2010,2012

    vb.klasörler içinde Access dosyası bulunuyordu. İlk açılıştaki seçime göre ilgili Firmanın ilgili çalışma yılı klasörü içindeki Access dosyasını Data dosyası olarak belirtiyor ve verileri ona göre kaydediyordum. Malum Access çok güvenilir olmadığından firma ve çalışma yıllarını birbirinden ayırıyordum. Eğer MySql,MsSql gibi güçlü veritabanlarını kullanacaksanız Bir tablo içerisinde çalışma yıllarını ve dönemlerini kaydedersiniz. Her birine bir kod verirsiniz. Firma A 2010 yılı için A2010 gibi bir kod verdiniz diyelim. Herhangi bir cari, stok vs. kaydettiğinizde o tablodaki bir alana bu kod numarasını ve Id numarasını kaydedebilirsiniz. Sorgulamalarda ise bu alanlardan yararlanarak istediğiniz veriye ulaşabilirsiniz.

    24 Kasım 2012 Cumartesi 14:33
  • İlginiz İçin Çok Teşekkür Ederim Arkadaşlar Fakat Hala Sorunu Çözemedim Sql Yapısını Nasıl Oluşturmam Gerekiyor Bir Kaç yöntem denedim fakat çok uzun bir yol bunu daha pratik şekilde nasıl yapabilirim ?
    24 Kasım 2012 Cumartesi 18:23
  • Uygulama içinde, global değişkenlerin olsun:

    calismaYili;kullaci;firma biçiminde...

    xxx

    Veritabanında çalışma yılı işlemleri ayrı düşünülebilir. Ama firma ve o firmanın kullanıcıları iki ayrı ilişkili tabloda yer alır.

    Kullanıcının login olduğu ekranda, çalışma yılları combobox içinde listelenip bunu seçmesi istenir.

    Kullanıcının firması da aynı mantıkla combobox şeklinde listelenebilir.

    Kullanıcı bu ikisinin seçimini yapar; kullanıcı adını ve şifresini girer: Sen, kullanıcı adı ve şifresine ve o kullanıcının seçim yaptığı firmanın kullanıcısı olup olmadığına bakarak giriş işlemini tamamlarsın.

    Bir diğer seçenek, kullanıcı firmalardan bağımsız bir kullanıcı ve bu firmalar sadece müşteri niteliği taşıyorsa xxx'den öncesi yine geçerli. Yıl seçimini ve firmaları combolara doldurur... kullanıcının adını ve şifresini girmesini istersin... Kullanıcı girişi başarılı ise, seçim yapılan firmayı ve yılı değişkenlerine atarsın. Tüm sorgularında ek bir koşul olarak bu değişkeni de eklersin...

    select * from tablo kayittarihi=getdate() and firma=@firma and calismayili=@calismayili....


    • Düzenleyen Aslan EModerator 24 Kasım 2012 Cumartesi 19:04
    • Yanıt Olarak İşaretleyen Veli FİLİZ 24 Kasım 2012 Cumartesi 19:06
    • Yanıt İşaretini Geri Alan Veli FİLİZ 25 Kasım 2012 Pazar 20:32
    • Yanıt Olarak Öneren V1Kings 15 Temmuz 2017 Cumartesi 18:22
    24 Kasım 2012 Cumartesi 19:03
    Moderatör
  • AsLAN Bey Cevabınız İçin Teşekkür Ederim Aradığım Tam Manasıyla İşte Bu Sizden Ricam Konuyu Biraz Daha Kod Olarak Açmanız Mümkünmü Mantığı Anladım Ama Sql ve C# Tarafında Kodlar Nasıl İşleyecek Main Forma Dediğiniz Gibi Kullanıcıyı Login Yaptırdım Peki Modüllerde Filtreleme İşlemini En Sağlıklı Şekilde Nasılda Yaptırabilirim Yani Main Formdan Bağımsız Formlara Bunu Nasıl Yansıtım. Tşk Ederim
    24 Kasım 2012 Cumartesi 19:09
  • Uygulamanızın tasarlanmış uygun bir hali varsa, veritabanı dosyanızla birlikte profilimdeki mail adresine bir gönderin, oradan bakayım.
    24 Kasım 2012 Cumartesi 19:36
    Moderatör
  • aslan bey sizden rica etsem yapmış olduğunuz örneği benmle paylaşabilirmisiniz.
    24 Kasım 2012 Cumartesi 22:14
  • http://sdrv.ms/TdxRji

    Fikir verme amaçlı bir örnek.

    25 Kasım 2012 Pazar 08:02
    Moderatör
  • Hocam Kodlarım Bunlar Verdiğiniz Örnek Çok Güzel Bu Kodlara Göre Dizaynı Nasıl Yapabilirim.

    Şimdi Girişte Sorgum Tamam

    Firmalar Tablom

    id SirketAdi

    users tablom

    id kullaniciAdi  Sifre Sirket (Firmalar id sine yönleniyor)

    Girişte Kullanıcıyı ve Firmasını Sorguluyorum ve Main Forma Login Oluyor.

    Satınalma Modülümde Bir TextBox var Talep Yeri Diye

    Şimdi Burdaki txtBox un Enabled Özelliği False Burdan Login Olduğum Firmayı bu txtBox a Sabitlemek İstiyorum.

    private void baglantim()
    		{
    			string kadi = textBox1.Text;
    			string sifre = textBox2.Text;
                string firma = cmbFirma.SelectedValue.ToString();
     
     
    			select = "select kullaniciadi,sifre,Sirket from Users";
     
    			if ((textBox1.Text == "") & (textBox2.Text == ""))
    			{
                    MessageBox.Show("Kullanıcı Adı ve Şifrenizi Kontrol Ediniz""Uyarı"MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 
    			}
     
           
    			try
    			{
    				if (kadi != null & sifre != null )
    				{
    					SqlConnection baglanti = new SqlConnection();
    					baglanti.ConnectionString = Data.SqlVer.ConnectStr;
     
    					SqlCommand sorgu = new SqlCommand(select, baglanti);
     
    					SqlDataReader lgSorgu;
     
    					bool onay = false;
     
     
    					try
    					{
    						baglanti.Open();
                            lgSorgu = sorgu.ExecuteReader();
                            while (lgSorgu.Read())
    						{
                                if ((kadi == lgSorgu["kullaniciadi"].ToString()) & (sifre == lgSorgu["sifre"].ToString()) & (firma == lgSorgu["sirket"].ToString()))
    							{
     
    								onay = true;
    								break;
    							}
    						}
                            lgSorgu.Close();
    						baglanti.Close();
     
     
    						SqlConnection cnn = new SqlConnection(Data.SqlVer.ConnectStr);
    						SqlCommand cmd = new SqlCommand("select id from Users Where kullaniciadi = '" + kadi + "'", cnn);
    						cnn.Open();
    						SqlDataReader dtr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
    						while (dtr.Read())
    						{
    							Data.SqlVer.user = dtr["id"].ToString();
    						}
    						dtr.Close();
    						cnn.Close();
     
     
     
    					}
    					catch (Exception ex)
    					{
    						MessageBox.Show(ex.Message);
    					}
     
    					if (onay == true)
    					{
    						MainFolder.FirstApp Form = new MainFolder.FirstApp();
    						Form.Show();
    						this.Hide();
     
    					}
    					else
    					{
    						baglanti.Close();
    						MessageBox.Show("Bu Firmaya Girmek İçin Yetkili Değilsiniz""Uyarı"MessageBoxButtons.OK, MessageBoxIcon.Warning);
     
    					}
    				}
    			}
    			catch (Exception exp)
    			{
    				MessageBox.Show(exp.ToString());
    			}
    		}

    25 Kasım 2012 Pazar 18:04
  • Örnekte firmaid ve kullanici adi değişkenleri diğer formlarda nasıl label'lara sabitlenmişse aynı şekilde yaparsın. ++ ile oluşturduğun sql sorgusu sıkıntı. Yazılanlar içinde ' işaretiyle dene, sonucu kendin gör. Verdiğim örnekteki gibi parametre kullanmayı alışkanlık haline getir.
    • Yanıt Olarak İşaretleyen Veli FİLİZ 25 Kasım 2012 Pazar 18:25
    25 Kasım 2012 Pazar 18:09
    Moderatör
  • Oky Tamam Hocam Eline Sağlık Çözdüm Olayı ;)
    25 Kasım 2012 Pazar 18:25
  • Hocam Şöyle Yaptım Sorun Olmaz Heralde	

    SqlConnection cnn = newSqlConnection(Data.SqlVer.ConnectStr); SqlCommand cmd = newSqlCommand("select id,Sirket from Users Where kullaniciadi = '" + kadi + "'", cnn); cnn.Open(); SqlDataReader dtr = cmd.ExecuteReader(CommandBehavior.CloseConnection); while (dtr.Read()) { Data.SqlVer.user = dtr["id"].ToString();                             Data.SqlVer.FirmaAdi = dtr["Sirket"].ToString(); } dtr.Close(); cnn.Close();

      
    25 Kasım 2012 Pazar 18:43

  • SqlConnection cnn = newSqlConnection(Data.SqlVer.ConnectStr); SqlCommand cmd = newSqlCommand("select id,Sirket from Users Where kullaniciadi=@kullaniciadi", cnn);

    cmd.Parameters.AddWithValue("@kullaniciadi",kadi);

    //şeklinde olursa daha iyi olur. Hem o kadar tek tırnak, çift tırnak uğraşmana da gerek kalmaz.

    //DataBase sınıfını oluşturmaktaki amacım, olayı göstermekti. Tüm veritabanı işlerini o sınıf üzerinden yürüt.

    //Diğer formlarından veri gönder/ o sınıfta işle/ve verileri getir...

    //olması gereken mantık bu. :D

    //Sorun olur mu olmaz mı buradan kestirmek zor. Kolay gelsin. Yanıt olarak işaretleme.

    cnn.Open(); SqlDataReader dtr = cmd.ExecuteReader(CommandBehavior.CloseConnection); while (dtr.Read()) { Data.SqlVer.user = dtr["id"].ToString(); Data.SqlVer.FirmaAdi = dtr["Sirket"].ToString(); } dtr.Close(); cnn.Close();

    25 Kasım 2012 Pazar 18:52
    Moderatör