Merhaba Arkadaşlar,
Firebird kullanıyorum.Kod sutunumda boş alanlar var bir önceki ile doldurmaya çalıştım olmadı...Yardımlarınızı bekliyorum.Saygılarımla..
procedure TForm1.Button1Click(Sender: TObject);
var
sd:string;
begin
while not IBQuery1.Eof do
begin
if IBQuery1.FieldByName('KOD').AsString='' then
begin
with IBQuery1 do
Begin
Close;
SQL.Clear;
SQL.Add('UPDATE HASTALIK SET KOD='+sd);
ExecSQL;
End;
end
else
begin
sd:=IBQuery1.FieldByName('KOD').AsString
end;
end;
end;
procedure TForm1.IBQuery1AfterPost(DataSet: TDataSet);
begin
IBTransaction1.CommitRetaining;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sd: string;
begin
IBQuery1.First; // eklenen
sd := IBQuery1.FieldByName('KOD').AsString // eklenen
while not IBQuery1.Eof do
begin
if IBQuery1.FieldByName('KOD').AsString = '' then
begin
with IBQuery1 do
Begin
Close;
SQL.Clear;
SQL.Add('UPDATE HASTALIK SET KOD = ' + sd);
ExecSQL;
End;
end
else
sd := IBQuery1.FieldByName('KOD').AsString
IBQuery1.Next; // eklenen
end;
end;
procedure TForm1.IBQuery1AfterPost(DataSet: TDataSet);
begin
IBTransaction1.CommitRetaining;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
sd: string;
begin
IBQuery1.First;
sd := IBQuery1.FieldByName('KOD').AsString;
while not IBQuery1.Eof do
begin
if IBQuery1.FieldByName('KOD').AsString = '' then
begin
with IBQuery1 do
Begin
Edit;
FieldByName('KOD').AsString := sd;
Post
End;
sd := IBQuery1.FieldByName('KOD').AsString
IBQuery1.Next;
end;
end;
Evet @ylmz ın dediği gibi ya ilk kayıtta boşsa aynen kalacak yada sd := '0'; gibi bir değer atayıp ilk kayıdın boş olması önlenecek. Fakat en önemlisi ben de dikkat etmemişim verdiğiniz update cümlesini çok sakat olması.
malum bu şekilde tüm kayıtları SET etmiş olur. Ya uygun şekilde IBUpdateSQL bağlayıp ya da mevcut şekilde fakat bu sefer üzerindeki/işlem gören kaydın KEY alanını where içinde kullanabileceğiniz bir UPDATE yazarak yapabilirsiniz.
procedure TForm1.Button1Click(Sender: TObject);
var
sd: string;
begin
while not IBDataSet1.Eof do
begin
if IBDataSet1.FieldByName('KOD').AsString = '' then
begin
with IBDataSet1 do
begin
Edit;
FieldByName('KOD').AsString := sd;
Post;
end;
end
else
begin
sd := IBDataSet1.FieldByName('KOD').AsString
end;
IBDataSet1.Next;
end;
end;