FilemakerTurk, AYS Bilişim ve Beyaz Net tarafından desteklenmektedir.
Filemaker Danışmanınız
AYS Bilişim
Mehmet KAYA
 0532 231 07 27
 0216 318 55 80
 mkaya@aysbilisim.net
						

ExecuteSQL ile Relation yapmadan calisan ValueList yapilirmi?

+1 oy
826 kez görüntülendi
Arkadaslar,

Soyle bir sorunum var.

Uygulamamda aktif ve pasif kullanicilarin kullanildigi valuelistim var. Ancak her valuelist her tabloda her relationda calismadigini biliyoruz.

Her Relation icin yeni  bir valuelist yapmak yerine ExecuteSQL ile aktif ve pasif kullanicilarin listelendigi 2 valuelist yapip bunuda butun tablo layoutlari uzerinde kullanmamiz mumkunmu?
3, Haziran, 2015 Scripts kategorisinde Hamit Özsönmez (56,720 puan) tarafından soruldu
10, Temmuz, 2015 Hamit Özsönmez tarafından düzenlendi
Eksi ( - ) oy vermek bitsin! :)

5 Cevaplar

0 oy
Ayrı bir tablo açıp distinturb ( yanlış hatırlamıyorsam ) komutu ile liste almalı ve bu listeyi parçalayarak o tabloya atmalısınız. Şuan tlf dayım.

Sql kulanmada ise aktif ve pasif olmak üzere 2 tablo oluşturup ilişkili kayıtlardan o tabloları doldurabilirsiniz aktif ve pasif olarak iki value list oluşturabilirsiniz. Bu yöntem daha basittir.
3, Haziran, 2015 Goksel_Gokce (98,530 puan) tarafından cevaplandı
mumkunse biraz daha acarmisin? Yada bir ornek sunabilirmisiniz?
Tlfdayım. Sql ile yapmak biraz teferruatlı. Kullanıcı sayfasında kaydederken bir betik yardımı ile aktif ise aktif tablosuna pasif ise pasif tablosuna kaydı aktarın. Aktif / pasif alanına triger atatyarak durum değiştirildiğinde aktiften silip pasife aktarın. Yani 3 tablonuz olsun kullanıcılar - aktif kullanıcılar - pasif kullanıcılar şeklinde ve betik ile yönetilsin. İki değer listesi oluşturun biri aktif kullanıcılar diğeri pasif kullanıcılar şeklinde böylece kullanılacağı durumlatda ilişki kurmanıza gerek kalmaz.
Sql kullanıldığında ise kullanıcı sayfası güncellendiğinde veya yeni kayıt açıldığında tekbir betik yeterli oluyor fakat değişkene aktarılması parçalanması her parçaya yeni kayıt açılması vs. Ayrıca SQL DİKKATLİ KULLANILMASI  gereken bir komuttur. Sistemi yavaşlatma ihtimali var. Bu yöntem her gabloya uygulanmaz.
+1 oy

Execute SQL komutunun sonucu value list'e atamak pratik olmayabilir.

AktifKullanıcı isimli If ( Durum = "Aktif" ; KullaniciAdi ; "" ) şeklinde bir hesaplama alanı açıp value list için bu alanı hedef gösterebilirsiniz. Bu sayede listede sadece aktif kullanıcılar gözükecektir.

3, Haziran, 2015 F. Osman Cabi (200,340 puan) tarafından cevaplandı
Bu aklıma gelmemişti :)
Bir kaç uygulamada kullanmıştım aslında :)
iliskilendirme yapmadan bu islemi yapmak mumkunmu?

Ben USERS tablosundaki kullanici eger active alani 1 ise listelemek ve bu listeyi baska layoutlarimda iliskilendirmeden kullanmak istiyorum.
Osman beyin verdiği örnekte ilişkilendirmeden yalnızca aktif olan kullanıcıları alırsınız sanırım yapmak istediğiniz şey bu
Evet sadece aftive degeri 1 olan kullanicilari almak istiyorum.
Peki bunu ValueList icine nasil alacagim?
+2 oy
Merhaba ;

Kullandığım kolay bir yöntem;

personel kartında bir global field açarak bunun değeri "Aktif" olsun ve personel tablosundan kendi tablosu içinden personel durumunu gösteren field ile bağlantı yaparsan olur ( "personel_aktif"  adıyla olsun )

bu bağlantı ile  valuelist oluşturmak gerekiyor. Personel tablosundan; personel_aktif bağlantısı üzerinden oluşturulması yeterlidir.

ve bu Valuelisti istediğin her tabloda veya herhangi bir layoutta kullanabilirsin.

 Not : ince nüansı şudur ki bağlantıda ilk önce global fieldi kullanacaksın
3, Haziran, 2015 Akaroloji (5,730 puan) tarafından cevaplandı
3, Haziran, 2015 Akaroloji tarafından düzenlendi
Sorun bu aktif kullanicida degil. Sorunum ben iliskilendirme yapmadan valuelist hazirlayip bunu baska layoutlarimda kullanmak istiyorum.
ListValues ( ExecuteSQL( "SELECT Name FROM USERS WHERE Active = 1" ; "" ; "" ) )

Seklinde iki tane calculated field yaptim. Biri Name digeri UUID bilgilerini veren.

Suana kadar calisiyor ama uygulamamin diger yerlerindede test edecegim.

Su kadarini soylemem gerekki bazi queryler yuzunden belirli bir yavaslama oluyor
Queryler yavaşlatmaz :) Bir adet Aktif_Kullanici adında hesaplama alanı açın If ( Durum = "Aktif" ; KullaniciAdi ; "" ) Durum aktif ise kullanıcı adını alsın. Böylece bu alanda sadece aktif olan kullanıcılar olacaktır.
Uygulanacak alanı açılır menü yapın ve değer listesi olarak o hazarladığınız alanı gösterin. Sqli bu işe katmayın bence çok esnektir ama bazı komutlar çalışmaz genelde select ve benzerleri çalışır.
Pasif olanlar valuelistte görünür o şekilde olmaz
0 oy

Arkadaşlar akıl tutulmasımı yaşadınız :) Bu kadar basit bir şey için ilk defa örnek hazırlıyorum :) Hamit bey sanırım sql takıldınız. Bu konuyu çok iyi bildiğinizi tahmin ediyorum. Sonuçta sitede çok daha zor konulara açıklık getiriyorsunuz. Örnek Dosya :)

3, Haziran, 2015 Goksel_Gokce (98,530 puan) tarafından cevaplandı
Hocam, benim aradigim cozumun aslinda bu kadar basit olabilecegini dusunmuyorum. Eger basitsede bunu iyice incelemek istiyorum.

Cunki benim aslinda yapmak istedigim ve tam olarak anliyamadigim assagidaki sitede anlatiliyor.

http://filemakerhacks.com/2012/07/25/magic-value-lists/
Örnek güzelmiş, teşekkürler.

Anladığım kadarıyla "Magic Value List"in en önemli özelliği indexlenmeyen alanlar için value list oluşturabiliyor olmanız.

Sizin uygulamanızda böyle bir durum yoksa Akaroloji'nin önerdiği tek "relation" işi çözmesi lazım. Diğer tablolarınız ile kullanıcı tablosu arasında ilişki olmasa dahi value listler (alttaki resimdeki gibi) çalışacaktır.

http://filemakerturk.com/?qa=blob&qa_blobid=10473173320195188481
Vay beeee teorikte çok basit ama pratikte oldukça zormuş. sanırım formun ençok hitini almış;))
Katılıyorum akıl tutulması bu olsa gerekmiş;)) fakat hala istediğimi elde edemedim çok basit gibi sanırım anlatamadım biraz uzun olacak ama anlatayım
              grup      kod
marka   infinive    01
marka   Bmv        02
marka    Mersedes 03
Marka    serçe        04
Marka    Mazda      05
segment  lüx           01
segment  orta          02
segment  düşük       03
model      2000         01
model      2001          02
model       2003          03

bunları bir loyauta sıraladım zamanla eklenebilir olsun diye
başka bir loyautta
marka fieldi bu fieldde sadece marka olanlar gözğkecek infinitive seçince marka fieldine infinitive markodu fieldine 01 yazacak
aynı şekilde segment fieldi olacak aynı işlemi burda yapacak
model fieldi olacak aynı işlemi burda yapacak
bu şekilde katagorileri çoğalttıkça fieldi de açılıp devapedip gidecek Sonsuza dek değil tabiiki;))

bu şekilde bir şey MÜMKÜNMÜ
Case ile şurda şu varsa şuraya şu kodu yaz ile yapılabilir ama bu sefer eklemelerde sikinti olur onun için çırpınıyorum ve sselam......
+1 oy

Magic Value List yazılımını şimdi inceledim. Basit bir şey. Sql bu işlerde çok esnek. Tek bir betik yeterli istenilen yerdede aynı betik kullanılabilir ama dediğim gibi mysql ve mssql deki performansı vermez. 

Burada büyük sistemler kodlamış arkadaşlar var onlar ne demek istediğimi iyi anlarlar. Bazen ufak bir hata sistemde muazzam bir yüke neden olabilir. O yüzden bu tür programların bu işi iyi bilin kişiler tarafından kodlanması gerekir. Bu hatalar malesef türk yazılımlarında olduğu gibi abd yazılımlarındada var. çok fazla data girişi yapıldığında ve çok fazla kullanıcı bağlandığında o yazılımların %80 i KIPIRDAYAMAZ ve hepsindede bu gibi özellikler var. Son kullanıcı için bu ve bunun gibi özellikler önemli değil SİSTEM PERFORMANSI önemli.

Yenilikler zannedildiği gibi her zaman sağlıklı değil arkadaşlar. Örneğin Excutesql() ( Hesaplama alanındaki betikdeki değil ) Steve jobs un vefat ettiğinin ertesi yıl eklendi. Muhtemelen steve jobs eklenmesini istemedi. Neden acaba :) Ayrıca ilk versiyonu ( zannedersem Fmp 11 ) berbattı. 2000 kayıtta bile kasıyordu sonraki versiyonda düzeltildi. Görüldüğü gibi filemakerin bile geliştirdiklerinde hata yavaşlama vs olabiliyor. Biz STABİL olandan vazgeçmeyelim.

4, Haziran, 2015 Goksel_Gokce (98,530 puan) tarafından cevaplandı
...