table koşul

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

table koşul

Mesaj gönderen rapsodim »

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
Arifceylan28
Üye
Mesajlar: 298
Kayıt: 19 Tem 2004 01:45
Konum: Giresun/Samsun

Mesaj gönderen Arifceylan28 »

if fieldbyname('miktar').asinteger=5 then ......;
if fieldbyname('miktar').asinteger=6 then ......;
if fieldbyname('miktar').asinteger=7 then ......;

veya
table2.filter:=miktar=5;
............;
table2.filter:=miktar=6;
.........;
.................
Arifceylan28
Üye
Mesajlar: 298
Kayıt: 19 Tem 2004 01:45
Konum: Giresun/Samsun

Mesaj gönderen Arifceylan28 »

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.
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

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
Arifceylan28
Üye
Mesajlar: 298
Kayıt: 19 Tem 2004 01:45
Konum: Giresun/Samsun

Mesaj gönderen Arifceylan28 »

Kodlar bana biraz karışık geldi.Ne yapmak istediğinizi tam anlayabilmiş değilim.Satira neden 3 değerini aktarıyorsunuz.Bir işe yaramıyor ki.

istediğiniz koşula göre tablede filtreleme yapıp dosyaya kayıt yapabilirsiniz.
Biraz daha açıklama yaparsanız çözümü daha da kolaylaşacaktır.
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen rapsodim »

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
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Projede ki bu kodun amacı ne neyin algoritması?
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.
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

Mesaj gönderen 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

ş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.
Cevapla