Merhaba,
DBgrid içerisinde buton ile kayıt işlemi yapıyorum ancak doğal olarak önceki tüm kayıtlar listeleniyor, isteğim ise her post işleminden sonra dbgridin içeriği boş olsun, sütunlar kalacak grid boş görünecek bu işlemi nasıl yapabilirim,
saygılarımla,
DBGrid İçerik Boşaltma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: DBGrid İçerik Boşaltma
Merhaba,
Bir yöntem DBGrid'in bağlı olduğu TDataSet (AdoQuery, Query, vb) Filter özelliğini kullanmak olabilir. Filtre kısmına PRIMARY KEY alanın değerini verip TDataSet.Filtered := True; şeklinde filtreyi aktif hale getirirseniz sadece tek kayıt gözükecektir.
Örnek bir prosedür aşağıdaki gibi olabilir.
Kullanımı şöyle olacaktır.
Bir yöntem DBGrid'in bağlı olduğu TDataSet (AdoQuery, Query, vb) Filter özelliğini kullanmak olabilir. Filtre kısmına PRIMARY KEY alanın değerini verip TDataSet.Filtered := True; şeklinde filtreyi aktif hale getirirseniz sadece tek kayıt gözükecektir.
Örnek bir prosedür aşağıdaki gibi olabilir.
Kod: Tümünü seç
procedure ShowNewRecord(const DataSet: TDataSet; const KeyFieldName, YeniKayitIDDegeri: string);
begin
DataSet.DisableControls();
try
DataSet.Filtered := False;
DataSet.Filter := KeyFieldName + ' = ' + QuotedStr(YeniKayitIDDegeri);
DataSet.Filtered := True;
finally
DataSet.EnableControls();
end;
end;
Kod: Tümünü seç
AdoQuery1.Post();
ShowNewRecord(AdoQuery1, 'ID', AdoQuery1.FieldByName('ID').AsString);
Re: DBGrid İçerik Boşaltma
Hocam öncelikle geç cevap için özür dilerim. net sorunu sebebi ile giremedim cevabınızı deneyemedim,
Sizin yaptığınız şekilde uyguladığımda son satırı ekranda bırakmaktaydı, ben şu şekilde yaptım istediğim gibi DBGridde boş satır geliyor; aynı şekilde kaydet butonuna da aynı kodları ekledim, ancak warning olarak aldığım yazı;
Could not convert variant of type (Null) into type (integer) uyarının sebebi bana göre edit modunda boş kayıt olduğu için filtre alanını integer arıyor bu hatayı engellemenin yada doğru yazılımın yöntemini belirtir misiniz?
Saygılarımla,
Sizin yaptığınız şekilde uyguladığımda son satırı ekranda bırakmaktaydı, ben şu şekilde yaptım istediğim gibi DBGridde boş satır geliyor;
Kod: Tümünü seç
procedure TForm31.FormShow(Sender: TObject);
begin
adotable1.Open;
adotable1.Last;
deger := adotable1.FieldByName('FaturaID').value;
adotable1.Append;
adotable1.Filtered:=false;
adotable1.Filter:='FaturaID=' + inttostr(deger+1) ;
adotable1.Filtered:=True;
adotable1.Edit;
end;
Could not convert variant of type (Null) into type (integer) uyarının sebebi bana göre edit modunda boş kayıt olduğu için filtre alanını integer arıyor bu hatayı engellemenin yada doğru yazılımın yöntemini belirtir misiniz?
Saygılarımla,
Re: DBGrid İçerik Boşaltma
Aşağıdaki satırı:
şu şekilde değiştirir iseniz;
Sorununuzun düzelmesi gerekli.
Kod: Tümünü seç
deger := adotable1.FieldByName('FaturaID').value;
Kod: Tümünü seç
deger := '0' + AdoTable1.FieldByName('FaturaID').Value;
Re: DBGrid İçerik Boşaltma
dbgrid hakkında çok soru sordum farkındayım, burada da kaldım ilerleyemiyorum, aşağıdaki kod bloğu ile güncelleyince hata almıyorum o sorunu hallettim ancak şunu farkettim DBGrid nesnesi 3. satıra inmiyor, 2. satırda işlemleri yapıyor, alt satıra indiğimde yine 2. satırda işlem yapıyor, sqlserver üzerinde kontrol ettiğimde ise ne kadar kayıt ettiysem hepsini DB ye kayıt ediyor, dbgridin alt satırına inmemesinin sebebi filter alanından kaynaklı kodu iptal edince alt satırlara iniyor, bunu aşmak için izlenebilecek yol nedir?
saygılarımla,
saygılarımla,
Kod: Tümünü seç
procedure TForm31.FormShow(Sender: TObject);
var
deger:integer;
begin
adotable1.Open;
adotable1.Last;
deger := AdoTable1.FieldByName('FaturaID').Value;
adotable1.Filtered:=false;
adotable1.Filter:='FaturaID=' + inttostr(deger+1);
adotable1.Filtered:=True;
adotable1.Edit;
end;
Re: DBGrid İçerik Boşaltma
istediğim gibi çözdüm, hem dbgridde istediğim satır adeti kadar kayıt yapabiliyorum hem post işleminden sonrada dbgrid boş olarak geliyor, çözüm için sql tabloda yeni bir kolon (FaturaRefNo) açtım ID harici post edilene kadar aynı değeri döndürmektedir. Kodlamam;
form açılışında dbgrid boş gelmesi için;
ayrıca kaydet butonuna da
ekledim şuan sorunsuz bir şekilde DbGridde işlem yapmaktayım,
saygılarımla,
form açılışında dbgrid boş gelmesi için;
Kod: Tümünü seç
procedure TForm31.FormShow(Sender: TObject);
var
deger:string;
begin
adotable1.Open;
adotable1.Filtered:=false;
deger := Edit5.Text;//ref değerim
adotable1.Filter:='FaturaRefNo=' + deger;
adotable1.Filtered:=True;
adotable1.Edit;
end;
Kod: Tümünü seç
deger := Edit5.Text;//ref değerim
adotable1.Filter:='FaturaRefNo=' + deger;
ekledim şuan sorunsuz bir şekilde DbGridde işlem yapmaktayım,
saygılarımla,