Arkadaşlar hepinize selamlar.SQL serverda bulunan (bit) olarak tanımlı (durum) isimli alanıma kayıt yapmak istiyorum ama birtürlü kayıt yapmıyor.kod aşağıda nerede yanlışım var bi bakarsanız sevinirim
Bu kodtaki amacım listbox1 deki seçili alana karşılık gelen durum alanını true veya 1 yapmak.
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
listbox2.Items.Add(listbox1.Items.Strings[listbox1.itemindex]);
listbox1.Items.Delete(listbox1.itemindex);
if listbox1.itemindex > -1 then
begin
adodataset1.first;
while not adodataset1.Eof do
begin
if adodataset1skod.text = listbox1.Items.Strings[listbox1.itemindex] then
begin
adodataset1.Edit;
adodataset1durum.AsBoolean :=true;
adodataset1.Post;
adodataset1.Next;
end;
end;
end;
end;
Bit alanıma kayıt yapamıyorum.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Selam..
- ListBox1'den seçim yaptın ve BitBtn1'e bastın o seçili satır silinip ListBox2'ye aktarılıyor. Buraya kadar tamam.
- Satır aktarma yapıldıktan hemen sonra her iki TListBox için de ItemIndex -1 olduğunu gözardı etmişsin
Bu yüzden butona her bastığında beklediğin veritabanı işlemini aktarma ile engellemiş olduğundan gerçekleşmeyecektir.
- Ayrıca başka bir konu, veritabanında döngü yerine SQL sorgu ile bunu hallet. Server ile senin arandaki tarfik 0'a iner...
gibi...
- ListBox1'den seçim yaptın ve BitBtn1'e bastın o seçili satır silinip ListBox2'ye aktarılıyor. Buraya kadar tamam.
- Satır aktarma yapıldıktan hemen sonra her iki TListBox için de ItemIndex -1 olduğunu gözardı etmişsin

- Ayrıca başka bir konu, veritabanında döngü yerine SQL sorgu ile bunu hallet. Server ile senin arandaki tarfik 0'a iner...
Kod: Tümünü seç
With AdoQuery1 do
begin
// Connection vs. unutulmasın
Active := False;
SQL.Clear;
SQL.Add('UPDATE tabloadi');
SQL.Add('SET Durum = :durum');
SQL.Add('Where skod = :skod');
Parameters.ParamByName('durum').Value := True;
Parameters.ParamByName('skod').Value := QuotedStr(listbox1.Items.Strings[listbox1.itemindex]);
ExecSQL;
end;