Konu: Bu işin daha kısa yolu var mı; yoksa belki birilerinin işine yarar.
Sevgili Arkadaşlar,
Kitaplarımı düzenlerken bir kitabın arasından eski bir program çıktısının bir sayfası çıktı.
80 li yılların başlarında Atatürk barajının yedek parça işlerinden sorumluydum. O sıralarda yedek parça programı yok. Amerikadan bir program bulduk ama ingilizce; bizim ambarcılar ise türkceyi bile doğru dürüst kıvıramıyorlar. Üstelik de program sonderece karışık. Mecburen iş başa düştü. Oturup önce dBase ile ardından da Clipper ile program yazıp işimizi yürütmeye çalışıyorum. Bende o zamanlarda programcılık bilgisi sıfır. 100.000 nin üzerinde yedek parça. Yüzlerce marka ve model makina var. Ambardakiler birşeyler istiyor; ben de onların isteklerini yerine getirmeğe çalışıyorum. Beni ençok zorlayan konu ise aramalardı. (Bu arada hemen şunu ekleyeyim; o sıralarda nedense index dosyaları sık sık bozulurdu. Index dosyalarını tamir eden bir program bile yazmıştım.) Her allahın günü gelib "şununla şunu bir de şunu aramak istiyoruz olmuyor." diye istekte bulunuyorlardı. Sonunda 11 fieldde rast gele kombinezonlarla arama yapacak birşeyler gerekti. Bu işi yapmak için yazdığım kodlar karışıyor, boyuna eksiklikler ve yanlışlıklar çıkıyordu. Sonunda bu işe çok basit bir çözüm buldum ve çözüm öylesine hoşuma gitmiştiki günlerce ortalıkta horoz gibi kabarıp dolaşmıştım.
İşte bulduğum kod çıktısı o çözümün sayfasıydı. Oturup test ettim; hala çok güzel çelışıyor. Eger bu çözümün daha kısa yolu varsa lütfen bildirin; yoksa belki böyle alengirli aramalarda işinize yarar.
Sevgilerimle.
Erdal
Not: Benim kod yazışım size garip gelebilir ama kusuruma bakmayın.
Store "" To V_ara, V_filter
If ! Empty(V_Tarih)
V_ara = dtoc(V_Tarih)
V_filter = "dtoc(tarih)"
Endif
If !Empty(V_Gorevli)
V_ara = V_ara+UPPER(Alltrim(V_Gorevli))
IF !EMPTY(V_filter)
V_filter = V_filter+"+substr(UPPER(ALLTRIM(gorevli)),1,L_grvli)"
ELSE
V_filter= V_filter+"substr(UPPER(ALLTRIM(gorevli)),1,L_grvli)"
ENDIF
Endif
If !Empty(V_Gorev)
V_ara = V_ara+UPPER(Alltrim(V_Gorev))
IF ! EMPTY(V_filter)
V_filter = V_filter+"+SUBSTR(UPPER(alltrim(gorev)),1,L_grv)"
ELSE
V_filter = V_filter+"SUBSTR(UPPER(alltrim(gorev)),1,L_grv)"
ENDIF
ENDIF
Locate For V_ara == &V_filter
If ! Eof()
Set Filter To V_ara == &V_filter
Brow
Endif
Set Filter To