if şartı sağlanınca bir sonraki if şartı çalışmasın

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hakanharbeli
Üye
Mesajlar: 76
Kayıt: 01 Nis 2016 03:58

if şartı sağlanınca bir sonraki if şartı çalışmasın

Mesaj gönderen hakanharbeli »

Üstadlarm şimdi iki koşulum var birinci koşul a=0 ise tabloya eklesin eğer 1'e eşit ve ya büyükse eklemesin şöyle bir durum oluyor

tabloda veri yokken a=0 koşulunu sağlayıp ekliyor daha sonra a>=1 koşulunu da sağladığı için bu koşulun kodlarını da çalıştırıyor.

hocam ne yapmalıyım amacım dediğim gibi tabloda hiç veri yoksa eklesin 1 ve ya daha fazla veri varsa eklemesin?

button click kodlarım burada

Kod: Tümünü seç

var
a,i:integer;
  sayi:char;
 begin
   q.Close;
   q.SQL.Clear;
   q.SQL.Add('select isim from lol');
   q.ExecSQL;
   a:=q.RecordCount;

  if a=0 then
  begin
   q.close;
   q.SQL.Clear;
   q.SQL.Add('INSERT INTO lol (isim) VALUES ("'+edit2.Text+'")');
   q.ExecSQL;

     q2.close;
   q2.SQL.Clear;
   q2.SQL.Add('INSERT INTO mac (nick) VALUES ("'+edit2.Text+'")');
   q2.ExecSQL;

   timer1.Enabled:=true;
    end;
    if a >= 1 then


      q.Close;
      q.SQL.Clear;
q.SQL.Add('select isim from lol limit 1') ;
      q.open;
    edit1.Text:=q.Fields[0].AsString;

            q.Close;
      q.SQL.Clear;
q.SQL.Add('UPDATE mac set mac= 1 where nick="'+edit1.Text+'"');
      q.ExecSQL;



     end;
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: if şartı sağlanınca bir sonraki if şartı çalışmasın

Mesaj gönderen fesiharslan »

Merhaba;
Case yapısı işinizi görecektir.

Kod: Tümünü seç

var
  a, i: integer;
  sayi: char;
begin
  q.Close;
  q.SQL.Clear;
  q.SQL.Add('select isim from lol');
  q.ExecSQL;
  a := q.RecordCount;

  case a of
    0: // if a=0 then
      begin
        q.Close;
        q.SQL.Clear;
        q.SQL.Add('INSERT INTO lol (isim) VALUES ("' + edit2.Text + '")');
        q.ExecSQL;

        q2.Close;
        q2.SQL.Clear;
        q2.SQL.Add('INSERT INTO mac (nick) VALUES ("' + edit2.Text + '")');
        q2.ExecSQL;

        timer1.Enabled := true;
      end;
  else // if a >= 1 then
    begin
      q.Close;
      q.SQL.Clear;
      q.SQL.Add('select isim from lol limit 1');
      q.open;
      edit1.Text := q.Fields[0].AsString;

      q.Close;
      q.SQL.Clear;
      q.SQL.Add('UPDATE mac set mac= 1 where nick="' + edit1.Text + '"');
      q.ExecSQL;
    end;
  end;
end;
hakanharbeli
Üye
Mesajlar: 76
Kayıt: 01 Nis 2016 03:58

Re: if şartı sağlanınca bir sonraki if şartı çalışmasın

Mesaj gönderen hakanharbeli »

Kod: Tümünü seç

if a=0 then    // a=0 ise çalışacak kodlar
   begin
   komutlar1 //burada eklesin
   end
else    // yani a=0 değilse çalışacak kodlar
  begin
  komutlar2 //burada mesaj versin
  end;

hocam bunu buton click olayına koyup tıkladığımda önce komut 1 çalışıyor burada listboxa veriyi ekliyor. Eklediği için a eşit değil 0 koşulu oluyor direk komut 2 yi çalışıtıryor
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: if şartı sağlanınca bir sonraki if şartı çalışmasın

Mesaj gönderen fesiharslan »

Şart sayısının artması veya tek bir şartın kullanılması gerektiği durumlarda en sağlıklı çözüm; Case yapısıdır.
En son fesiharslan tarafından 07 Nis 2016 10:50 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
hakanharbeli
Üye
Mesajlar: 76
Kayıt: 01 Nis 2016 03:58

Re: if şartı sağlanınca bir sonraki if şartı çalışmasın

Mesaj gönderen hakanharbeli »

ramazan_t yazdı:
hakanharbeli yazdı:
hocam bunu buton click olayına koyup tıkladığımda önce komut 1 çalışıyor burada listboxa veriyi ekliyor. Eklediği için a eşit değil 0 koşulu oluyor direk komut 2 yi çalışıtıryor
if-else veya case yapılarında komutun ya biri, ya diğeri çalışır. İkisi birden çalışmaz. Yanlış yazmış olabilir misin ?

Aşağıdaki gibi bir dene :

Kod: Tümünü seç

var
a,i:integer;
  sayi:char;
 begin
   q.Close;
   q.SQL.Clear;
   q.SQL.Add('select isim from lol');
   q.ExecSQL;
   a:=q.RecordCount;

  if a=0 then
	  begin
		   q.close;
		   q.SQL.Clear;
		   q.SQL.Add('INSERT INTO lol (isim) VALUES ("'+edit2.Text+'")');
		   q.ExecSQL;
		   q2.close;
		   q2.SQL.Clear;
		   q2.SQL.Add('INSERT INTO mac (nick) VALUES ("'+edit2.Text+'")');
		   q2.ExecSQL;
		   timer1.Enabled:=true;
	   end
  else
	begin
		q.Close;
		q.SQL.Clear;
		q.SQL.Add('select isim from lol limit 1') ;
	        q.open;
                edit1.Text:=q.Fields[0].AsString;
               q.Close;
                q.SQL.Clear;
                q.SQL.Add('UPDATE mac set mac= 1 where nick="'+edit1.Text+'"');
                q.ExecSQL;
	end;
     end;

teşekkürler hocam else ten sonrai kodları da begin end; içerisine almazsam 1. şartın kodları gibi algılıyormuş teşekkürler
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: if şartı sağlanınca bir sonraki if şartı çalışmasın

Mesaj gönderen Lord_Ares »

Ufak bir ek bilgi daha söylemek isterim. İf yapısı içinde and, ve or da kullanılabilir.
if (a=0) or (a>1) then şartlar... ( a sıfıra eşit veya a birden büyükse şunları yap)
if (a=0) and (a>1) then şartlar...(a sıfıra eşit ve a büyükse birden şunlarış yap)
gaus
Üye
Mesajlar: 227
Kayıt: 14 May 2014 07:36
İletişim:

Re: if şartı sağlanınca bir sonraki if şartı çalışmasın

Mesaj gönderen gaus »

Merhabalar
"Exit" komutunu kullanabilirsiniz
hakanharbeli
Üye
Mesajlar: 76
Kayıt: 01 Nis 2016 03:58

Re: if şartı sağlanınca bir sonraki if şartı çalışmasın

Mesaj gönderen hakanharbeli »

Lord_Ares yazdı:Ufak bir ek bilgi daha söylemek isterim. İf yapısı içinde and, ve or da kullanılabilir.
if (a=0) or (a>1) then şartlar... ( a sıfıra eşit veya a birden büyükse şunları yap)
if (a=0) and (a>1) then şartlar...(a sıfıra eşit ve a büyükse birden şunlarış yap)
çok teşekkürler bu da lazımdı meğer burada da parantez koymayı unutuyormuşum :bravo:
hakanharbeli
Üye
Mesajlar: 76
Kayıt: 01 Nis 2016 03:58

Re: if şartı sağlanınca bir sonraki if şartı çalışmasın

Mesaj gönderen hakanharbeli »

gaus yazdı:Merhabalar
"Exit" komutunu kullanabilirsiniz
teşekkürler hocam bu exitten sonraki kodları çalıştırmıyordu değilmi işte aradığım kod buydu da meğer ben begin'ların yerini karıştırmışım
Cevapla