Seçilen Veriye Göre Kod Atama
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Seçilen Veriye Göre Kod Atama
Merhaba Arkadaşlar
Formumda bir db combobox ve içerisinde birden fazla değer var.
Yeni bir kayıt eklerken DBComboBox içerisinde bir değer seçildiğinde DbEdit1'e otomatik bir değer vermesini istiyorum. Veritabanı olarak MSSQL ve AdoTable kullanıyorum.
Örnek DbComBox ta Müdür Değeri seçildiyse DbEdit1'e M1 yazsın. Ancak her bir sonraki kayıtta DbEdit'taki değer M2 .. M3... M4 olsun.
Öncelikle bu mantık doğru mudur? Kod yazımında yardımda bulunur musunuz?
İyi çalışmalar.
Formumda bir db combobox ve içerisinde birden fazla değer var.
Yeni bir kayıt eklerken DBComboBox içerisinde bir değer seçildiğinde DbEdit1'e otomatik bir değer vermesini istiyorum. Veritabanı olarak MSSQL ve AdoTable kullanıyorum.
Örnek DbComBox ta Müdür Değeri seçildiyse DbEdit1'e M1 yazsın. Ancak her bir sonraki kayıtta DbEdit'taki değer M2 .. M3... M4 olsun.
Öncelikle bu mantık doğru mudur? Kod yazımında yardımda bulunur musunuz?
İyi çalışmalar.
[Her Canlı Bir Gün Ölümü Tadacaktır]
Re: Seçilen Veriye Göre Kod Atama
Öncelikle dbedit1 tablonuzun hangi fieldine bağlı?
Yapacaklarımızı sıralayalım:
-eğer dbcomboboxumuzun ilk itemi seçili ise(Müdür)
global olarak tanımlanmış string değişkene 'M' değerini ata. (a değişkeni olsun)
yine global olarak tanımlanmış integer tipi değişkene 1 değerini ata.(i değişkeni olsun)
Daha sonra her yeni kayıt eklendiğinde; 'i' değerini bir arttır ve dbedit1'in bağlı olduğu fieldin değerini a+inttostr(i) değerine eşitle.
-eğer dbcomboboxumuzun ikinci itemi seçili ise
...
gibi..
Kodlara dökmek size kalmış, kolay gelsin
Yapacaklarımızı sıralayalım:
-eğer dbcomboboxumuzun ilk itemi seçili ise(Müdür)
global olarak tanımlanmış string değişkene 'M' değerini ata. (a değişkeni olsun)
yine global olarak tanımlanmış integer tipi değişkene 1 değerini ata.(i değişkeni olsun)
Daha sonra her yeni kayıt eklendiğinde; 'i' değerini bir arttır ve dbedit1'in bağlı olduğu fieldin değerini a+inttostr(i) değerine eşitle.
-eğer dbcomboboxumuzun ikinci itemi seçili ise
...
gibi..
Kodlara dökmek size kalmış, kolay gelsin

Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'
Re: Seçilen Veriye Göre Kod Atama
Saçma olacak yazdıklarım ama öğrenmek adına kodu bu konu başlığında oluşturmak istiyorum.
Dbedit tablo üzerinde Kod alanına bağlı.
Önerinize göre oluşturacak olursam
buraya kadar sanırım bir sorun yok. Ama ben yukardaki kodu nereye yazacağım ? Kaydet butonunun içerisine mi ?
Daha sonra her yeni kayıt eklendiğinde olayını nasıl anlayacağım AdoTable'ın After insert kısmına mı kodu devam edeceğim. Döngüyü nasıl kuracağım.
Bu düğüm oluyor işte. Yardım lütfen.
Dbedit tablo üzerinde Kod alanına bağlı.
Önerinize göre oluşturacak olursam
Kod: Tümünü seç
var
a;char;
i:integer;
begin
if dbcombobox1.ItemIndex= 0 then a:='M';
i:=1 ;
for:=i++;
Daha sonra her yeni kayıt eklendiğinde olayını nasıl anlayacağım AdoTable'ın After insert kısmına mı kodu devam edeceğim. Döngüyü nasıl kuracağım.
Bu düğüm oluyor işte. Yardım lütfen.
[Her Canlı Bir Gün Ölümü Tadacaktır]
Re: Seçilen Veriye Göre Kod Atama
Tam anlamadım ama @HusoNet'in son numarayı bulma diye bir makalesi vardı onu kullanarak belki birşeyler yapabilirsiniz.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Seçilen Veriye Göre Kod Atama
s.a.
bu işlem için kayıt etmeden önce tablodaki enson 'M' ile başlayan değeri bulup onun bir fazlasını vermeniz lazım.
veyahutta en son verdiğiniz değeri bir yerde (veritabanı, ini dosyası, register) tutmanız lazım olunca bir arttırıp tekrar kaydetmeniz lazım.
bu tarz numara arttırımları forumda var. onları incelerseniz bi fikir edinebilirsiniz.
kodları nereye yazacağınız programınızın yapısına ve size kalmış bir durum. Nerede olması lazım sizce?
kaydet densonra , before post olayında veya veritabanında, vb...
kolay gelsin.
bu işlem için kayıt etmeden önce tablodaki enson 'M' ile başlayan değeri bulup onun bir fazlasını vermeniz lazım.
veyahutta en son verdiğiniz değeri bir yerde (veritabanı, ini dosyası, register) tutmanız lazım olunca bir arttırıp tekrar kaydetmeniz lazım.
bu tarz numara arttırımları forumda var. onları incelerseniz bi fikir edinebilirsiniz.
kodları nereye yazacağınız programınızın yapısına ve size kalmış bir durum. Nerede olması lazım sizce?
kaydet densonra , before post olayında veya veritabanında, vb...
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Seçilen Veriye Göre Kod Atama
Global değişkenler unit penceresi içinde, type tanımlamalarının altında implementation tanımlamasının üstündeki var bloğu altına yazılır.
Ne zaman bu kodun işlev görmesini istiyoruz: Örneğin yeni girilen kayıt bilgilerini sisteme eklemek için bir butonumuz olsun. Adı Button1.
Her şey fazlasıyla basit aslında. Tek önemli nokta doğru yolu izlemek, doğru tahmin ve mantıklar yürütmek. Delphi mantığıyla ilgili bence biraz sorununuz olabilir. Lütfen yanlış anlamayın ancak "nereye yazacam" diye sormanız temelde bir eksiklik olduğunu gösterir. Veritabanıyla ilgili e-book hatta gerçek kitap edinmenizde fayda var..
Kolay gelsin..
Kod: Tümünü seç
...
var
Form1: TForm1;
a : char;
i : integer = 1; //Eğer sizin yaptığınız gibi kod bloğunun içinde 1 değerini verirsek, o kod tekrar döndüğünde yine 1 değerini alacaktır, arttırmamızın anlamı kalmaz.
implementation
...
Kod: Tümünü seç
...
procedure TForm1.Button1Click(Sender: TObject);
begin
if dbcombobox1.ItemIndex= 0 then
begin
a:='M';
i=i+1;
dbedit1.text=a+inttostr(i); //Gerekli olan table1.post table1.edit falan gibi kodları yazmadım lütfen gerektiği yerlere ekleyiniz.
end;
end;
...

Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
'Yükseldikçe küçülen bir uçurtma..'
Re: Seçilen Veriye Göre Kod Atama
2. cevabımda da yazdığım gibi "öğrenmek adına..."
Haklısınız temelde eksiklikler olabilir. Ezbere işde yapmak istemiyorum kod talep ederek. Onun için çalışıyorum. Delphi kitabım var, indexten aradığım konuya bakmak yerine kitabın başından okuma kararı aldım öğrenmek adına.
İlk yanıtınızdan sonra biraz aklım karışmıştı. Son yanıtınızdaki kod içeriğinde ne demek istediğinizi anlamış oldum.
Ayrıca Mantık yürütme konusunda fikir sahibi olduğumu düşünüyorum. Bu fikirleri koda nasıl dökeceğimi bilmiyorum. Çoğu zaman tanımın sonuna . koyarak ne özelliklerini kullanabileceğimi görüyor deneme yanılma yöntemiyle bulmaya çalışıyorum. Bu beni zora soktuğu içinde kitabın başından konuları öğrenmeye başladım
Teşekkür eder, iyi çalışmalar dilerim.
Haklısınız temelde eksiklikler olabilir. Ezbere işde yapmak istemiyorum kod talep ederek. Onun için çalışıyorum. Delphi kitabım var, indexten aradığım konuya bakmak yerine kitabın başından okuma kararı aldım öğrenmek adına.
İlk yanıtınızdan sonra biraz aklım karışmıştı. Son yanıtınızdaki kod içeriğinde ne demek istediğinizi anlamış oldum.
Ayrıca Mantık yürütme konusunda fikir sahibi olduğumu düşünüyorum. Bu fikirleri koda nasıl dökeceğimi bilmiyorum. Çoğu zaman tanımın sonuna . koyarak ne özelliklerini kullanabileceğimi görüyor deneme yanılma yöntemiyle bulmaya çalışıyorum. Bu beni zora soktuğu içinde kitabın başından konuları öğrenmeye başladım

Teşekkür eder, iyi çalışmalar dilerim.
[Her Canlı Bir Gün Ölümü Tadacaktır]
Re: Seçilen Veriye Göre Kod Atama
Merhaba,conari yazdı:Tam anlamadım ama @HusoNet'in son numarayı bulma diye bir makalesi vardı onu kullanarak belki birşeyler yapabilirsiniz.
Aşadağıdaki şekilde kodu oluşturdum fakat program kapandığında son numara hafızada tutulmuyor. Yukardaki arkadaşın makalesini bulmaya çalıştım ama bulamadım.
Bu kod ile program çalıştığında
[URL=http://www.yukle.tc][img]http://im ... .JPG[/img][/url] gibi oluyor.
Ancak istediğim
1. Kaydım için Genel Müdür kodu: G1 olsun
2. Kaydım İçin Müdür Kodu: M1 Olsun (3.kaydım olduğu için M3 Olmuş)
Yardımcı olur musunuz?
Teşekkürler.
Kod: Tümünü seç
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
table1.Edit;
table1.FieldByName('kayitzamani').AsDateTime:=Now;
begin
IF dbCOMBOBOX1.ItemIndex = 0 THEN
begin
a:='Y';
i:=i+1;
dbedit1.Text := a + inttostr(i);
end
else
if dbcombobox1.ItemIndex = 1 then
begin
a:= 'G';
i:=i+1;
dbedit1.text := a + inttostr(i);
end
else
if dbcombobox1.ItemIndex = 2 then
begin
a:= 'M';
i:=i+1;
dbedit1.text := a + inttostr(i);
end
else
if dbcombobox1.ItemIndex = 3 then
begin
a:= 'Ş';
i:=i+1;
dbedit1.text := a + inttostr(i);
end
else
if dbcombobox1.ItemIndex = 4 then
begin
a:= 'V';
i:=i+1;
dbedit1.text := a + inttostr(i);
end
else
if dbcombobox1.ItemIndex = 5 then
begin
a:= 'U';
i:=i+1;
dbedit1.text := a + inttostr(i);
end
else
if dbcombobox1.ItemIndex = 6 then
begin
a:= 'P';
i:=i+1;
dbedit1.text := a + inttostr(i);
end
else
if table1.FieldCount=0 then showmessage ('Tüm Alanları Doldurunuz');
table1.post;
end;
end;
[Her Canlı Bir Gün Ölümü Tadacaktır]
Re: Seçilen Veriye Göre Kod Atama
Bir kelimenin anlamını öğretsen bile yeter..



Re: Seçilen Veriye Göre Kod Atama
Arkadaşlar Merhaba,
Bu projede daha doğrusu bu ödevimde paradox veritabanı kullanıyorum.
kullanıcı oluşturma bölümündeyim. Kullanıcı koduna veritabanında * özelliği verdim.
Program ilk çalıştığında düzgünce kod veriyor. Daha önce seviyesi şef olupta oluşturulmuş Ş1 koduna sahip bir kullanıcı varsa programı yeniden başlattığımda yeni kullanıcı deyip seviyesini şef seçtiğimde kaydet dediğimde Ş1 kodunu vermeye çalışıyor. Ondan dolayı da "Key violation" hatası alıyorum. Kaydetme gerçekleşmiyor.
Kullanıcı oluşturma ekranına girdiğimde son girilen kodları hafızasında tutup yeni oluşturacağım kayıtları bu hafızaya göre veren işi nasıl yaptırabilirim?
Daha yeniyim bu işte, ister fikir verin ister yol gösterin ama lütfen yardım edin.
Herkese iyi akşamlar.
Bu projede daha doğrusu bu ödevimde paradox veritabanı kullanıyorum.
kullanıcı oluşturma bölümündeyim. Kullanıcı koduna veritabanında * özelliği verdim.
Program ilk çalıştığında düzgünce kod veriyor. Daha önce seviyesi şef olupta oluşturulmuş Ş1 koduna sahip bir kullanıcı varsa programı yeniden başlattığımda yeni kullanıcı deyip seviyesini şef seçtiğimde kaydet dediğimde Ş1 kodunu vermeye çalışıyor. Ondan dolayı da "Key violation" hatası alıyorum. Kaydetme gerçekleşmiyor.
Kullanıcı oluşturma ekranına girdiğimde son girilen kodları hafızasında tutup yeni oluşturacağım kayıtları bu hafızaya göre veren işi nasıl yaptırabilirim?
Daha yeniyim bu işte, ister fikir verin ister yol gösterin ama lütfen yardım edin.
Herkese iyi akşamlar.
[Her Canlı Bir Gün Ölümü Tadacaktır]