FilemakerTurk, Beyaz.net ve AYS Bilişim tarafından desteklenmektedir.
Filemakerturk.com a Hoş geldiniz. FilemakerTÜRK bir yardımlaşma portalidir. Sorularınızı yazarken teknik anlamda güçlük çekiyorsanız. Telefonda bize anlatın sizin yerinize siteye biz yazalım 0532 231 07 27 Mehmet KAYA.
Filemaker Lisans İhtiyacınız için FilemakerTürk Yönetimi ile iletişime geçin
 
Alakalı Siteler:

AYS Bilişim


Cabitaş



Göksel GÖKÇE


Briandunning
 

Birden fazla kayıtı farklı bir tabloya yeni kayıt olarak aktarma

+1 oy
134 kez görüntülendi
Herkese selam ederim;

Tablo1 de 5 alanlık onlarca kayıt var. Bu kayıtları Tablo2 yeni kayıt olarak oluşturmak istiyorum.  

Aşağıda betiğini hazırladım, deniyorum ama sadece bir kayıt oluşturuyor. Nerede hata yapıyorum acaba. Yardımlarınız bekler hayırlı günler dilerim

Saygılarımla.

 

Go to Layout [ “TABLO1” (TABLO1) ]
Go to Record/Request/Page
[ First ]
Loop
#Setler başlıyor
Set Variable [ $ALAN_1; Value:TABLO1::AlanBir ]
Set Variable [ $ALAN_2; Value:TABLO1::AlanIki ]
Set Variable [ $ALAN_3; Value:TABLO1::AlanUc ]
Set Variable [ $ALAN_4; Value:TABLO1::AlanDort ]
Set Variable [ $ALAN_5; Value:TABLO1::AlanBes ]
#Setler bitti
#Kayıt oluşturacağımız tabloya gidiyoruz
Go to Layout [ “TABLO2” (TABLO2) ]
#Kayıt oluşturma başlıyor
New Record/Request
Set Field [ TABLO2::AlanBir; $ALAN_1 ]
Set Field [ TABLO2::AlanIki; $ALAN_2 ]
Set Field [ TABLO2::AlanUc; $ALAN_3 ]
Set Field [ TABLO2::AlanDort; $ALAN_4 ]
Set Field [ TABLO2::AlanBes; $ALAN_5 ]
#Kayıt oluşturma bitti
Go to Layout [ original layout ]
Go to Record/Request/Page
[ Next; Exit after last ]
End Loop
27, Temmuz, 27 Filemaker Advanced kategorisinde demokrasi (12,140 puan) tarafından soruldu

1 cevap

+1 oy
 
En İyi Cevap

Scripte bir gariplik göremedim, çalışması gerekiyor bence de. Script'i debugger* ile çalıştırıp hatayı/beklenmeyen davranışı daha rahat tespit edebilirsiniz.

 

Bu arada import records ile bu işlem çok daha az script satırı ve daha kısa sürede yaptırılabilir, özellikle bu yöntemi tercih etme sebebiniz yoksa düşünebilirsiniz.

 

* Script debugger sadece advanced sürümlerinde mevcut.

 

Güncelleme: Örnek Dosya

Yöntem1'in önemli noktası.

 

Yöntem2'nin önemli noktası

27, Temmuz, 27 F. Osman Cabi (86,000 puan) tarafından cevaplandı
28, Temmuz, 28 F. Osman Cabi tarafından düzenlendi
Osman hocam teşekkür ederim. Ben hatayı hep başka yerlerde aradım.  

Aslında hatam farklı bir tablonun Layout unda olduğum için
...
Go to Layout [ original layout ] yerine Go to Layout [ “TABLO1” (TABLO1) ]
...

yazmam gerekiyormuş. Hatamı görmeme yardımcı olduğunuz için teşekkür ederim. Debuger e gerek kalmadı.

Verileri excel den TABLO1 e import ediyorum. Hem kontrol amaçlı hem de koşullara göre ek değerler oluşturmam gerekiyor. Bu değerler oluşturulduktan ve kontroller tamamlandıktan sonra esas tablo olan TABLO2 ye aktarıyorum.

Gösterdiğiniz ilgi ve desteğiniz için teşekkür ederim.

Saygılarımla.
Çözdüğünüze sevindim.

ben de aktarım sırasında "geçici" tabloda kullanıcıya kontrolleri (gerekliyse düzenlemeleri) yaptırır sonrasında kullanıcı "Onay" verdiğinde verileri diğer tabloyaya taşıyarak aktarım işlemini tamamlatırım. Ancak set field yerine tablo 2'ye datalar tablo1'den import records yöntemi ile aktarılabilir. Özellikle kayıt sayısı fazlaysa çok daha hızlı çalışacaktır.
Osman Hocam, fmp dosyası sunucuda ve bu işlem webdirect den yapılıyor. O yüzden  işlemi bu şekilde yapmak zorunda kaldım.

Yukarıda yaptığım aktarma işleminden sonra bir işlem daha yapılıyor. Şimdi o işlemin betiği ile uğraşıyorum. Şu saate kadar yaptığım çalışmalarda çözemedim ama daha gün bitmedi. :)

Gün bitimine kadar çözemezsem yine sizlerin bilgi ve tecrübelerinize müracaat edeceğim.

Saygılarımla.
Osman Hocam çözemeyeceğim belli idi ama yinede uğraşmak istedim.
Hocam yukarıdaki örnekten gider isek...

Tablo1 den ilk üç alanı, bu sefer TABLO3 de yeni kayıt oluşturacağız. Buraya kadar aynı. Fakat TABLO3 de o kayıt var ise ( olma ihtimali var ve kesinlikle mükerrer kayıt olmamalı ) o kayıtı atlamalı ve döngüye devam etmeli. Yani sadece olmayan kayıtları oluşturmalı. Takıldım kaldım. :(

Şimdiden teşekkür eder hayırlı günler dilerim.

Saygılarımla.
Bu 3 alandan birisini anahtar kabul edebiliyorsak (alan 1 mesela), bu alana göre eşleşerek kayıt al yada yine anahtar alana göre bir ilişki kurarak "ilişki üzerinden kayıt aç" prosedürünü scriptleştirebiliriz.

Yoruma dosya eklenemiyor, cevabı güncelleyerek bir örnek ekliyorum.
Osman hocam ilginiz için teşekkür ederim.

Import yapamıyorum çünkü WebDirect en import işlemi olmuyormuş.


Hocam; Yöntem 2 resminde gösterdiğiniz AlanA bende benzersiz ( Unique ) alan olduğu için TABLO1 den TABLO3 e yeni kayıt oluştururken TABLO1 deki veri TABLO3 de zaten var ise döngüyü durduruyor ( AlanA" is defined to contain unique values only. You must enter a unique value ).

İstediğim TABLO1 deki veriler TABLO3 de var ise o verileri atlasın sonraki veriler için yeni kayıtlar oluştursun.

Şimdiden teşekkür ederim.

Saygılarımla
2. Yöntemde var olan kayıtları eliyor (omit ile), yani sadece tablo 3'de olmayan kayıtlar filtreleniyor. Sonrasında "Go to layout" kullanmadan relation üzerinden kayıtları açıyor.
Hocam tam olarak nasıl bir değişiklik yapmam gerektiğini gösterebilir misiniz?

Go to Layout [ “TABLO1” (TABLO1) ]
Go to Record/Request/Page
[ First ]
Loop
#Setler başlıyor
Set Variable [ $ALAN_1; Value:TABLO1::AlanBir ]
Set Variable [ $ALAN_2; Value:TABLO1::AlanIki ]
Set Variable [ $ALAN_3; Value:TABLO1::AlanUc ]
#Setler bitti
#Kayıt oluşturacağımız tabloya gidiyoruz
Go to Layout [ “TABLO2” (TABLO2) ]
#Kayıt oluşturma başlıyor
New Record/Request
Set Field [ TABLO3::AlanBir; $ALAN_1 ]
Set Field [ TABLO3::AlanIki; $ALAN_2 ]
Set Field [ TABLO3::AlanUc; $ALAN_3 ]

#Kayıt oluşturma bitti
Go to Layout [ “TABLO1” (TABLO1) ]
Go to Record/Request/Page
[ Next; Exit after last ]
End Loop
Örnek bir dosya da koymuştum, dosyayı indirip inceleyebilirsiniz. Kısaca script şöyle olabilir;

Go to Record/Request/Page[ First ]
Loop
   Set Field [ TABLO3::AlanIki; TABLO1::Alan2 ]
   Set Field [ TABLO3::AlanUc; TABLO1::Alan3 ]
   Go to Record/Request/Page [ Next; Exit after last ]
End Loop

Script'e Alan1'i set etmiyoruz, Alan1 değeri ilişki üzerinden otomatik alıyor çünkü.
Osman hocam dün gece internet gitti. İşler kaldı. :(

Az önce işlemi denedim. Benim çalıştığım veri tabanında Allow u TABLO3 seçtim denedim olmadı. TABLO1 de seçtim denedim yine olmadı. Her iki tabloda da seçtiğimde sonuca ulaştım. Sebebi nedir bilmiyorum ama nihayetinde sonuca ulaştım sayenizde.

Çok çok teşekkür ederim yardım ve destekleriniz için. Allah aklınıza ve yüreğinize sağlık versin.

Saygılarımla.
...