Arkadaşlar Bu for döngüsü neden düzgün çalışmıyor?

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

Arkadaşlar Bu for döngüsü neden düzgün çalışmıyor?

Mesaj gönderen hakanharbeli »

*1 adet edit 1 adet listbox ve bir adet buton ekledim

*editten listbox'a 3 adet veri girdiğim zaman sql.query ile veritabanına bu verilerin isminin olduğu satırdaki mac sütununa 20 rakamını update edecek.

*ama bir türlü doğru dürüst update olmadı ya birinci satırdakini update edip bırakıyor ya da son satırdakini

Buyrun butonclick kodum.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
 var
 a:integer;
  i:integer;
  ad:string;

 begin
  a:=l.Items.Count;

  if a<3 then
  begin

   l.Items.Add(edit1.Text);  // veri sayısı 3 ten azsa veri girmeye devam edecek



end
 else  if a=3 then                               // 3'e eşit olduğunda ilk satırdan son satıra kadar tek tek isimlerin veri tabanındaki mac sütununa 20 yazacak
    begin
    begin
    for i:=0  to l.Items.count-1 do

  ad:=(l.Items.Strings[i]);


q.Close ;
q.SQL.Clear;
q.SQL.Add('UPDATE lol SET mac = 20 WHERE ad = "'+ad+'";'); //table adı lol ad sütununda listboxtaki ismi bulup onun mac sütununa 20 yazacak
   q.ExecSQL;
   q.Free;
    end;
   begin
    l.SelectAll;                               // daha sonra listboxı temizleyip tekrar veri girecek
l.DeleteSelected;
l.Items.Add(edit1.Text);



end;

    end;


 end;
yardımlarınız için şimdiden teşekkür ederim.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Arkadaşlar Bu for döngüsü neden düzgün çalışmıyor?

Mesaj gönderen Lord_Ares »

Kod: Tümünü seç

else  if a=3 then                               // 3'e eşit olduğunda ilk satırdan son satıra kadar tek tek isimlerin veri tabanındaki mac sütununa 20 yazacak
    begin
    begin
 
    for i:=0  to l.Items.count-1 do
        ad:=(l.Items.Strings[i]);
q.Close ;
Kodunuzun doğruluğunu test edin, for döngüsünün begin end bloğu nerde, ve niye if a=3 then kısmından sonra çift begin var.
oradaki else olmasına gerek var mı , bence kod yapısını tekrar oluşturun. Çalışmaması normal.
skalkan
Üye
Mesajlar: 21
Kayıt: 28 Haz 2003 08:05

Re: Arkadaşlar Bu for döngüsü neden düzgün çalışmıyor?

Mesaj gönderen skalkan »

Kod: Tümünü seç

procedure TForm1.Button2Click(Sender: TObject);
var
 a:integer;
  i:integer;
  ad,sql:string;
 begin
  a:=ListBox1.Items.Count;
  if a<3 then
  begin
   ListBox1.Items.Add(edit1.Text);  // veri sayısı 3 ten azsa veri girmeye devam edecek
  end
  else
 begin
    if a=3 then // 3'e eşit olduğunda ilk satırdan son satıra kadar tek tek isimlerin veri tabanındaki mac sütununa 20 yazacak
    begin
      for i:=0  to ListBox1.Items.count-1 do
      begin
         ad:=ListBox1.Items.Strings[i];
         sql:='UPDATE lol SET mac = 20 WHERE ad = '+QuotedStr(ad);
         q.Close ;
         q.SQL.Clear;
         q.SQL.Add(sql);
         q.ExecSQL;
       //q.Free; // bunu yapamazsın
      end;
    ListBox1.Items.Clear; // daha sonra listboxı temizleyip tekrar veri girecek
    //ListBox1.DeleteSelected;
    //ListBox1.Items.Add(edit1.Text);
    end;
 end;
end;
Bu düzgün çalışır
Cevapla