SQL ile otomatik siralama islemi ???

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

SQL ile otomatik siralama islemi ???

Mesaj gönderen hi_selamlar »

S.A. sevgili arkadaslar...

Firebird kullaniyorum. bir tane tablom var. bu tobloda SIRA adinda integer bir alan var.
benim anacim bir SP yazip bu sp ile delphiden cagirarak otomatik olarak 1 den baslayarak siralama yaptirmak. :?:

yani...

Kod: Tümünü seç

While not Table1.eof do
begin
   i:=i+1;
   table1sirano.value:=i;
   table1.next;
end;
gibi bir kodu firebird ile sql olarak nasil yazmam gerekli.
bir fikri olan arkadasim varmi acaba..


==============================================

affiniza siginarak soruyorum.

birde söyle bir sorunum var..

kodu adinda bir saha var. amacim girilen kodun ilk 3 karakterini alip dönen bu sonucu baska bir sp ile parametre olarak göndererek baska bir veri dosyasinda toplamak. (kümüle etmek.)

sevgiler ve saygilar.
S.A.
En son hi_selamlar tarafından 07 Haz 2005 08:13 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Herkes cahildir, bazi konularda.
denwer
Üye
Mesajlar: 15
Kayıt: 31 May 2005 05:38
Konum: Avcılar, Istanbul
İletişim:

Mesaj gönderen denwer »

Merhaba,
Sp kısmını bilemeyeceğim ama sql'de sıralama yapmak için

Select * From TABLO Order by SIRA Asc

gibi bir komut kullanabilirsiniz (Büyükten küçüğe sıralamak için Asc yerine Desc yazabilirsiniz)

Saygılarımla.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

For Select kullanımı var ama For Update olarak kullanılabilirmi bilmiyorum bir dene istersen For Select birden fazla kayıt döndürmek için kullanılıyor bir nevi raporlamada.


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.
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

denwer yazdı:Merhaba,
Sp kısmını bilemeyeceğim ama sql'de sıralama yapmak için

Select * From TABLO Order by SIRA Asc

gibi bir komut kullanabilirsiniz (Büyükten küçüğe sıralamak için Asc yerine Desc yazabilirsiniz)

Saygılarımla.
hocam cevap icin tesekkur ederim.
ama benim amacim bu tarz bir siralama yapmak degil.

sirano adinda bir saha var. burayi kullanici girmiyor. bos ilk etapta.
kullanici bilgilerini giriyor. islemini bitirdikten sonra formu kapatirken
ben bir sp ile arka planda girilen degerleri öncelikle sql ile siralamak (öncelikle tarihe göre daha sonra belge numarasina göre) ve daha sonra;

Kod: Tümünü seç

sirano
=====
1
2
3
4
5
sira numartasini ben sifirdan vererek tabloya yazdirmak istiyorum..
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
hi_selamlar
Üye
Mesajlar: 523
Kayıt: 05 May 2005 03:24
Konum: DelphiTürkiye.COM

Mesaj gönderen hi_selamlar »

husonet hocam bir örnek verebilmen münkünmü acaba ?
rica etsem..
Herkes cahildir, bazi konularda.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

For Select e örnek

Kod: Tümünü seç

CREATE PROCEDURE SP_CARI_BORC(
    CARIKOD1 VARCHAR(15),
    CARIKOD2 VARCHAR(15),
    CARIOZELKOD VARCHAR(4))
RETURNS (
    CARI_KOD VARCHAR(15),
    CARI_UNVAN VARCHAR(50),
    CARI_BORC NUMERIC(16,2),
    CARI_ALACAK NUMERIC(16,2),
    CARI_TOPLAM NUMERIC(16,2),
    DURUM VARCHAR(10))
AS
begin
  if ((:cariozelkod is null) or (:cariozelkod = '')) then
  begin
      for select cari.cari_kod, cari.cari_unvan, cari.cari_borc, cari.cari_alacak,
      case when (cari.cari_borc > cari.cari_alacak) then
        (cari.cari_borc - cari.cari_alacak)
      else
        (cari.cari_alacak - cari.cari_borc) end as toplam,
      case when (cari.cari_borc > cari.cari_alacak) then
        ('B')
      when (cari.cari_borc < cari.cari_alacak) then
        ('A')
      else 
        ('YOK')
        end as durum
        from cari where ((cari.cari_kod >= :carikod1) and (cari.cari_kod <= :carikod2)) order by cari_kod asc
      into :Cari_Kod, :CARI_UNVAN, :cari_borc, :cari_alacak, :cari_toplam, :durum
      do
      begin
        if (:durum = 'B' ) then
             suspend;
      end
    end
    else
    begin
      for select cari.cari_kod, cari.cari_unvan, cari.cari_borc, cari.cari_alacak,
      case when (cari.cari_borc > cari.cari_alacak) then
        (cari.cari_borc - cari.cari_alacak)
      else
        (cari.cari_alacak - cari.cari_borc) end as toplam,
      case when (cari.cari_borc > cari.cari_alacak) then
        ('B')
      when (cari.cari_borc < cari.cari_alacak) then
        ('A')
      else 
        ('YOK')
        end as durum
        from cari where cari.cari_ozel_kod = :cariozelkod order by cari_kod asc
      into :Cari_Kod, :CARI_UNVAN, :cari_borc, :cari_alacak, :cari_toplam, :durum
      do
      begin
        if (:durum = 'B' ) then
             suspend;
      end
    end
        
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.
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Bu daha basiti

Kod: Tümünü seç

  for select cari.cari_kod, cari.cari_unvan, cari.cari_borc, cari.cari_alacak
    from cari
  into :Cari_Kod, :CARI_UNVAN, :cari_borc, :cari_alacak
  do
  begin
     suspend;
  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.
metinkorkmaz
Üye
Mesajlar: 46
Kayıt: 25 May 2005 09:08
Konum: izmir

Mesaj gönderen metinkorkmaz »

Kod: Tümünü seç

 declare variable stokkod varchar(6);
 declare variable i integer;
.......
   i = 0;
   FOR
      select kod
        from STOK
        where     //gerekiyorsa kriterlerini yaz, yoksa bu satırı sil
        into :stokkod        // stokkodu primary key
      do
        begin
          update stok
           set satirno = :i
             where kod  = :stokod;
          i = i +1;       
      end
..........
Bu kod sana fikir verir.

Pardon, yanlış olmuş düzelttim
Cevapla