Stok kodunu otomatik verme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ertline
Üye
Mesajlar: 137
Kayıt: 23 Nis 2005 09:15
Konum: Bartın
İletişim:

Mesaj gönderen ertline »

Firebird kullanıyorum.
Ve kendimce bir çözüm buldum.
Faydası olacağına inanıyorum.Şöyleki:

Kod: Tümünü seç

1.ayarlar adında bir tablo oluşturdum.
2.tabloya stok_kodu(double),stok_hrk_simge(varchar(2)),stok_hrk_durumu(Varchar(5))(EVET,HAYIR için) alanları açtım
3.
if data.ayarlarST_KODU_GELME_DURUMU.AsString='EVET' then begin
data.ayarlar.edit;
data.ayarlarSTOK_KODU.AsFloat:=data.ayarlarSTOK_KODU.AsFloat+1;
data.ayarlar.Post;

data.stok_kayit.Edit;
data.stok_kayitSTOK_KODU.AsString:=data.ayarlarSTOK_KODU_SIMGE.AsString+dbtext1.Caption;
end;
kodu ile STOK_KAYIT tablosundaki STOK_KODU varchar(10) olan alana isteğe bağlı olarak eklettirdim.
4.Ayarlar diye bir form hazırladım ve oradan kontrolü sağladım.
Fikirleriniz için Allah Razı Olsun...
"Bilginin Doruğuna Hep Birlikte..."
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

selman yazdı:Ama ben 2.bir kez genarators tanımladığımda Roolback oluyo Commit olmuyor peki bu neden acaba hocam.
?? Anlamadım.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

selam coderlord hocam şimdi şöyle benim bir tablomda id alan iye bir alan var ve ben başka bir filde 2.bir generators tanımlayamıyorum........
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Generator isimleri farklı olacak. Trigger içinden istediğin alanı autoincrement yapabilmen lazım. Bunun için bir kısıt yok.
Kullanıcı avatarı
selman
Üye
Mesajlar: 664
Kayıt: 04 Ara 2003 12:06
Konum: İzmir

Mesaj gönderen selman »

Çok sağolun coderlord hocam.tşkederim.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Peki bişey sorayım size;

Benim 1,000 civarı stok kartım var bunun 750'si aktif.250'si de hergün işlem yapılan stoklar..Bu kod otomatik veriliyorsa örneğin ST000371 nolu stoğun hangisi olduğu ben nasıl hatırlayabilirim?Eğer filtreleme ve arama kullanacaksam o kodu niye tanımlıyorum.Bu durumda manuel olarak gir derseniz o zaman otomatik kod vermemin maksadı ne?Eğer filtre kriterleri için kullanılacaksa Özel Kod adlı icadın icat edilme amacı ne?
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

bLue aLonE yazdı:derseniz o zaman otomatik kod vermemin maksadı ne?Eğer filtre kriterleri için kullanılacaksa Özel Kod adlı icadın icat edilme amacı ne?
Hardcopy olarak belgeyi tutuyorsan arşivlemede ihtiyaç olabilir o numaraya. Belki etiket bastırıyorsun. Mamüllere numara verdiriyorsun vs. Bu gibi sebeplerle gerekli olabilir.
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

@coderlord;

O zaman da manuel girişe izin vermenin maksadı ne gibi bi soru çıkıyor karşımıza...

Nefret ediyorum bu zihniyetten..Güya kullanıcıyı serbest bırakıyoruz.Doğru tektir, bunun tartışması olmaz.Aynı şeyin tartışmasını biz de yaptık arkadaşlarla ve istedikleri şey de aynen bu şekilde.Böyle saçmalıkları kim icat ediyor yahu :evil:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Soruda dikkatimi çekti de
...stok_hrk_durumu(Varchar(5))(EVET,HAYIR için)
Evet Hayır için 5 hane mi ayırıyorsun :?: Haydı bilemedin Evet için E Hayır için H. Fakat ideali en iyi perfomansı/sonucu karşındakinin dilinden konuşarak alabilirsin. Yani (0 veya 1) sayısal bir alan ve Hayır için 0 (sıfır) Evet için 1 (bir) :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba, kirliliğe yol açmamak için sorunuma çözüm olabilecek aramadan sonra bulduğum bu başlığın altına sorunumu yazmak istedim.

Kod: Tümünü seç

procedure TFrmFotTsh.BitBtn4Click(Sender: TObject);
begin
  tshnoveribqry.Close;
  tshnoveribqry.SQL.Clear;
  tshnoveribqry.SQL.Add('select max(TESHIS_NO) as TSH_NO FROM FOTO_TESHIS');
  tshnoveribqry.SQL.Add('where TESHIS_YILI=:tesyili');
  tshnoveribqry.ParamByName('tesyili').AsInteger:=strtoint(copy(datetostr(date),7,10));
  tshnoveribqry.Open;
  dm1.TshIBDSet.Append;
  dbedit20.Text:=inttostr(tshnoveribqry.fieldbyname('TSH_NO').AsInteger+1);
  dbedit21.Text:=inttostr(strtoint(copy(datetostr(date),7,10)));
  dbedit1.SetFocus;
end;
yukarıdaki kod ile tablomda ilgili yıla ait en büyük değeri bulduruyor ve sonra o değere bir ekleterek dbeditler içine yazdırıyorum. veriler ilgili alanlara girildikten sonra post işlemi yapılıyor. buraya kadar normal gibi görünüyordu ve çalışıyordu taki veri girişinde ard arda giriş yapmak icap edene kadar. gördüm ki program ilk çalıştığında kod çalışıyor ve bir arttırarak veriyor ama hemen arkasından yeni bir kayıt girmek isteyince sayıyı arttırmıyor son girilen sayı kalıyor ve haliyle pk olan bu yıl ve no alanı hata veriyor aynı sayılar girilmek istendiğinden. sanırım kayıt commit olmuyor. bu yüzden aynı sayıyı üretiyor diyeceğim ama son girilen sayıyı nasıl buluyor. kayıt düğmelerine data setin post eventine transaction.commit komutlarını koymama ve dataseti değişik durumlarda ve post durumunda kapatıp açmama karşın sayı yinede artmıyor taki programı kapatıp açana kadar. böyle bırakırsam şu anlama geliyor her kayıtta kullanıcı programı kapatıp açması gerekecek buda programın patlaması demek. ne yapmalıyım neye dikkat etmeliyim çözemedim bir türlü

teşekkür ve saygılarımla.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

Sorun çözüldü ustalarım. No verme işlemini query ve ona bağlı transaction ile yapıyordum. bugün başka işle uğraşsamda bu sorunu nasıl geçerim diye düşünürken niye sorgunun transactionu nu ilgili tablonun dataset transactionu na bağlamıyorum diye aklıma geldi ve uyguladım böylelikle sorun çözüldü

saygılarımla
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla