kayıt deseni
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
kayıt deseni
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.
Anlayamadım ama Anladığım kadarıyla bloklara ayırmak istiyorsunuz yanlışım varsa lütfen düzeltin.
[quote="rapsodim"]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
[quote]
Tahminim gibi algoritmik hata oluşturuyorsunuz.
Yapmamız gerekenler
1.Fatura Numaramız koşul teşkil etmelidir.
Ve alandaki veriyi değişkene aktararak işlemeliyiz.
Yani kodlarımıza şunu dedirtmeliyiz. Table yi baştan sona tara Fatura no su 360 olanları bul 360 olanları bulduktan sonra Bir sonraki istenen Fatura No ya bak.
Bunu kodla ifade edersek
Kodları sallama yazdım sadece algoritmik olarak anlaman için
Kolay Gelsin...
[quote="rapsodim"]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
[quote]
Tahminim gibi algoritmik hata oluşturuyorsunuz.

1.Fatura Numaramız koşul teşkil etmelidir.
Ve alandaki veriyi değişkene aktararak işlemeliyiz.
Yani kodlarımıza şunu dedirtmeliyiz. Table yi baştan sona tara Fatura no su 360 olanları bul 360 olanları bulduktan sonra Bir sonraki istenen Fatura No ya bak.
Bunu kodla ifade edersek
Kod: Tümünü seç
Table1.first;
FtNo := Table1.FieldByName('FtNo').AsInteger;
While not Table1.Eof Do
Begin
if Table1.FieldByName('FtNo').AsInteger = FtNo Then
Begin
//Koşul uyuyor işlemleri yap.
//Bu kayıt numarası bir önceki kayıtla aynıysa bir değişkeni atamadan geç
End
Else
Begin
//Yeni Blok Oluştur.
FtNo := Table1.FieldByName('FtNo').AsInteger;
Continue;
End;
Table.Next;

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.
blokları ayarlayamadım dediğiniz gibi
şu hale getirdim ama else kısmında hata veriyor.yazdığınız formata giydiremedim
begin
sayac:=0;
satir:='';
assignfile(textdosya,'c:\ismail.txt');
rewrite(textdosya);
table1.first;
ftno:=table1.fieldbyname('faturano').asinteger;
while not table1.eof do
begin
if table1.fieldbyname('faturano').asinteger= ftno then
for sayac:=0 to table1.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table1.fieldbyname('faturatarih').asstring+fno+table1.fieldbyname('referans').asstring+table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring+table1.fieldbyname('sno').asstring;
end;
writeln(textdosya,satir);
end;
end
else
begin
for sayac:=0 to table1.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table1.fieldbyname('faturatarih').asstring+fno+table1.fieldbyname('referans').asstring+table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring+table1.fieldbyname('sno').asstring;
end;
writeln(textdosya,satir);
continue;
table1.next;
end;
closefile(textdosya);
end;
şu hale getirdim ama else kısmında hata veriyor.yazdığınız formata giydiremedim
begin
sayac:=0;
satir:='';
assignfile(textdosya,'c:\ismail.txt');
rewrite(textdosya);
table1.first;
ftno:=table1.fieldbyname('faturano').asinteger;
while not table1.eof do
begin
if table1.fieldbyname('faturano').asinteger= ftno then
for sayac:=0 to table1.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table1.fieldbyname('faturatarih').asstring+fno+table1.fieldbyname('referans').asstring+table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring+table1.fieldbyname('sno').asstring;
end;
writeln(textdosya,satir);
end;
end
else
begin
for sayac:=0 to table1.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table1.fieldbyname('faturatarih').asstring+fno+table1.fieldbyname('referans').asstring+table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring+table1.fieldbyname('sno').asstring;
end;
writeln(textdosya,satir);
continue;
table1.next;
end;
closefile(textdosya);
end;
Kod: Tümünü seç
begin
sayac:=0;
satir:='';
assignfile(textdosya,'c:\ismail.txt');
rewrite(textdosya);
table1.first;
ftno:=table1.fieldbyname('faturano').asinteger;
while not table1.eof do
begin
if table1.fieldbyname('faturano').asinteger= ftno then
for sayac:=0 to table1.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table1.fieldbyname('faturatarih').asstring+fno+table1.fieldbyname('referans').asstring+table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring+table1.fieldbyname('sno').asstring;
end;
writeln(textdosya,satir);
end;
end
else
begin
for sayac:=0 to table1.fields.count -1 do
begin
fdetay:='3DE';
satir:=fdetay+fkod+table1.fieldbyname('faturatarih').asstring+fno+table1.fieldbyname('referans').asstring+table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring+table1.fieldbyname('sno').asstring;
end;
writeln(textdosya,satir);
continue;
table1.next;
end;
closefile(textdosya);
end;
Son olarakta kodlarınızı [C o D e] kısmı içine alırsanız okumamız kolay olacak.

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.
Bence For döngüsü gereksiz. Ayrıca atamaları Koşul altında yapın Else kısmındaki Atamaları ve For döngüsünü kaldırın.
Kolay gelsin...
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.
O zaman biraz dinlenin tekrar görüşelim



Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kod: Tümünü seç
begin
sayac:=0;
satir:='';
assignfile(textdosya,'c:\ismail.txt');
rewrite(textdosya);
table1.first;
ftno:=table1.fieldbyname('faturano').asinteger;
while not table1.eof do
begin
if table1.fieldbyname('faturano').asinteger= ftno then
begin
fdetay:='3DE';
satir:=fdetay+fkod+table1.fieldbyname('faturatarih').asstring+fno+table1.fieldbyname('referans').asstring+table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring+table1.fieldbyname('sno').asstring;
end;
writeln(textdosya,satir);
end;
end
else
begin
Satir:= 'Blok Sonu';
writeln(textdosya,satir);
ftno:=table1.fieldbyname('faturano').asinteger;
continue;
end;
table1.next;
closefile(textdosya);
end;
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.
ama hata verdi kod aynen şöyle;
procedure TForm1.Button1Click(Sender: TObject);
var
textdosya:textfile;
satir:string;
ftno:integer;
begin
satir:='';
assignfile(textdosya,'c:\ismail.txt');
rewrite(textdosya);
table1.first;
ftno:=table1.fieldbyname('faturano').asinteger;
while not table1.eof do
begin
if table1.fieldbyname('faturano').asinteger= ftno then
begin
satir:=table1.fieldbyname('faturatarih').asstring+table1.fieldbyname('referans').asstring+table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring+table1.fieldbyname('sno').asstring;
end;
writeln(textdosya,satir);
end;
end
else
begin
Satir:= 'Blok Sonu';
writeln(textdosya,satir);
ftno:=table1.fieldbyname('faturano').asinteger;
continue;
end;
table1.next;
closefile(textdosya);
end;
end.
';' excepted bu else found şeklinde hata veriyor. eksik veya yanlış bir şey mi var acaba.mail adresinize table ve kodları yolluyorum.ilginiz için teşekkür ederim.saygılarımla.
procedure TForm1.Button1Click(Sender: TObject);
var
textdosya:textfile;
satir:string;
ftno:integer;
begin
satir:='';
assignfile(textdosya,'c:\ismail.txt');
rewrite(textdosya);
table1.first;
ftno:=table1.fieldbyname('faturano').asinteger;
while not table1.eof do
begin
if table1.fieldbyname('faturano').asinteger= ftno then
begin
satir:=table1.fieldbyname('faturatarih').asstring+table1.fieldbyname('referans').asstring+table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring+table1.fieldbyname('sno').asstring;
end;
writeln(textdosya,satir);
end;
end
else
begin
Satir:= 'Blok Sonu';
writeln(textdosya,satir);
ftno:=table1.fieldbyname('faturano').asinteger;
continue;
end;
table1.next;
closefile(textdosya);
end;
end.
';' excepted bu else found şeklinde hata veriyor. eksik veya yanlış bir şey mi var acaba.mail adresinize table ve kodları yolluyorum.ilginiz için teşekkür ederim.saygılarımla.
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
textdosya:textfile;
satir, eFtTar, eFtSNo:string;
ftno:integer;
begin
satir:='';
assignfile(textdosya,'c:\ismail.txt');
rewrite(textdosya);
table1.first;
ftno:=table1.fieldbyname('faturano').asinteger;
while not table1.eof do
begin
if ftno = table1.fieldbyname('faturano').asinteger then
begin
satir:=table1.fieldbyname('faturatarih').asstring + table1.fieldbyname('referans').asstring + table1.fieldbyname('birimfiyat').asstring+table1.fieldbyname('miktar').asstring+table1.fieldbyname('tutar').asstring+table1.fieldbyname('kdv').asstring + table1.fieldbyname('sno').asstring;
writeln(textdosya, satir);
eFtTar := table1.fieldbyname('faturatarih').asstring;
eFtSNo := table1.fieldbyname('sno').asstring;
end
else
begin
Satir := '';
Satir:= eFtTar + eFtSNo;
writeln(textdosya,satir);
ftno:=table1.fieldbyname('faturano').asinteger;
Satir := '';
continue;
end;
table1.next;
End;
Satir := '';
Satir:= eFtTar + eFtSNo;
writeln(textdosya,satir);
Satir := '';
closefile(textdosya);
end;
Çıktın ise aynen şu şekilde olacaktır.
Kolay Gelsin...200401070041309616E0000000061206000000020000000001224120000000022034160001
200401070041639081E0000002161377000000003000000006484131000000116714358002
200401070041639101E0000001892529000000003000000005677587000000102196566003
200401070041639160E0000000139680000000005000000000698400000000012571200004
200401070041705390E0000000178791000000003000000000536373000000009654714005
200401070042894908E0000002887258000000006800000019633354400000353400379006
200401070075815450E0000000293022000000003480000001019716560000018354898007
200401070076764010E0000000829518000000001600000001327228800000023890118008
200401070134146910E0000000278165000000007500000002086237500000037552275009
200401070850127980E0000000515370000000005000000002576850000000046383300010
200401070988055621E0000001395444000000006750000009419247000000169546446011
200401070988055641E0000001479134000000006000000008874804000000159746472012
200401070988064940E0000000598783000000003000000001796349000000032334282013
200401070988064960E0000000387775000000007000000002714425000000048859650014
200401070988064970E0000000224129000000004130000000925652770000016661750015
20040107015
200401080988064970E0000000224129000000003000000008874804000000159746472001
20040108001
200401080850127980E0000001395444000000006750000009419247000000032334282001
200401080988064970E0000000224129000000004130000002714425000000016661750002
20040108002
Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
-
- Üye
- Mesajlar: 298
- Kayıt: 19 Tem 2004 01:45
- Konum: Giresun/Samsun
Estağfurullah. 

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.