2010-03-17 11 views
12

Uygulamamızda, bir müşteri listesi ve bir anahtar kelime listesi (başka şeylerin yanı sıra) vardır. Her müşterinin bir dizi anahtar kelimesi olabilir, ancak zorunlu değildir. Örneğin, bir müşteri "perakende" ve "zincir" anahtar kelimelerine sahip olabilir, biri yalnızca "yüklenici" ye sahip olabilir ve üçüncüsü hiç sahip olamaz. Ben kullanıcı bu anahtar kelimelere dayanan bir müşteri seçim yapmak izin vermek istiyorumOrtalama bir kullanıcının grafiksel olarak bir boolean ifadesi tasarlaması nasıl sağlanır

, ama ben bunu yapmak istiyorum (retail AND chain) or contractor and not wholesale

yazmak zorunda değil kullanıcı dostu mümkün olduğunca ve ideal sadece "basit" ile onay kutuları, comboboxlar vb. gibi kontroller.

Bunu nasıl tasarlayacağınız konusunda herhangi bir öneri var mı? Ya da benzer bir işlevselliğin olduğu bazı uygulama örnekleri olabilir mi?

Find customers with 

All of these   Any of these   None of these 
[] retail    [] retail    [] retail 
[] chain    [] chain    [] chain 
[] contractor   [] contractor   [] contractor 
[] wholesale   [] wholesale   [] wholesale 

cevap

11

Belki basit arayüzü gibi bir şey olurdu. Kullanıcı, bir SQL sorgusunu sezgisel bir şekilde oluşturmak için yönlendirilir. TOAD'un sorguları da filtrelemek için bir sihirbazı vardır.

Umarım size yardımcı olur.

+0

Parlak ve basit. Karmaşık ifadeler oluşturamayacakları için "güç kullanıcıları" sınırlanacaktır, ancak kullanıcıların% 99'u bunun için yeterli olacaktır. Teşekkürler :-) –

+1

Altta bir '{gelişmiş sorgu kullan} düğmesini kullanmalısınız. –

+1

Vakaların% 99'unu hesaba katmak için, daha da basitleştirebilir ve tek bir değerler listesi ve bir operatör için bir açılır liste (All, Any, None) yapabilirsiniz. Kullanıcıların nadiren aynı alan/özellik için birden fazla operatöre ihtiyaç duyduğunu (örneğin, Tüm bu değerler VEYA Bu değerlerden herhangi biri) bulmanızı sağlayacağını düşünüyorum. Biraz esneklik kaybedersiniz, ancak hem Any hem de No'da seçilen aynı değer gibi mantık hatalarını önler. –

0

MS Access veritabanı raporlar yapmak için bir sihirbaz vardır:

1

Belki de Google'ın arama özelliğini belirten gelişmiş arama yöntemini kullanabilirsiniz. Şansınız varsa, kullanıcılar buna aşina olacaktır. Son kullanıcılar karmaşık boole yapılarıyla ciddi sorunlara neden olurlar.

5

Bunun bir çok çalışması var (VE onların anlaması için oldukça kolay, fakat OR zor.). Son kullanıcılarınıza genel amaçlı bir boole ekspresyon oluşturucuya erişim sağlayın ve sonu olmayan bir tavşan deliğinden aşağıya atlıyorsunuz.

  • JacobM'nin çözümü güzel bir basitleştirmedir.
  • Geçmişte kullandığım bir sistemde arama arıtması olmalıdır: sadece ilk arama için bir veya iki karar verebilir, sonra son kullanıcıların tek bir karar dizisi ile sonuçları düşürmelerine izin verir ("sadece yüklenicileri gösterin", "perakende değil", vb.) Bunun iyi çalışması için genellikle sekmeli bir pencere listesi veya başka bir şey aracılığıyla son aramaları sürdürmeleri için kolay bir yola ihtiyacınız vardır.
  • Son kullanıcılarınız hakkında dikkatli bir şekilde düşünün. Onlar gerçekten tam bir boole arama jeneratörü ister mi? İstedikleri gerçek veriler nedir? Bu verilere erişmek, bazı keyfi sınırlardan daha karmaşık arama gerektirmiyor mu? Öyleyse, UI'nizi yalnızca bu sınıra kadar destekleyecek şekilde tasarlayın. JacobM'nin çözümü bir dereceye kadar bunun bir örneğidir.
+0

Noktası 1) Katılıyorum :-) Nokta 2) Bunu yapmak için sezgisel ve kolay bir yoldur, ancak her yineleme sonrasında listeden geçmeyi gerektirir. Bu durumda çok zaman alıcı. Puan 3) Kesinlikle haklısınız. Kullanıcılarımın karmaşık ifadeler oluşturmasına gerek yok. Muhtemelen JacobM'nin çözümüne gideceğim. En azından mevcut ihtiyaçlarım için yeterince esnektir. –

2

Sabit bir alan listeleriyle elde edebileceğinizden daha fazla güç ve esneklik için, karmaşık Boole ifadelerinin oluşturulmasına olanak tanıyan iyi bilinen bir yaklaşım olan query-by-example vardır.Görsel Diller & Hesaplama Cilt 11, Sayı 2, Nisan 2000, P151 ve

  • Murray, Paton, and Bryce’s Kaleidoquery (Journal: sınırsız keyfi Boole ifadeleri belirtmek için gerçekten grafiksel yollar için

    , yol metaforlar kullanmak birkaç oradayız -189) Bilgi Bilimleri Amerikan Derneği'nin 54. Olağan Toplantısı

  • Shneiderman’s Filer/flow (Bildiri, cilt. 28, Washington, DC, 27-31 Ekim, 1991, p379-384).

SQL tarzı Boole ifadeleri daha iyi olsa da, bunların tümü muhtemelen iyi kullanmak için en az biraz pratik gerektirir UI nispeten karmaşıktır. Böylelikle, herhangi bir ad hoc sorgulama yeteneği muhtemelen "gelişmiş" bir özellik olarak yalıtılmalıdır. Çoğu uygulamada, kullanıcılar işlerinin büyük bir çoğunluğunu oluşturmaktadır sorguları birkaç çok özel çeşit var (ör fazla n gün gecikmiş hesaplar). Konserve veya yarı konserve sorguları seçmek için basit bir iletişim kutusu bunun için en iyisidir ve varsayılan kullanıcı arayüzü olmalıdır.

İlgili konular