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
						

Seçimli Mesaj Gönderme

+1 oy
954 kez görüntülendi

Herkese selam eder hayırlı bayramlar dilerim;

 

Seçime dayalı olarak tek, birden fazla yada tüm seçili olan posta adreslerine mesaj göndermek istiyorum. Fakat bir türlü beceremedim. Seçim ve e-posta kontrolü yaptırıyorum loop bozuluyor, loop u yaptırıyorum if bozuluyor yani işin işinden çıkamadım. Yardımlarınız için şimdiden teşekkür eder hayırlı günler ve hayırlı bayramlar dilerim.

Örnek Dosya

Saygılarımla.

26, Haziran, 2017 Filemaker Advanced kategorisinde ercanD (73,590 puan) tarafından soruldu
27, Haziran, 2017 ercanD tarafından düzenlendi

1 cevap

+2 oy
Neden Find işlemini kullanmıyorsun?

Seçimlerini ve eposta alanı boş olmayan kayıtları bulduktan sonra döngüye geçebilirsin...
26, Haziran, 2017 Recep Güney (70,020 puan) tarafından cevaplandı
Aşağıdaki gibi bir şey çıkarttım ama bir bakar mısınız, olmuş mu?


Allow User Abort [ On ]
Set Error Capture [ Off ]
Enter Find Mode [ ]
Set Field [ deneme::Eposta; "*" ]
Set Field [ deneme::SecimKutusu; "Evet" ]
Perform Find [ ]
If [ Get ( FoundCount) ≥ 1 ]
#Burada Send Mail yer alacak
Show Custom Dialog [ Title: "Başaılı"; Message: Get ( FoundCount ) & " Seçili Mesaj gönderildi"; Default Button: “Tamam”, Commit:
“Yes” ]
Else
Show Custom Dialog [ Title: "Uyarı"; Message: "En az bir seçim yamalı yada seçim yapılmış alanların e-posta adres bilgilerini
girmelisiniz"; Default Button: “Tamam”, Commit: “Yes” ]
End If
Show All Records
#Eğer seçili kalan seçim kutusu var ise temizliyoruz.
#temizlik başlıyor
Go to Record/Request/Page
[ First ]
Loop
Clear [ deneme::SecimKutusu ]
[ Select ]
Go to Record/Request/Page
[ Next; Exit after last ]
End Loop
Go to Record/Request/Page
[ First ]
Clear [ deneme::TopluSecimKutusu ]
[ Select ]
#temizlik bitti
Gerçi bu betikte de eposta alanı dolu boş kontrolü yaptıramadım
Yanlış anlamadıysam eğer şöyle bir şey olması gerekiyor;

If [ Get ( FoundCount) ≥ 1 ]

  Loop

    #Burada Send Mail yer alacak
    Go to Record/Request/Page [ Next; Exit after last ]
    
  End Loop

  Show Custom Dialog [ Title: "Başaılı"; Message: Get ( FoundCount ) & " Seçili
  Mesaj gönderildi"; Default Button: “Tamam”, Commit:“Yes” ]

Else
...
aramanızı bu şekilde de denediniz mi?

Set Field [ deneme::Eposta; "=*" ]
Evet unutmuşum. Bir de Loop dan önce

Go to Record/Request/Page
[ First ]

olması gerekiyordu.
Set Field [ deneme::Eposta; "=*" ]
Şimdi = i de koydum sonuç değişmedi. Herhalde öyle olması gerekiyor değil mi?

Bitmiş hali;

Allow User Abort [ On ]
Set Error Capture [ Off ]
If [ deneme::SecimKutusu ≠ "Evet" ]
Show Custom Dialog [ Title: "Uyarı"; Message: "İlk önce seçim yapmalısınız"; Default Button: “Tamam”, Commit: “Yes” ]
Else
Enter Find Mode [ ]
Set Field [ deneme::Eposta; "=*" ]
Set Field [ deneme::SecimKutusu; "Evet" ]
Perform Find [ ]
If [ Get ( FoundCount) ≥ 1 ]
Go to Record/Request/Page
[ First ]
Loop
#Burada Send Mail yer alacak
Send Mail [ Send via SMTP Server; To: deneme::Eposta; Subject: "Sistem Mesajı"; Message: "Bu mesaj deneme için gönderilmiş
olup, içeriği hiç bir edebi değere sahip değildir."; Name: "Auto Mail System"; Email Address: "noreplay@xxx.
com.tr"; Reply-To Address: "info@xxx.com.tr"; SMTP Server: "mail.xxx.com.tr"; Port: 587;
Authentication Type: Plain Password; User Name: "info@xxx.com.tr"; Password: xxx]
[ No dialog ]
Go to Record/Request/Page
[ Next; Exit after last ]
Show Custom Dialog [ Title: "Başaılı"; Message: Get ( FoundCount ) & " Seçili Mesaj gönderildi"; Default Button: “Tamam”,
Commit: “Yes” ]
End Loop
Else
Show Custom Dialog [ Title: "Uyarı"; Message: "En az bir seçim yamalı yada seçim yapılmış alanların e-posta adres bilgilerini
girmelisiniz"; Default Button: “Tamam”, Commit: “Yes” ]
End If
Show All Records
#Eğer seçili kalan seçim kutusu var ise temizliyoruz.
#temizlik başlıyor
Go to Record/Request/Page
[ First ]
Loop
Clear [ deneme::SecimKutusu ]
[ Select ]
Go to Record/Request/Page
[ Next; Exit after last ]
End Loop
End If
Go to Record/Request/Page
[ First ]
Clear [ deneme::TopluSecimKutusu ]
[ Select ]
#temizlik bitti
.
ilk aramanız da çalışıyormuş aslında.

bir de kayıt bulamadığında iki defa uyarı mesajı çıkıyor gibi sanki!...
Örnek dosyayı güncelledim.

Ben fark edemedim ama başka bir şey var; İki seçili mesajdan birisinin eposta adresi boş ve eposta adresi boş olan kayıt aktif ise hata mesajı veriyor, eposta adresi dolu olan kayıt aktif ise hata mesajı vermeden işlemi gerçekleştiriyor ve iki seçim olduğu halde seçili diğer kayıtta eposta adresi olmadığı için 1 mesaj gönderildi diyor. Boş alan kontrolü yapmıyor.
Bir de şunu bir değişken içinde dene;

Let ( [

query = "SELECT DISTINCT ( Eposta ) FROM deneme WHERE SecimKutusu = ? AND Eposta IS NOT NULL";
result = ExecuteSQL ( query ; "" ; "; " ; "Evet" )

];

result

)
Set Variable [ $EPOSTA; Value:Let ( [
query = "SELECT DISTINCT ( Eposta ) FROM deneme WHERE SecimKutusu = ? AND Eposta IS NOT NULL";
result = ExecuteSQL ( query ; "" ; "; " ; "Evet" )
];
result
) ]

Bu şekilde yapıyoruz herhalde?

Sonra değişkeni nereye atıyoruz? :(
Send Mail'de "To:" alanına...
...