1

Konu: local degiskenim sql column olarak algilaniyor

arkadaslar bende uc tane textbox var bunlarin ucununde keypress eventlerine kod koydum

temel olarak yaptigim ne girilmisse o anda onunla formun asagisindaki listbox icinde arama yaptirmak

cokta guzel calisiyor fakat bir texbox tan oburune gecince birbirlerinin icerisindeki variable lerin isimle ile bir hata mesaji cikiyor

mesela son isim ile arama yapiyorum sonra ilk isim ile arama yapmak icin isim textboxuna gecince diyorki

sql column sonisim is not found

bu hata en son uzerine yazi yazdigim textbox a ait keypress eventi icinde olusuyor. halbuki orada sonisim diye birsey yok.

ayrica bu bir sql column da degil. bu bir degisken. Local sonisim Local ilkisim diye tanimladigim ve sonra sql icinde m.sonisim m.ilkisim diye arattigim birsey

bunun sebebini bir turlu dusunemiyorum nedir acaba

2

Re: local degiskenim sql column olarak algilaniyor

sql satırını tam olarak yazar mısın?

3

Re: local degiskenim sql column olarak algilaniyor

hocam keypress eventlerinin altindaki kodlar birbirine aynen benzer

asagidaki gibi

Visual Fox Pro
LPARAMETERS nKeyCode, nShiftAltCtrl

MESSAGEBOX("Ad")
LOCAL nChar
nChar = CHR(nKeycode)
LOCAL vekaletIlkIsimStr
IF nKeyCode == 127 OR nKeyCode == 13
    IF nKeyCode == 13
        vekaletIlkIsimStr= ALLTRIM(this.Text)       
    ELSE                                   
        vekaletIlkIsimStr = SUBSTR(ALLTRIM(this.Text),1,this.SelStart-1)
        vekaletIlkIsimStr = vekaletIlkIsimStr + SUBSTR(ALLTRIM(this.Text),this.SelStart+1,LEN(ALLTRIM(this.Text))-1)       
    ENDIF
ELSE
    vekaletIlkIsimStr = ALLTRIM(this.Text) + ALLTRIM(nChar)
    vekaletIlkIsimStr = ALLTRIM(vekaletIlkIsimStr)
ENDIF
 
IF LEN(ALLTRIM(vekaletIlkIsimStr)) <= 1
    WITH this.Parent.vekaletListesiList
    .RowSourceType= 3
    .RowSource = 'select id as idnum, ilkisim as iisim, sonisim as sisim, tckimlikno as tckmlkno'+;
    ' from muvekkiller'+;
    ' order by id'+;
    ' into cursor localMuvekkillerAlias' && localAlias benim sectigim bir alias
    .ColumnCount = 4 && sadece ilk 3 kolonu goster
    .ColumnWidths = '50,100,100,100'
    .ColumnLines = .F.
    ENDWITH
ELSE        
    *do a search with this ilkisim       
    WITH this.Parent.vekaletListesiList
    .RowSourceType= 3
    .RowSource = 'select id as idnum, ilkisim as iisim, sonisim as sisim, tckimlikno as tckmlkno'+;
    ' from muvekkiller'+;
    ' where ilkisim = m.vekaletIlkIsimStr'+;
    ' order by id'+;
    ' into cursor localMuvekkillerAlias' && localAlias benim sectigim bir alias
    .ColumnCount = 4 && sadece ilk 3 kolonu goster
    .ColumnWidths = '50,100,100,100'
    .ColumnLines = .F.
    ENDWITH
    this.Parent.vekaletListesiList.Refresh
ENDIF

4

Re: local degiskenim sql column olarak algilaniyor

select id as idnum, ilkisim as iisim, sonisim as sisim, tckimlikno as tckmlkno'+;
  ' from muvekkiller'

müvekkiller dosyası içinde ilkisim ve sonisim alanları yoksa hata gelmesi normalir.

5

Re: local degiskenim sql column olarak algilaniyor

hocam ilkisim ve sonisim var
zaten her zaman gelmiyor hata
ve gelen hata benim tanimladigim bir degisken olan

LOCAL vekaletIlkIsimStr

degiskenimi

sql column vekaletIlkIsimStr is not found

yani boyle bir sql kolonu bulunamiyor gibi bir hata veriyor

6

Re: local degiskenim sql column olarak algilaniyor

çetin usta sana tam olarak ne yapacağını söyler . sorunun maalesef beni aşıyor.

7

Re: local degiskenim sql column olarak algilaniyor

vallahi ben cozemedim. simdi butun degiskenleri m. ile kullaniyorum ama duzelmedi sorun ayni

yani a b c diye uc tane text box var dusun

b textbox unun keypress eventi
bir once cagirilmis a textboxunun keypress eventinin icerisinde tanimlanmis degiskeni

sql column degisken is not found
hatasi veriyor
hic mantikli degil

8

Re: local degiskenim sql column olarak algilaniyor

sana tavsiyem sorguılama işini en sona bırak.
textboxlardan sonra bir sorgula butonu koy.
içine keypres de kullandığın sorguyu ve nasıl gösteceğini (listbox içinde mi , grid içinde mi?) belirle
kişi önce textboxlara istenilen bilgileri girsin , sonra "sorgula" tuşuna bastığında sorgu çalışsın ve sonuçları göstersin.


senin yaptığın biraz karışık olmuş.

9

Re: local degiskenim sql column olarak algilaniyor

hocam oyle anlattilar ben dizayni kurgulamiyorumya
buton muton istemiyolar
bastimmi ciksin vs
deli ederler adami

10

Re: local degiskenim sql column olarak algilaniyor

o zaman şart ekle
isim ya da sonisim dolu  ise sorgulama yap de.

11

Re: local degiskenim sql column olarak algilaniyor

hocam sanirim anlamadin
bunun oyle birseyle alakasi yok
bu tamamen scope hatasina benziyor

12

Re: local degiskenim sql column olarak algilaniyor

o zaman çetin hocayı bekleyeceksin   sad
yardımcı olamadığım için üzgünüm

13

Re: local degiskenim sql column olarak algilaniyor

Ben de aynı şekilde bir program yazmıştım ama örneğin ad,soyad,... listenin olduğu gridde hangi sütun başlığı seçiliyse o sütuna göre sıralı liste geliyordu. Sadece bir tek textbox kullandım. Sonuçta gridde seçili alan hangisiyse o alan içinde arama yapıp listeyi de sıralı halde veriyordu. Ben select sql ile değil set filter ile textbox'a yazılan karakterleri her tuşa bastıkça filtreletip gridde göstermiştim. Bu yöntemi de istersen bir düşünüver. Birden fazla textbox ile uğraşmamış olursun.

14

Re: local degiskenim sql column olarak algilaniyor

hocam aslinda calisiyor sorun sadece textbox tan textboxa gecerken bu acayip hata olusuyor ve bir kere olustuktansonra normal calismaya devam ediyor

15

Re: local degiskenim sql column olarak algilaniyor

simdi bir option group kontolu koydum
duruma gore hangisi secili ise ona gore tek bir textbox ta aratiyorum
ama problem aynen tekerrur ediyor
formun initinde butun variableleri LOCAL var diyerek atiyorum
kodda asagidaki gibi simdi

LPARAMETERS nKeyCode, nShiftAltCtrl
IF this.Parent.searchVekaletOptionGroup.Value == 1
    *do a search with the number
    LOCAL nChar
    IF nKeyCode >= 48 AND nKeyCode <=57 OR nKeyCode == 127 OR nKeyCode == 13
        nChar = CHR(nKeycode)
        IF nKeyCode == 127 OR nKeyCode == 13
            IF nKeyCode == 13
                m.vekaletNoStr = ALLTRIM(this.Text)
                m.vekaletNo = INT(VAL(m.vekaletNoStr))
            ELSE                            
                m.vekaletNoStr = SUBSTR(ALLTRIM(this.Text),1,this.SelStart-1)
                m.vekaletNoStr = m.vekaletNoStr + SUBSTR(ALLTRIM(this.Text),this.SelStart+1,LEN(ALLTRIM(this.Text))-1)            
                m.vekaletNo = INT(VAL(m.vekaletNoStr))
            ENDIF
        ELSE
            m.vekaletNoStr = ALLTRIM(this.Text) + ALLTRIM(nChar)
            m.vekaletNoStr = ALLTRIM(m.vekaletNoStr)
            m.vekaletNo = INT(VAL(m.vekaletNoStr))    
        ENDIF
        
        IF LEN(ALLTRIM(m.vekaletNoStr)) <= 1
            WITH this.Parent.parent.vekaletSecPage.vekaletListesiList
            .RowSourceType= 3
            .RowSource = 'select id as idnum, ilkisim as iisim, sonisim as sisim, tckimlikno as tckmlkno'+;
            ' from muvekkiller'+;
            ' order by id'+;
            ' into cursor vekaletcursor1'        
            ENDWITH
        ELSE         
            *do a search with this number        
            WITH this.Parent.parent.vekaletSecPage.vekaletListesiList
            .RowSourceType = 3
            .RowSource = 'select id as idnum, ilkisim as iisim, sonisim as sisim, tckimlikno as tckmlkno'+;
            ' from muvekkiller'+;
            ' where id = m.vekaletNo'+;
            ' order by id'+;
            ' into cursor vekaletcursor2'
            ENDWITH
            this.Parent.parent.vekaletSecPage.vekaletListesiList.Refresh
        ENDIF
    ENDIF
ENDIF

IF this.Parent.searchVekaletOptionGroup.Value == 2
    *search with ilkisim
    LOCAL nChar
    nChar = CHR(nKeycode)
    IF nKeyCode == 127 OR nKeyCode == 13
        IF nKeyCode == 13
            m.vekaletIlkIsimStr= ALLTRIM(this.Text)        
        ELSE                                    
            m.vekaletIlkIsimStr = SUBSTR(ALLTRIM(this.Text),1,this.SelStart-1)
            m.vekaletIlkIsimStr = m.vekaletIlkIsimStr + SUBSTR(ALLTRIM(this.Text),this.SelStart+1,LEN(ALLTRIM(this.Text))-1)        
        ENDIF
    ELSE    
        m.vekaletIlkIsimStr = ALLTRIM(this.Text) + ALLTRIM(nChar)
        m.vekaletIlkIsimStr = ALLTRIM(m.vekaletIlkIsimStr)
    ENDIF
            
    IF LEN(ALLTRIM(m.vekaletIlkIsimStr)) <= 1
        WITH this.Parent.parent.vekaletSecPage.vekaletListesiList
        .RowSourceType= 3
        .RowSource = 'select id as idnum, ilkisim as iisim, sonisim as sisim, tckimlikno as tckmlkno'+;
        ' from muvekkiller'+;
        ' order by id'+;
        ' into cursor vekaletcursor5'
        ENDWITH
    ELSE         
        *do a search with this ilkisim        
        WITH this.Parent.parent.vekaletSecPage.vekaletListesiList
        .RowSourceType= 3
        .RowSource = 'select id as idnum, ilkisim as iisim, sonisim as sisim, tckimlikno as tckmlkno'+;
        ' from muvekkiller'+;
        ' where ilkisim = m.vekaletIlkIsimStr'+;
        ' order by id'+;
        ' into cursor vekaletcursor6'
        ENDWITH
        this.Parent.parent.vekaletSecPage.vekaletListesiList.Refresh
    ENDIF
ENDIF

IF this.Parent.searchVekaletOptionGroup.Value == 3
    *search with sonisim
    LOCAL nChar
    nChar = CHR(nKeycode)
    IF nKeyCode == 127 OR nKeyCode == 13
        IF nKeyCode == 13
            m.vekaletSonIsimStr= ALLTRIM(this.Text)        
        ELSE                                    
            m.vekaletSonIsimStr= SUBSTR(ALLTRIM(this.Text),1,this.SelStart-1)
            m.vekaletSonIsimStr = m.vekaletSonIsimStr + SUBSTR(ALLTRIM(this.Text),this.SelStart+1,LEN(ALLTRIM(this.Text))-1)        
        ENDIF
    ELSE
        m.vekaletSonIsimStr = ALLTRIM(this.Text) + ALLTRIM(nChar)
        m.vekaletSonIsimStr= ALLTRIM(m.vekaletSonIsimStr)
    ENDIF
        
    IF LEN(ALLTRIM(m.vekaletSonIsimStr)) <= 1
        WITH this.Parent.parent.vekaletSecPage.vekaletListesiList
        .RowSourceType= 3
        .RowSource = 'select id as idnum, ilkisim as iisim, sonisim as sisim, tckimlikno as tckmlkno'+;
        ' from muvekkiller'+;
        ' order by id'+;
        ' into cursor vekaletcursor3'
        ENDWITH
    ELSE         
        *do a search with this sonisim        
        WITH this.Parent.parent.vekaletSecPage.vekaletListesiList
        .RowSourceType= 3
        .RowSource = 'select id as idnum, ilkisim as iisim, sonisim as sisim, tckimlikno as tckmlkno'+;
        ' from muvekkiller'+;
        ' where sonisim = m.vekaletSonIsimStr'+;
        ' order by id'+;
        ' into cursor vekaletcursor4'
        ENDWITH
        this.Parent.parent.vekaletSecPage.vekaletListesiList.Refresh
    ENDIF
ENDIF

16

Re: local degiskenim sql column olarak algilaniyor

formun init in  de tanımlı olan bir değişkene  başka bir kontrolden değer ataması yapamazsın. (public olmadıkça tabii)
formun init in deki değişkenler yerine forma properties ekle ve değişken değerlerini onlara ata. form içinde her kontrolden değer atar veya değer  alabilirsin böylece.

17

Re: local degiskenim sql column olarak algilaniyor

dedigini yaptim simdi calisiyor ustat
tesekkurederim

18

Re: local degiskenim sql column olarak algilaniyor

2. bir yöntem daha var.
textbox lara değişken atamazsın.
textbox değerini kullanmak istediğinde
thisform.text1.value   şeklinde de kullanabilirsin.
böylece değişkenlerle uğraşmamış olursun.

19

Re: local degiskenim sql column olarak algilaniyor

ercan yazdı:

2. bir yöntem daha var.
textbox lara değişken atamazsın....


textbox'lara değişken atarsın. controlsource'ya atabilirsin. ancak şöyle bir durum var. değişken daha önce tanımlanmamışsa, foxpro kendi tanıtıyor ve bunu public yapıyor. bu yüzden değişken atama olayı sadece modal formlarda işe yarıyor...

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com