While not Eof do kullanımı ama ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

While not Eof do kullanımı ama ?

Mesaj gönderen kodcuminik »

merhaba
2 adet tablom var tablo1 deki kayıtları tablo2 deki sonfişno+1 yaparak yeni fişno ile kayıt ediyorum
ve tablo1 deki kayıt edilen bilgiyi de siliyorum

aşagıdaki While not Eof do döngüsü ile bunu yapıyorum

Kod: Tümünü seç

VAR
yenikayit:integer;
begin
 Table1.First;
 While not Table1.Eof do
begin
Table2.Last;
yenikayit:=StrToInt(DBEdit8.Text)+1 ;//dbedit8.text fişno
Table2.Insert;
DBEdit6.Text:=Table1ADI.Value;
DBEdit7.Text:=Table1SOYADI.Value;
DBEdit8.Text:= IntToStr(yenikayit);
Table2.Post;
Table1.delete;


end;
end;


end.
buraya kadar herşey normal ama ben tablo1 deki adı x olanların hepsini aynı fişno ile aktarmak istiyorum

yani

Kod: Tümünü seç

Table2.Last;
yenikayit:=StrToInt(DBEdit8.Text)+1 ;//dbedit8.text fişno
Table2.Insert;

[b] adı  aynı olanları aynı fişno ile   kayt etmek istiyorum[/b]

bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: While not Eof do kullanımı ama ?

Mesaj gönderen aslangeri »

s.a.
table 1 deki kayıtları adına göre sıralayın.
döngü içinde isimleri kontrol ederek fis numarasını değiştirebilirsin.
yada tablo 1 içindeki kayıtları query ile çekerek yapabilirsin.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: While not Eof do kullanımı ama ?

Mesaj gönderen conari »

Birince tablonun Filter özelliğini kullanarak filtreleyin sonra döngüye sokun.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

Re: While not Eof do kullanımı ama ?

Mesaj gönderen kodcuminik »

conari hocam teşekkürler ama tam olarak anlatamadım galiba

adı aynı olanları tek fiş no ile kayıt etmek istiyorum yani

tablo1

ali x
ali y
ali z

tablo2
fisno:=sonkayitt+1 örnek 15

fisno adı soyadı
-------------------------------------
15 ali x
15 ali y
15 ali z
16 veli x
16 veli y
16 veli z

yani tablo 1 de fisno yok
tablo 2 deki son fis kaydına göre kayıt giriyor
qur kullanıcam ama nasıl bir update kullanmalıyım ?

tekrar teşekkürler
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: While not Eof do kullanımı ama ?

Mesaj gönderen conari »

Benim anladığım birinci tabloda örnek adı "Ali" olanları 2 tabloya bu tablodaki son fiş numarasını bir artırarak yaz.
bunun için birinci tabloya filter vererek adı sadece "ali" olanların gelmesini sağlıyacağız ve bunu döngüye sokacağızdı.
Şimdi,
2.tablodaki son fiş noyu al.
birinci tabloda aynı isimden kaçtane var ve neler (adoquery1, Group by)
adoquery1 kayıt sayısı kadar 1.döngü
birinci tabloyu filter ile queryden dönen ilk isme göre filtrele
Bu tablonun kayıt sayısı kadar 2.döngü; 2. tabloya son fiş no ile birlikte bu verileri yazdır.
son fiş noyu bir artır.
1.döngüye dön.

Anlatabildimmi?

Bu mantıkta @aslangeri'nin dediğinide yapabilirsiniz.
ismi değişkende tutarak her seferinde karşılaştırır isim değişmiş ise numarayı bir artır ve değişkenide tekrar set ederek yazarsınız.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: While not Eof do kullanımı ama ?

Mesaj gönderen qamyoncu »

Merhabalar;

Anladığım kadarıyla sadece adlarının aynı olmasını istiyorsun. Alttaki kod işini görebilir.

Kod: Tümünü seç

function isimbul(Value: String): String;
var
i, a: Integer;
kalanmetin: String;
begin
a := AnsiPos(' ', Value);
kalanmetin := Copy(Value, a+1, length(Value)-a);
if AnsiPos(' ', kalanmetin)>0 then
begin
isimbul(kalanmetin);
end
else
result := Copy(Value, 1, length(Value)-a-1);
end;
Böylelikle sadece ismi elde ettik. 2 ve ya 3 isim varsa tüm isimleri alacaktır bu kod.
Örnek: Ahmet Ali MURATOĞLU --> Ahmet Ali
Örnek: Yunus Emre Selim BORA --> Yunus Emre Selim

isim-soyisim kolonlarını ayrı tutmadıysan diye yazdım, anlamayadım, daha sonra:

Kod: Tümünü seç

var
yenikayit:integer;
eskifisno: integer;
ayniadvarmi: boolean;
begin
Table1.First;
While not Table1.Eof do
begin
table2.First;
ayniadvarmi:=false;
while not table2.eof do
begin
if table2ADI.Value=Table1ADI.Value then
begin
ayniadvarmi:=true;
eskifisno:=Table2FISNO.Value        //<---   Anlamışsındır burayı..
end;
table2.next;
end;
  if ayniadvarmi=false then
    begin
    Table2.Last;
    yenikayit:=StrToInt(DBEdit8.Text)+1 ;//dbedit8.text fişno
    Table2.Insert;
    DBEdit6.Text:=Table1ADI.Value;
    DBEdit7.Text:=Table1SOYADI.Value;
    DBEdit8.Text:= IntToStr(yenikayit);
    Table2.Post;
    Table1.delete;
    end
  else
  begin
    Table2.Last;
    Table2.Insert;
    DBEdit6.Text:=Table1ADI.Value;
    DBEdit7.Text:=Table1SOYADI.Value;
    DBEdit8.Text:= IntToStr(eskifisno);
    Table2.Post;
    Table1.delete;
  end;

end;
end;
Umarım işini görür.
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: While not Eof do kullanımı ama ?

Mesaj gönderen conari »

2.tablo dolu veya 2. tablodaki aynı isim bulunup onun numarası ile yazılacak diye bir bilgi yokki.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
qamyoncu
Üye
Mesajlar: 266
Kayıt: 12 Tem 2008 04:30

Re: While not Eof do kullanımı ama ?

Mesaj gönderen qamyoncu »

İsim - Fişno
------------
Ahmet - 1
mehmet - 2
figen - 3
gürsel - 4
-----------
şimdi Ahmet diye birini ekliycez.
sence;
Ahmet - 1 mi olması mantıklı,
Ahmet - 5 olması mı?

2. Tablonun dolu olması derken?
Batuhan TAŞDÖVEN
'Yükseldikçe küçülen bir uçurtma..'
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

Re: While not Eof do kullanımı ama ?

Mesaj gönderen kodcuminik »

gerçi aslan geri ve conari hocam anladı cevapladı ama
peki bir daha izah etmeye çalışayım

webde sepet mantıgı gibi
tablo1 de
musteriadi
urunadı
fiyatı
toplamı

musteri geldi 10 tane ürün seçti siparise tıkladı tablo1 kayıt etti 1o satırlık aynı müşteri adından kayıt oldu

simdi tablo2 dede alınan siparisler olarak

her sepeti bir fiş numarasında toplamak istiyorum yani müşteriadı x ise yeni fişno aç
x olanların hepsini o fiş no ile kayıt et ve döngü davam etsin yani fatura gibi düşünün
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

Re: While not Eof do kullanımı ama ?

Mesaj gönderen kodcuminik »

s.a
aslangeri hocam ?
dönüp dönüp duruyorum 15 gündür çözemedim gitti dert bende şifa sende
while do,repet until,update arasında kalıyorum sonsuz döngüden bir türlü çıkamıyorum

tablodan tabloya düz aktarıyorum
ama bunu ana tablodaki fişnosunu baz alarak yapmaya çalıştıgımda çuvallıyorum bir türlü yapamadım
şimdi tek yapmak istedigim

ana tablodaki son fiş nosunu al
aracı tablodaki adı aynı olanları numaralandır
örnek
ana tablodaki son fiş no:=50
aracı tabloda adı aynı olanları sıra ile bir arttırarak numaralandır

x:=50

İsim - Fişno
------------
Ahmet 51
Ahmet 51
Ahmet 51
mehmet 52
mehmet 52
figen 53
figen 53
gürsel 54
gürsel 54
gürsel 54

tekrar teşekkürler
bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: While not Eof do kullanımı ama ?

Mesaj gönderen aslangeri »

s.a.
ana tablodan son fiş numarasını alabiliyorsundur....
ikinci tabloyu adına göre sırala
ve tabloyu while döngüsüne sok.
sıradan numarayı vermeye başla.
numara verdiğin ismi bir değişkene at ve sonraki numara vereceğin ismi kontrol et.
eğer önceki isim ve şimdiki isim farklı ise fiş numarasını bir arttır aynı ise aynı numaraya devam et...
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
kodcuminik
Üye
Mesajlar: 140
Kayıt: 11 Oca 2009 10:25

Re: While not Eof do kullanımı ama ?

Mesaj gönderen kodcuminik »

s.a
çok teşekkürler
sihir misali sihir insanın beyninde yeterki deyneği dokunduran iyi dokundursun : :bravo:

Kod: Tümünü seç

VAR
x:integer; //sayı degişkeni 
Y:string; // ad degiskeni 
begin
 adoTable1.First;
 Y:=ADOTable1ad.Value;
 ADOTable2.Last;
 X:=ADOTable2no.Value+1 ;
 While not adoTable1.Eof do // döngü ile degişkene atılan degerler kıyaslanıyor 
  if ADOTable1ad.Value=y then
  begin
 ADOTable1.Edit;
 ADOTable1no.Value:=x;
 ADOTable1.Post;
 ADOTable1.Next;
 Label7.Caption:='kayıtlar numaralandırılıyor lütfen bekleyin';
 end
 else
 begin

x:=x+1;
y:=ADOTable1ad.Value;
ADOTable1.Edit;
 ADOTable1no.Value:=x;
 ADOTable1.Post;
 ADOTable1.Next;


end;
ADOTable1.First;  // numaralandırmadan sonra tablo2 ye döngü ile insert
While not adoTable1.Eof do 
begin
ADOTable2.Last;
ADOTable2.Insert;
DBEdit5.Text:=ADOTable1ad.Value;
DBEdit6.Text:=ADOTable1soyad.Value;
DBEdit4.TexT:=IntToStr(ADOTable1no.Value);
ADOTable2.Post;
ADOTable1.Next;
 Label7.Caption:='TABLO2 YE  BİLGİLER  AKTARILIYOR '
     end;
      ADOTable1.First;
While not adoTable1.Eof do   //TABLE1 BOSALTILIYOR 
begin
ADOTable1.Delete;
end;
 Label7.Caption:='TABLE1  BOŞALTILDI';
ShowMessage(' AKTARIM BAŞARILI BİR ŞEKİLDE TAMAMLANDI ');
 end;

end.

bilmezler bilmediklerinide bilmezler ama kendilerini bilir sanırlar
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: While not Eof do kullanımı ama ?

Mesaj gönderen barutali »

(' UPDATE IKINCITABLON SET FISNO = 15 Where ADI ='+#39+ Edit.text +#39);
yani
UPDATE IKINCITABLON SET FISNO = 15 Where ADI = ali

ikinci tabloda adı kısmı ali olanların hepsinin fiş nosunu 15 olarak güncelle ...
Cevapla