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.
Tabloya Aylara Göre Bilgilere Aynı Tabloya Ekleme
-
- Kıdemli Üye
- Mesajlar: 574
- Kayıt: 01 Şub 2004 12:29
- Konum: Erdemli - MERSİN
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 :
en basitinden bir tabloda ki kayıtları diğer bir tabloya atmak için :
Kod: Tümünü seç
insert into Table1
select * form Table2
where .....
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.
kolay gelsin.
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.
Kod: Tümünü seç
tablo.appendrecord(tabloadialanladi.asvariant,tabloadialanadi.asvariant......);
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Tabloya Ayni Bilgileri Aylara Göre Ekleme Yapma
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;
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;