1 Son düzenleyen, avrasya34 (06.05.2007 14:54:31)

Konu: bir karakter geriden gelen arama

Merhaba arkadaşlar

Aşağıdaki kod textbaxın keypresine yazılı ve textbaxa girilen her karakterden sonra arama yaptırıyorum.
sorun şurdaki aramayı hep birkarakter geriden yapıyor. yani ben "zeki" yazdığımda o "zek" aramış oluyor.
nedenini bulamadım ...

************************textbox:keypres

#DEFINE DELKEY 127
LPARAMETERS nKeyCode, nShiftAltCtrl
LOCAL cDisplayValue
cDisplayValue = ALLTRIM(THIS.Value)
IF nKeyCode = DELKEY
    cDisplayValue = ALLTRIM(THIS.Value)
    IF LEN(m.cDisplayValue)=1
        cDisplayValue = ""
    ELSE
*        cDisplayValue = LEFT(cDisplayValue,LEN(cDisplayValue)-1)
    ENDIF
ELSE
    cDisplayValue = ALLTRIM(THIS.Value)+CHR(nKeyCode)
ENDIF
    cDisplayValue = ALLTRIM(THIS.Value)

THISFORM.LockScreen = .T.
if EMPTY(m.cDisplayValue)
    SELECT no,adi,soyadi,evtel1,evtel2,iştel1,iştel2,gsm1,gsm2,fax,padi,pirki,pcinsi,pcinsiyeti,ilçe,il FROM hasta INTO CURSOR kayit ORDER BY no
    Thisform.Grid1.RecordSource="kayit"
endif   
if !empty(m.cDisplayValue)
    SELECT no,adi,soyadi,evtel1,evtel2,iştel1,iştel2,gsm1,gsm2,fax,padi,pirki,pcinsi,pcinsiyeti,ilçe,il FROM hasta WHERE ;
    ATC(m.cdisplayvalue,CHRTRAN(adres,'ıI','iİ'))>0 INTO CURSOR kayit  ORDER BY no
    Thisform.Grid1.RecordSource="kayit"
endif
if !empty(m.cDisplayValue)
    SELECT no,adi,soyadi,evtel1,evtel2,iştel1,iştel2,gsm1,gsm2,fax,padi,pirki,pcinsi,pcinsiyeti,ilçe,il FROM hasta WHERE ;
    adi=m.cdisplayvalue OR soyadi=m.cdisplayvalue;
    OR pcinsi=m.cdisplayvalue;
    OR pcinsiyeti=m.cdisplayvalue;
    OR ilçe=m.cdisplayvalue;
    OR il=m.cdisplayvalue;
    OR m.cdisplayvalue $chrtran[TRANSFORM(no), chrtran(TRANSFORM(no), '0123456789', ''), ''];
    OR m.cdisplayvalue $chrtran[TRANSFORM(evtel1), chrtran(TRANSFORM(evtel1), '0123456789', ''), ''];
    OR m.cdisplayvalue $chrtran[TRANSFORM(evtel2), chrtran(TRANSFORM(evtel2), '0123456789', ''), ''];
    OR m.cdisplayvalue $chrtran[TRANSFORM(iştel1), chrtran(TRANSFORM(iştel1), '0123456789', ''), ''];
    OR m.cdisplayvalue $chrtran[TRANSFORM(iştel2), chrtran(TRANSFORM(iştel2), '0123456789', ''), ''];
    OR m.cdisplayvalue $chrtran[TRANSFORM(gsm1), chrtran(TRANSFORM(gsm1), '0123456789', ''), ''];
    OR m.cdisplayvalue $chrtran[TRANSFORM(gsm2), chrtran(TRANSFORM(gsm2), '0123456789', ''), ''];
    OR m.cdisplayvalue $chrtran[TRANSFORM(fax), chrtran(TRANSFORM(fax), '0123456789', ''), ''];
    OR ATC(m.cdisplayvalue,CHRTRAN(adres,'ıI','iİ'))>0;   
    OR ATC(m.cdisplayvalue,CHRTRAN(pal,'ıI','iİ'))>0;   
    OR ATC(m.cdisplayvalue,CHRTRAN(pnot,'ıI','iİ'))>0;   
    OR ATC(m.cdisplayvalue,CHRTRAN(pmama,'ıI','iİ'))>0;   
    OR padi=ALLTRIM(UPPER(m.cdisplayvalue)) OR pirki=ALLTRIM(UPPER(m.cdisplayvalue)) AND  hasta.no=no INTO CURSOR kayit  ORDER BY no
    Thisform.Grid1.RecordSource="kayit"
endif
thisform.Refresh


*************
Şİmdiden teşekkürler

2

Re: bir karakter geriden gelen arama

Sorunu hallettim arkadaşlar hata ilk if bitiminden sonra gelen
cDisplayValue = ALLTRIM(THIS.Value)
satırındaymış olmaması gerekiyor orda