none
Otomatik Belge No Üretme RRS feed

  • Soru

  • baglanti.Open();

                komut.Connection = baglanti;

                komut.CommandText = "select max (Belge_No)+1 from hek_tutanagi";

                string max = komut.ExecuteScalar().ToString();

                textBox1.Text = max.ToString();

                baglanti.Close();

    Yukardaki kodu Yeni Belge Ekle butonunun click 'ne yazdım db deki tabloya gidiyor sırasıyla belge no veriyor. bunda sıkıntı yok yalnız 4 kullanıcı birden belge ekleye bastığında 4 ünede aynı belge noyu veriyor. ayrı ayrı verilmesini nasıl sağlarım triggerlede olur kullandığım db oracle,  Örnek tablom;

    Aynı şekilde sıra noyuda vermek istiyorum.

    Sn        Belge_no                     ogrenci            açıklama

    1             1                                  ahmet              1

    2             1                                  mehmet           1

    3             1                                  ali                    1

    1             2                                  x                     1

    2             2                                  y                     0

    16 Ocak 2019 Çarşamba 08:36

Tüm Yanıtlar

  • Belge_no alanı hep +1 olacak ise bu alanı idendity(1,1) olarak belirleyin  her insert geldiğinde otomatik olarak +1 eklesin . 



    Altan Özdemir

    16 Ocak 2019 Çarşamba 08:51
  • o nda 3 tane kayıt gireceksem belge no +1 ilerlemeyecek
    16 Ocak 2019 Çarşamba 14:31
  • Bu senin belirleyeceğin bir durum değil tabloya tek seferde 100 kayıt eklersende o alanı otomatik olarak +1 yapacak . Çünkü tabloya insert edilme sıraları var .

    Altan Özdemir

    16 Ocak 2019 Çarşamba 14:47
  • Otomatik artan numara kullanırsan, ancak veritabanına eklendikten sonra o numarayı alabilirsin (kaldı ki o numaranın asil onemi, ilgili kaydı takip edebilmek - sıralı olması şart degil).

    Illa sıralı olsun, arada boşluklar olmasın, eklenmeden once alınabilsin dersen, ya bir tablodaki alanı arttirirsin ya da mevcut veritabanı özelliklerinden birisini kullanırsın.

    Veritabaninin ne oldugunu söylememişsin. postgreSQL'de serial, MS SQL Server'da sequence kullanarak yapabilirsin.

     
    16 Ocak 2019 Çarşamba 15:24
    Yanıtlayıcı
  • veri tabanım oracle, yorumları okuduktan sonra  aklıma birşey geldi, iki tablo olsa tablo_1 de kullanıcı adı ve Üretilen sayı tablo_2 de kayıtların tutulduğu alanlar var, şimdi bir triggerle kullanıcının verdiği son numarayı tablo2 de belge_noya aktarabilir miyiz? tablo1e kullanıcı belge_no ekleyecek aynı kullanıcı tablo_2 ye kayıt eklediğinde, tablo_1de oluşturduğu sayıyı tablo_2deki belge no alanına aktaracak ve tablo_1 in açıklama alanına bu no kullanıldı diyecek, açıklama alanı boş ise yeni kayıt için o belge noyu verecek. bu şekilde bir trigger yazılabilirmi? Şimdiden teşekkür ederim.
    16 Ocak 2019 Çarşamba 16:17
  • Triggerla ilgisini pek kuramadım. Oracle'da da sequence var:

    Create Sequence

    Sequence ile otomatik artan numara ornegi
    16 Ocak 2019 Çarşamba 16:34
    Yanıtlayıcı
  • hocam iki tablo arası veri aktarımını gösteren trigger örneği verebilirmisiniz? tablo_2 ye kayıt gönderince gidip tablo_1 in kullanıcı adını ve açıklamasını kontrol edecek kayıt gönderen kullanıcı adına eşitse ve açıklamada birşey yazmıyorsa tablo_1deki sıra noyu alıp tablo2 nin belge nosuna atacak böyle birşey yazabilirmiyiz. kullanıcı bazlı belge_no üretme, aslında yapmak istediğim fatura mantığı Birtane fatura no var o faturaya ekli 100 lerce malzeme var hepsinin sıra nosu var ama fatura no tek, teşekkür ederim
    16 Ocak 2019 Çarşamba 17:48