Döngü_Yardım

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Döngü_Yardım

Mesaj gönderen haydarxxx »

Slm
Arkadaşlar günlerdir uğraşıyorum şu dögü koduna lütfen bir bakın nerde hata yapıyorumda istediğim olmuyuyor.

(QRY ler Ibdataset i anlatmakta) ve QRY_GIDERCIKTI daki alanlara başka bir tablodan QRY_GELIR den veri aktarımı yapacağım.Ve aktardığım QRY_GIDERCIKTI dataset inin selectSQL sinde

Kod: Tümünü seç

select*from TBLGELIR_CIKTI order by TARIH asc,SIRA_NO ASC
yapmak istediğim sırası ile şöyle
1.Veri aktarımı yapılmadan önce QRY_GIDERCIKTI tablosunu silmek
2.QRY_GELIR tablosundan verileri almak
3.Bu veri alma işlemi bittiğinde QRY_GIDERCIKTI dataset i açıp kapamak ki TARIH alanlarını sıralasın
4.TARIH sıralaması bittiğinde SIRA_NO alanına 1.2.3.4.5... şeklinde sıra numarası vermek

*Ibquery ile de denedim ama saydığım dört maddeyi yerine getiremedim

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
a:integer;
begin
for a:=1 to QRY_GIDERCIKTI.RecordCount do
begin
QRY_GIDERCIKTI.delete;
QRY_GIDERCIKTI.Next;
end;

QRY_GELIR.First;

for a:=1 to QRY_GELIR.RecordCount do
Begin
if QRY_GELIR.FieldByName('TAKSIT1').VALUE>0 then
begin
QRY_GIDERCIKTI.Active:=false;
QRY_GIDERCIKTI.Active:=true;
QRY_GIDERCIKTI.refresh;
IBTransaction1.CommitRetaining;

QRY_GIDERCIKTI.Append;
QRY_GIDERCIKTI.FieldByName('ADI_SOYADI').VALUE :=QRY_GELIR.FieldByName('ADI_SOYADI').VALUE;
QRY_GIDERCIKTI.FieldByName('TARIH').VALUE :=QRY_GELIR.FieldByName('TARIH1').VALUE ;
QRY_GIDERCIKTI.FieldByName('DEKONT_NO').VALUE :=QRY_GELIR.FieldByName('DEKONT1').VALUE ;
QRY_GIDERCIKTI.FieldByName('TUTARI').VALUE :=QRY_GELIR.FieldByName('TAKSIT1').VALUE ;
QRY_GIDERCIKTI.post;
QRY_GIDERCIKTI.refresh;

 end;

if QRY_GELIR.FieldByName('TAKSIT2').VALUE>0 then
begin
     QRY_GIDERCIKTI.Active:=false;
    QRY_GIDERCIKTI.Active:=true;
QRY_GIDERCIKTI.refresh;
 IBTransaction1.CommitRetaining;
QRY_GIDERCIKTI.Append;

QRY_GIDERCIKTI.FieldByName('ADI_SOYADI').VALUE :=QRY_GELIR.FieldByName('ADI_SOYADI').VALUE;
QRY_GIDERCIKTI.FieldByName('TARIH').VALUE :=QRY_GELIR.FieldByName('TARIH2').VALUE ;
QRY_GIDERCIKTI.FieldByName('DEKONT_NO').VALUE :=QRY_GELIR.FieldByName('DEKONT2').VALUE ;
QRY_GIDERCIKTI.FieldByName('TUTARI').VALUE :=QRY_GELIR.FieldByName('TAKSIT2').VALUE ;
QRY_GIDERCIKTI.post;
QRY_GIDERCIKTI.refresh;

 end;

if QRY_GELIR.FieldByName('TAKSIT3').VALUE>0 then
begin
     QRY_GIDERCIKTI.Active:=false;
    QRY_GIDERCIKTI.Active:=true;
QRY_GIDERCIKTI.refresh;
 IBTransaction1.CommitRetaining;
QRY_GIDERCIKTI.Append;

QRY_GIDERCIKTI.FieldByName('ADI_SOYADI').VALUE :=QRY_GELIR.FieldByName('ADI_SOYADI').VALUE;
QRY_GIDERCIKTI.FieldByName('TARIH').VALUE :=QRY_GELIR.FieldByName('TARIH3').VALUE ;
QRY_GIDERCIKTI.FieldByName('DEKONT_NO').VALUE :=QRY_GELIR.FieldByName('DEKONT3').VALUE ;
QRY_GIDERCIKTI.FieldByName('TUTARI').VALUE :=QRY_GELIR.FieldByName('TAKSIT3').VALUE ;
QRY_GIDERCIKTI.post;
QRY_GIDERCIKTI.refresh;

end;
if QRY_GELIR.FieldByName('TAKSIT4').VALUE>0 then
begin
QRY_GIDERCIKTI.Active:=false;
QRY_GIDERCIKTI.Active:=true;
QRY_GIDERCIKTI.refresh;
IBTransaction1.CommitRetaining;
QRY_GIDERCIKTI.Append;

QRY_GIDERCIKTI.FieldByName('ADI_SOYADI').VALUE :=QRY_GELIR.FieldByName('ADI_SOYADI').VALUE;
QRY_GIDERCIKTI.FieldByName('TARIH').VALUE :=QRY_GELIR.FieldByName('TARIH4').VALUE ;
QRY_GIDERCIKTI.FieldByName('DEKONT_NO').VALUE :=QRY_GELIR.FieldByName('DEKONT4').VALUE ;
QRY_GIDERCIKTI.FieldByName('TUTARI').VALUE :=QRY_GELIR.FieldByName('TAKSIT4').VALUE ;
QRY_GIDERCIKTI.post;
QRY_GIDERCIKTI.refresh;

end;

QRY_GELIR.Next ;


end;


IBTransaction1.CommitRetaining;
//aktarım yapıldı

  //sıra nosu


begin

QRY_GIDERCIKTI.edit;
QRY_GIDERCIKTI.post;

QRY_GIDERCIKTI.refresh;
QRY_GIDERCIKTI.first;
begin
for a:=1 to QRY_GIDERCIKTI.recordcount do
begin
QRY_GIDERCIKTI.edit;
QRY_GIDERCIKTI.FieldByName('SIRA_NO').VALUE:=inttostr(a);
QRY_GIDERCIKTI.Post;
QRY_GIDERCIKTI.next;
QRY_GIDERCIKTI.Refresh;


 end;

 end;
 end;
     QRY_GIDERCIKTI.Active:=false;
    QRY_GIDERCIKTI.Active:=true;
    IBTransaction1.CommitRetaining;
 END;
burada bir hata almıyorum ama istediğim şeyide yapamadı yani tarihsel sıralamayı ve sıra no vermeyi düzgün olarak yerine getirmiyor.İlgilenecek arkadaşlara teşekkür ediyorum.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

burada 1,2,3.... diye sıralatmak istiyorsun anladığım kadarı ile önemli olan bu onun için order by da sadece sıra no yu kullan ayrıca bu tablo silme ve veri aktarma işlemini bir kereye mahsus yapman gerekiyorsa kaydedilecek tabloya autoinc alan tanımlarsan ve aktarımı tarih sırasında yaptırırsan insert olayında sıra no yu otomatik ve sıralı vereceği için işlemi gerçekleştirmiş olursun, fakat mütemadiyen bu işlem yıpılıyorsan butona basımda auto inc alanı sıfırlatır işlemine devam edebilirsin diye düşünüyorum.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

verileri alcağım tabloya sürekli yeni kayıtlar girileceği için her aktarmada eski kayıtları silip yeni kayıtları aktarmam gerekir o yüzden öneriniz işime yaramaz.Benim istediğim yukarıdaki şekilde sırası ile işlem yapması.Tarih sıralaması yaptıktan sonra sıra numarası verecek
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

RecordCount yerine IBQuery3.Fields[0].AsInteger şeklinde kullanınca kod istediğm gibi çalıştı.Firebird forumda geçiyordu galiba RecordCount komutunu pek sağlıklı çalıştıramıyor galiba :roll:
Cevapla