oluşturduğum table da şöyle veriler var ;
ad miktar acıklama
-------- --------- ------------
ahmet 5 kalem
mehmet 5 elma
hasan 5 karpuz
ahmet 6 cilek
mehmet 6 cilek
hasan 7 erik
while not table2.eof do
ile kayıtları tarıyorum ve 5 olanlar için bir işlem yıgını daha sonra 6 olanlar için ve sonra da 7 olanlar için yanı nasıl kosul koyabilirim table kayıtları içerinde 5ler ardısık gelıyor ve indexli tşkr ederim
table koşul
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 298
- Kayıt: 19 Tem 2004 01:45
- Konum: Giresun/Samsun
-
- Üye
- Mesajlar: 298
- Kayıt: 19 Tem 2004 01:45
- Konum: Giresun/Samsun
table2.first;
for i:=1 to table2.recordcount do
begin
if fieldbyname('miktar').asinteger=5 then ......;
if fieldbyname('miktar').asinteger=6 then ......;
if fieldbyname('miktar').asinteger=7 then ......;
table2.next;
end;
veya
table2.filter:=miktar=5;
table2.first;
for i:=1 to table2.recordcount do
begin
............;
table2.next;
end;
table2.filter:=miktar=6;
for i:=1 to table2.recordcount do
.........;
.................
Eğer sadece 5,6,7 yoksa bi değişken ve döngüyle halledebilirsin.
for i:=1 to table2.recordcount do
begin
if fieldbyname('miktar').asinteger=5 then ......;
if fieldbyname('miktar').asinteger=6 then ......;
if fieldbyname('miktar').asinteger=7 then ......;
table2.next;
end;
veya
table2.filter:=miktar=5;
table2.first;
for i:=1 to table2.recordcount do
begin
............;
table2.next;
end;
table2.filter:=miktar=6;
for i:=1 to table2.recordcount do
.........;
.................
Eğer sadece 5,6,7 yoksa bi değişken ve döngüyle halledebilirsin.
sayac:=0;
satir:='';
assignfile(textdosya,'c:\deneme.txt');
rewrite(textdosya);
fkdv:=table2.fieldbyname('ftoplamkdv').asstring;
writeln(textdosya,fkdv);
table2.first;
while not table2.eof do
begin
satir:='3';
for sayac:=0 to table2.fields.count -1 do
begin
satir:=fkod+table2.fieldbyname('faturatarih').asstring
end;
table2.next;
writeln(textdosya,satir);
end;
write(textdosya,fson);
closefile(textdosya);
kod kısaca boyle ama kosul koymak ve bu kosulu saglayan dıger kayıtlarada aynı ıslemı uygulatmak ıstıyorum tum table da
satir:='';
assignfile(textdosya,'c:\deneme.txt');
rewrite(textdosya);
fkdv:=table2.fieldbyname('ftoplamkdv').asstring;
writeln(textdosya,fkdv);
table2.first;
while not table2.eof do
begin
satir:='3';
for sayac:=0 to table2.fields.count -1 do
begin
satir:=fkod+table2.fieldbyname('faturatarih').asstring
end;
table2.next;
writeln(textdosya,satir);
end;
write(textdosya,fson);
closefile(textdosya);
kod kısaca boyle ama kosul koymak ve bu kosulu saglayan dıger kayıtlarada aynı ıslemı uygulatmak ıstıyorum tum table da
-
- Üye
- Mesajlar: 298
- Kayıt: 19 Tem 2004 01:45
- Konum: Giresun/Samsun
table2.first;
while not table2.eof do
begin
satir:='3';
table2.prior;
onu:=strtoint(table2.fieldbyname('sno').asstring);
table2.next;
aktif:=strtoint(table2.fieldbyname('sno').asstring);
if onu<aktif then
for sayac:=0 to table2.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table2.fieldbyname('referans').asstring
end;
table2.next;
writeln(textdosya,satir);
end;
closefile(textdosya);
end;
kod bu şekilde sno dediğim alan 1 ile başlıyor 15 ile bitoyur.sonraki kayıtta ise 15 den sonra 1 ile baslıyor 3 ile bitiyor sonraki ise 3 den sonra 1 ile baslıyor ve 5 ile bitiyor.bu döngü ile gerçi bir önceki kayıt ile sonrakini karşılastırıyorum ve küçük ise yaz diyorum.eğer büyük ise döngü dışına çıkıyor istediğim döngü dışına cıksın fakat 1 ile 15 arası kayıtları taradıktan sonra bu prg cıkıyor tekrar döngüye sokup 1 ile 3 kayıtları taramalı ve cıkıp tekrar 1 ile 5 arasını taramalı anlatabıldım mı bılmıyorum ama kısaca böyle yardımınız ıcın tşkr ederim
while not table2.eof do
begin
satir:='3';
table2.prior;
onu:=strtoint(table2.fieldbyname('sno').asstring);
table2.next;
aktif:=strtoint(table2.fieldbyname('sno').asstring);
if onu<aktif then
for sayac:=0 to table2.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table2.fieldbyname('referans').asstring
end;
table2.next;
writeln(textdosya,satir);
end;
closefile(textdosya);
end;
kod bu şekilde sno dediğim alan 1 ile başlıyor 15 ile bitoyur.sonraki kayıtta ise 15 den sonra 1 ile baslıyor 3 ile bitiyor sonraki ise 3 den sonra 1 ile baslıyor ve 5 ile bitiyor.bu döngü ile gerçi bir önceki kayıt ile sonrakini karşılastırıyorum ve küçük ise yaz diyorum.eğer büyük ise döngü dışına çıkıyor istediğim döngü dışına cıksın fakat 1 ile 15 arası kayıtları taradıktan sonra bu prg cıkıyor tekrar döngüye sokup 1 ile 3 kayıtları taramalı ve cıkıp tekrar 1 ile 5 arasını taramalı anlatabıldım mı bılmıyorum ama kısaca böyle yardımınız ıcın tşkr ederim
Projede ki bu kodun amacı ne neyin algoritması?
Kısaca projede yapmak istediğiniz olay nedir?
Kolay Gelsin...
Kısaca projede yapmak istediğiniz olay nedir?
Kolay Gelsin...
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
projde fatura ve kalemlerinin txt dosyasına donusturulmesı var.bır fatura bırden fazla kalem içerir.şöyle ki ;
tarih fatura no referans miktar tutar s.no
20040101 360 1500a 50 2350 1
20040101 360 1505b 10 2500 2
20040101 363 1450k 60 3500 1
20040102 364 1300b 10 8350 1
20040102 364 1200a 20 7350 2
20040102 364 1100z 50 350 3
şekinde table mevcut.yapmak istediğim bunu txt ye kaydetmek ve sonucu
200401013601500a5023501
200401013601505b1025002
3642 (fatura ve sıra numarasını yazdırmak)
200401013631450k6035001
3631
200401023641300b1083501
200401023641200a2073502
200401023641100z503503
3643
yazdığım prg tum table alanlarını kayıt edıyor.fatura numarası 360 olanı al ve yukarıdakı ılk blok gıbı yaz daha sonra fatura numarası 363 olanları al ve yaz şeklinde yapmak istiyorum ve kodu;
var
textdosya:textfile;
i,sayac:integer;
satir:string;
sirano,fson,fdetay,fkdv,ftutar,fno,ftarih,fbaslik,tar,fkod,transfer:string;
kl,onu,aktif,faturanumara:integer;
begin
sayac:=0;
satir:='';
assignfile(textdosya,'c:\ismail.txt');
rewrite(textdosya);
tar:=formatdatetime('yyyymmdd',now);
writeln(textdosya,tar);
kl:=table2.fieldbyname('faturano').asinteger;
WRITE(TEXTDOSYA,FKOD);
ftarih:=table2.fieldbyname('faturatarih').asstring;
write(textdosya,ftarih);
fno:=table2.fieldbyname('faturano').asstring;
write(textdosya,fno);
ftutar:=table2.fieldbyname('ftoplamtutar').asstring;
write(textdosya,ftutar);
fkdv:=table2.fieldbyname('ftoplamkdv').asstring;
writeln(textdosya,fkdv);
table2.first;
onu:=strtoint(table2.fieldbyname('sno').asstring);
while not table2.eof do
begin
satir:='3';
table2.prior;
onu:=strtoint(table2.fieldbyname('faturano').asstring);
table2.next;
aktif:=strtoint(table2.fieldbyname('faturano').asstring);
if onu=aktif then
for sayac:=0 to table2.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table2.fieldbyname('faturatarih').asstring+fno+table2.fieldbyname('referans').asstring+table2.fieldbyname('birimfiyat').asstring+table2.fieldbyname('miktar').asstring+table2.fieldbyname('tutar').asstring+table2.fieldbyname('kdv').asstring+table2.fieldbyname('sno').asstring;
end;
table2.next;
writeln(textdosya,satir);
end;
closefile(textdosya);
end;
şeklinde yazdım.kontol yaptırıp farklı fatura numarası geldiginde yukarıda yazıdıgım şekle getiremedim.daha sonra tableda diğer fatura alnına inmeli ttxt ye yazma kodunu bana siz yollamıştınız.şu an işin içinden çıkamıyorum yardımınız için tşkr ederim.
tarih fatura no referans miktar tutar s.no
20040101 360 1500a 50 2350 1
20040101 360 1505b 10 2500 2
20040101 363 1450k 60 3500 1
20040102 364 1300b 10 8350 1
20040102 364 1200a 20 7350 2
20040102 364 1100z 50 350 3
şekinde table mevcut.yapmak istediğim bunu txt ye kaydetmek ve sonucu
200401013601500a5023501
200401013601505b1025002
3642 (fatura ve sıra numarasını yazdırmak)
200401013631450k6035001
3631
200401023641300b1083501
200401023641200a2073502
200401023641100z503503
3643
yazdığım prg tum table alanlarını kayıt edıyor.fatura numarası 360 olanı al ve yukarıdakı ılk blok gıbı yaz daha sonra fatura numarası 363 olanları al ve yaz şeklinde yapmak istiyorum ve kodu;
var
textdosya:textfile;
i,sayac:integer;
satir:string;
sirano,fson,fdetay,fkdv,ftutar,fno,ftarih,fbaslik,tar,fkod,transfer:string;
kl,onu,aktif,faturanumara:integer;
begin
sayac:=0;
satir:='';
assignfile(textdosya,'c:\ismail.txt');
rewrite(textdosya);
tar:=formatdatetime('yyyymmdd',now);
writeln(textdosya,tar);
kl:=table2.fieldbyname('faturano').asinteger;
WRITE(TEXTDOSYA,FKOD);
ftarih:=table2.fieldbyname('faturatarih').asstring;
write(textdosya,ftarih);
fno:=table2.fieldbyname('faturano').asstring;
write(textdosya,fno);
ftutar:=table2.fieldbyname('ftoplamtutar').asstring;
write(textdosya,ftutar);
fkdv:=table2.fieldbyname('ftoplamkdv').asstring;
writeln(textdosya,fkdv);
table2.first;
onu:=strtoint(table2.fieldbyname('sno').asstring);
while not table2.eof do
begin
satir:='3';
table2.prior;
onu:=strtoint(table2.fieldbyname('faturano').asstring);
table2.next;
aktif:=strtoint(table2.fieldbyname('faturano').asstring);
if onu=aktif then
for sayac:=0 to table2.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table2.fieldbyname('faturatarih').asstring+fno+table2.fieldbyname('referans').asstring+table2.fieldbyname('birimfiyat').asstring+table2.fieldbyname('miktar').asstring+table2.fieldbyname('tutar').asstring+table2.fieldbyname('kdv').asstring+table2.fieldbyname('sno').asstring;
end;
table2.next;
writeln(textdosya,satir);
end;
closefile(textdosya);
end;
şeklinde yazdım.kontol yaptırıp farklı fatura numarası geldiginde yukarıda yazıdıgım şekle getiremedim.daha sonra tableda diğer fatura alnına inmeli ttxt ye yazma kodunu bana siz yollamıştınız.şu an işin içinden çıkamıyorum yardımınız için tşkr ederim.