Tabloya Aylara Göre Bilgilere Aynı Tabloya Ekleme
acelebi5416.07.2005 - 10:50:38
Merhaba Arkadaşlar

Benim Bir sorunum var çok uğraştım ama yapmadım.
Forumda çok araştırdım ama böyle bir kod bulamadım.

Sorunum şu….

FireBird 1.5 ve Delphi 7.0 kullanıyorum
Bu arada Access den FireBird ‘e geçtim
FIbPlus bileşenlerini kullanıyorum.
Neyse Soruma geleyim.
Personel adında bir tablom var

Yapmak istediğim ise şu!

Bu tabloya aynı tablo üzerinde olan bilgileri aktar dediğimde bilgileri bulunduğumuz ayın bir sonraki ay için aynı tabloya eklemesini istiyorum.
While döngüsüyle yaptım ancak Ocak Ayındayken Şubat ayı için eklediğimde herhangi bir sorun olmadan ekliyor, ancak Şubat, mart ve diğer aylar için ekleme yaptığımda doğal olarak
Kayıtları her ay için arttırarak gittiğinden aynı kayıttan Mart ayında ise her kayıtı 3 adet ekliyor.
Bu eklemeyi nasıl önleyebilirim.
Yada döngü yerine SQL ile yapılabilirmi

SQL ile bu konuda bir örnek verebilirmisiniz

Şimdiden teşekkür ederim.

Herkese iyi çalışmalar dilerim.
 
oguzozturk7416.07.2005 - 13:59:34
Nasıl bir kodlama yapıyorsunuz , detay verirseniz daha iyi olacak .

en basitinden bir tabloda ki kayıtları diğer bir tabloya atmak için :

insert into Table1
select * form Table2
where .....
 
aslangeri17.07.2005 - 19:05:54
s.a.
tam olarak nasıl bişey yaptığını anlatmamışsın ama şöyle birşey işini görebilirmi.

tabloda kopyalamak istediğin kaydı seç. appendrecord ile kayıt ekle.

tablo.appendrecord(tabloadialanladi.asvariant,tabloadialanadi.asvariant......);


kolay gelsin.
 
acelebi5419.07.2005 - 14:23:18
Merhaba aslangeri bey.
Daha önce sormuş olduğum sorumu tam anlatamadım galiba
Birde yazmış olduğum başlığa tekrar nasıl soru soruluyor bilmediğim
için buradan cevap olarak soruma devam ediyorum

Önceki başlıktan da anlaşılacağı üzere Personel tablosundaki
kayıtları (o anki tablodaki kayıtlar) her ay için Personel tablosuna
eklemek istiyorum. Personel Tablosunda AY diye bir alanım var
Personel tablosundaki kayıtları aşağıda yazmış olduğum kotlar ile
tabloya eklerken AY alanına Şubat ayı yani 02 olarak kaydedecek
Şubat ayında iken Mart ayı yani 03 olarak Şubat ayında kaç kayıt
varsa onları ekleyecek. Yani kayıt sayısını kontrol edecek.
Bir sonraki ay için ekleme yaptığımda bir önceki ay kayıtlarıyla
aynı olması gerekiyor.
Yazmış olduğum kot aşağıdadır.

if Calendar1.Month=1 then begin

PerAktar.Close;
PerAktar.SQL.Clear;
PerAktar.SQL.Add('SELECT * FROM PERSONEL');
PerAktar.SQL.Add('WHERE AY=1');
PerAktar.SQL.Add('ORDER BY ID_NO ASC');
PerAktar.Open;

Personel.First;
while not Personel.Eof do begin
if PersonelAY.Value=2 then begin
end
else
if PersonelAY.Value<>2 then begin
PerAktar.Edit;
PerAktar.Append;
PerAktar.Edit;
PerAktarID_NO.AsInteger:=PersonelID_NO.AsInteger;
//ay1:=FormatDateTime('mm',DateTimePicker1.Date);
PerAktarAY.AsInteger:=Calendar1.Month+1;
PerAktarADISOYADI.AsString:=PersonelADISOYADI.AsString;
PerAktarCALISIYORMU.AsBoolean:=PersonelCALISIYORMU.AsBoolean;
PerAktarISEGIRISTARIHI.AsDateTime:=PersonelISEGIRISTARIHI.AsDateTime;
PerAktarMAASI.AsCurrency:=PersonelMAASI.AsCurrency;

Personel.Next;
end; //while end
end;
end;
//1 ayın sonu

if Calendar1.Month=2 then begin

PerAktar.Close;
PerAktar.SQL.Clear;
PerAktar.SQL.Add('SELECT * FROM PERSONEL');
PerAktar.SQL.Add('WHERE AY=2');
PerAktar.SQL.Add('ORDER BY ID_NO ASC');
PerAktar.Open;

Personel.First;
while not Personel.Eof do begin
if PersonelAY.Value=3 then begin
end
else
if PersonelAY.Value<>3 then begin
PerAktar.Edit;
PerAktar.Append;
PerAktar.Edit;
PerAktarID_NO.AsInteger:=PersonelID_NO.AsInteger;
//ay1:=FormatDateTime('mm',DateTimePicker1.Date);
PerAktarAY.AsInteger:=Calendar1.Month+1;
PerAktarADISOYADI.AsString:=PersonelADISOYADI.AsString;
PerAktarCALISIYORMU.AsBoolean:=PersonelCALISIYORMU.AsBoolean;
PerAktarISEGIRISTARIHI.AsDateTime:=PersonelISEGIRISTARIHI.AsDateTime;
PerAktarMAASI.AsCurrency:=PersonelMAASI.AsCurrency;

Personel.Next;
end; //while end
end;
end;


/////2 ayın sonu
if Calendar1.Month=3 then begin

PerAktar.Close;
PerAktar.SQL.Clear;
PerAktar.SQL.Add('SELECT * FROM PERSONEL');
PerAktar.SQL.Add('WHERE AY=3');
PerAktar.SQL.Add('ORDER BY ID_NO ASC');
PerAktar.Open;

Personel.First;
while not Personel.Eof do begin
if PersonelAY.Value=4 then begin
end
else
if PersonelAY.Value<>4 then begin
PerAktar.Edit;
PerAktar.Append;
PerAktar.Edit;
PerAktarID_NO.AsInteger:=PersonelID_NO.AsInteger;
//ay1:=FormatDateTime('mm',DateTimePicker1.Date);
PerAktarAY.AsInteger:=Calendar1.Month+1;
PerAktarADISOYADI.AsString:=PersonelADISOYADI.AsString;
PerAktarCALISIYORMU.AsBoolean:=PersonelCALISIYORMU.AsBoolean;
PerAktarISEGIRISTARIHI.AsDateTime:=PersonelISEGIRISTARIHI.AsDateTime;
PerAktarMAASI.AsCurrency:=PersonelMAASI.AsCurrency;

Personel.Next;
end; //while end
end;
end;
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com