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;
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.
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;