1

Konu: scan ... endscan

öğrencilerin aldığı etütleri gösteren bir tablo var.

randevuson table

derno      ad                 etutno     etutgelme

123        asdad                38
234        asdfe                 25
235        werw                 15

bu tabloda öğrencilerin etüt randevu kaydı yapılıyor.



randevuss table

derno    etutno    gelme

123        38          E
234        25          H
235        15          E
.
.
.

bu tabloda ise, her öğrencinin aldığı etütlere gelip gelmediği kontrolü yapılıyor.

select randevuss
SCAN
    SCATTER memvar
    SELECT randevusonn
    LOCATE FOR derno=m.derno AND etutno=m.etutno
    IF FOUND()
          SELECT randevusonn
          replace etutgelme WITH m.gelme FOR derno=m.derno AND etutno=m.etutno
    ENDIF
SELECT randevuss
endscan

kodunu yazıyorum ancak istediğim sonucu alamıyorum.
şimdiden teşekkürler...

2 Son düzenleyen, mrduyar (08.05.2008 13:56:22)

Re: scan ... endscan

selamlar;

Visual Fox Pro
SELECT 'randevuss'

go top
SCAN
    SELECT 'randevusonn'
    LOCATE && en başa gider
    LOCATE FOR derno=m.derno AND etutno=m.etutno
    IF FOUND()
        SELECT 'randevusonn'
        REPLACE etutgelme WITH m.gelme  && for a gerek yok zaten yukarıda filitrelemişsin.
    ENDIF
    SELECT randevuss
ENDSCAN

şeklinde denermisin!

Bilmediğin Neyse Yanıldığındır.

3

Re: scan ... endscan

malesef olmadı. hata nerede anlıyamıyorum. her zaman kullandığım bir kod halbuki.

randevuss.dbf de bir öğrenci birden fazla ders için randevu alabiliyor. bu yüzden sanki ilk bulduğu kaydın gelme durumunu kaydediyor gibi.
örnek:

derno    etutno    gelme
123        8            H
123       38           H
123       19           H
123       25           E
234       8            E
234       12          H
234       10          E
   

gibi...

4

Re: scan ... endscan

selamlar;

bu şekilde göndersen daha çabuk çözülürdü.
m.derno ve m.etutno kullandığın için oluyor.


Visual Fox Pro
CREATE CURSOR 'randevusonn' (derno n(5),ad c(15),etutno n(5),etutgelme c(1))

INSERT INTO 'randevusonn' (derno,ad,etutno,etutgelme) VALUES  (123,'adadas',38,' ')
INSERT INTO 'randevusonn' (derno,ad,etutno,etutgelme) VALUES  (234,'adadas',25,' ')
INSERT INTO 'randevusonn' (derno,ad,etutno,etutgelme) VALUES  (235,'adadas',15,' ')
 
CREATE CURSOR 'randevuss' (derno n(5),etutno n(5),gelme c(1))
INSERT INTO 'randevuss' (derno,etutno,gelme) VALUES  (123,38,'E')
INSERT INTO 'randevuss' (derno,etutno,gelme) VALUES  (123,25,'H')
INSERT INTO 'randevuss' (derno,etutno,gelme) VALUES  (234,8,'E')
INSERT INTO 'randevuss' (derno,etutno,gelme) VALUES  (234,12,'H')
INSERT INTO 'randevuss' (derno,etutno,gelme) VALUES  (234,10,'E')
 
SELECT 'randevuss'
go top
SCAN
  SELECT 'randevusonn'
  LOCATE && en başa gider
  LOCATE FOR derno=randevuss.derno AND etutno=randevuss.etutno
  IF FOUND()
    SELECT 'randevusonn'
    REPLACE etutgelme WITH randevuss.gelme  && for a gerek yok zaten yukarıda filitrelemişsin.
  ENDIF
  SELECT randevuss
ENDSCAN
  SELECT 'randevusonn'
  brow
Bilmediğin Neyse Yanıldığındır.

5

Re: scan ... endscan

tamam olay çözüldü. bir yede mantık hatası olmuş. teşekkürler...