4- PowerApps – PATCH Fonksiyonu ile Veritabanına Kaydetme

Arayüzümüzü hazırladık. Database olarak kullanacağımız yeri uygulamaya ekledik. Onlar burada. Şimdi artık kaydet komutumuzu yazmak için hazırız.

Veritabanına kayıt, veri güncelleme gibi işlemler için Patch komutunu kullanıyoruz. Veri güncelleme işlemleri için Updateif’ te kullanılabilir. Ancak performans olarak farkları var. Şimdilik kısaca Patch’i tavsiye ediyor ve geçiyorum. Veri güncelleme’yi konuştuğumuz başka bir zaman detaylıca konuşuruz.
Yeni Kayıt işlemi için Patch kullanırken Patch komutu bizden 3 parametre bekler. Ancak bu isterleri öneri alanından tam anlamamız açıkçası mümkün değil. Burada ekstra bilgi gerekiyor.

Resim-15
  • İlk parametre olan “Source” alanına, bir adım öncesinde datasource olarak eklediğimiz veritabanımızın adını yazıyoruz. Öneri olarak gelmesine dikkat edin. Gelmiyorsa yanlış giden bir durum var.
  • İkinci parametrede ise, öneride görünmeyen ancak bilmemiz gereken bir durum var. Eğer yeni kayıt oluşturuyosak “Defaults()” komutunun içinde veritabanımızın adını yazmalıyız.
  • Son parametre ise kayıt edilecek öğelerimiz. Süslü parantez içinde her bir sütunu ve içine yazılacak değeri belirtiyoruz.  Sütun isimlerinizin veritabanındaki isimler ile büyük-küçük harf vb. birebir aynı olmasına dikkat edin.

***Eğer veritabanınızı uygulamaya bağladıktan sonra , veritabanında bir değişiklik yaptıysanız mutlaka uygulama içinden veritabanını güncelleyin. (Uygulamadaki sol panelde veritabanı adınızın üzerinde sağ click ve refresh) Yoksa her ne yaptıysanız uygulamanıza yansımaz!

Resim-16

Koddaki komutlara bakacak olursak, Textbox ları veritabanına kaydederken “.Text”, dropdownları kaydederken “.selected.Value” yazıyoruz. Örneğin Date picker kullansaydık, “.SelectedDate” yazmalıydık. Zaten kodu yazarken kullandığınız nesnenin tipine göre, nesne adından sonra nokta koyduğunuzda Powerapps size öneri olarak listeleyecek bu uzantıları. Yeter ki önerileri doğru takip edin.

GUID: Ekstra olarak kodumuzun içinde GUID kodu görüyorsunuz. Bu da bize eşsiz bir ID oluşturuyor. (Örnek: f9168c5e-ceb2-4faa-b6bf-329bf39fa1e4) )Daha sonra uygulama içinden herhangi bir veriyi update etmek istediğimizde, GUID kod eşsiz olduğu için veritabanından tam istediğimiz veriye ulaşmamızı sağlayacak. Eğer SQL gibi veritabanları ile çalışıyorsanız, kendi tablolarında zaten bir ID kolonu oluşturmuş olacağınız için GUID’e hiç gerek yok diye düşünebilirsiniz. Düşünmeyin  Şöyle bir örnekle açıklayalım,  veritabanında ID’nin oluşması için, uygulamadan kaydın mutlaka oraya kaydedilmiş olması gerekir, biliyorsunuz. Ancak bazı durumlarda kaydedilmeden de ID’ye ihtiyacımız oluyor. Örneğin, 30 soruluk gelişmiş bir anket uygulaması yaptınız, kullanıcı kaydet butonuna bastığında henüz şu soruları yanıtlamadınız vb. gibi bir bildirim vermek istiyorsunuz ya da verdiği cevapları gösterip değiştirmek istediğini seçip değiştirebilmesini istiyorsunuz diyelim. Bu durumu tespit edebilmek için soruları önce Cash’e yani PowerApps’teki adı ile Collection’lara kaydetmelisiniz. Bu gibi senaryolarda, tıpkı veritabanında çalışır gibi ID ile çalışmanız gereken durumlar doğar. Ancak henüz veritabanına hiç kaydetmediğiniz için henüz ID oluşmamıştır. İşte bu nedenle kaynak SQL bile olsa GUID’e ihtiyacımız olan zamanlar olur.

Yine veritabanına göre değişmekle beraber, genellikle uygulamalarda kaydet komutlarının içine, uygulamayı o an kullanan kimlik ve zaman gibi birkaç bilgiyi default olarak ekleriz. Eğer bu uygulamada bu bilgileri ekleyecekseniz veri tabanınıza usermail ve date sütunları da eklemelisiniz. (sütun başlıkları örnektir, kendi formatınızda isimler verebilirsiniz) Ben başlarken örneği kısa tutmak adına eklememiştim.

User.Email() :  Bu bilgi o sırada PowerApps’i açan kullanıcının e-mail adresini kaydetmemizi sağlar; masraf, izin, denetim, helpdesk vb. birçok uygulamalarda şarttır.  Talebi oluşturan kişiyi bilmemizi sağlamasının yanı sıra, datasource olarak O365 Users’ı ekledikten sonra, email bilgisi üzerinden bu kişinin Azure Active Directory’de kayıtlı olan departmanı, yöneticisi ve diğer hiyerarşik bilgileri gibi tüm bilgilerine erişmemizi ve uygulama içinde kullanmamızı sağlar. Ayrıca uygulamada giriş yapan kişinin kendinin ya da ekibinin verilerini görmesi için yazacağımız filtre kodlarında da gereklidir.

Today(): Bu formül işlemin yapıldığı tarihi yazar.

Now(): Bu formül işlemin yapıldığı tarihi saati ile beraber yazar.

*** Şimdi uygulamayı çalıştıralım. Uygulamayı çalıştırdığınızda arkaplanda Excel’in kapalı olduğundan emin olunuz. Yoksa tam olarak anlaşılmayan bir hata alabilirsiniz

Resim-17

App’inizi ara ara kaydetmeyi unutmayın 🙂

Bu makale serisinin devamı olan, “Kaydet butonuna bastıktan sonra, yeni kaydın ve diğer tüm kayıtların da liste halinde gözüktüğü Listeleme Ekranı Oluştuma” Makalesine buradan devam edebilirsiniz.

İlerleyen makaleler de, veritabanına formatlayarak kaydetme, birden çok satırı aynı anda toplu kayıt ile veritabanına tek çağrı gönderme, seçilen kaydı silme, düzeltme, kayda birden çok fotoğraf ekleme, barkod okuma, çekilen fotoğraftan metin okuma (OCR teknolojisi), AI Builder ile fatura resmini okuma ve alanları veritabanına yazma, GPS ile konum alma, Timer kullanma,PowerAutomate‘te iş akışı başlatma, Power BI‘ya bağlanma, Power BI Raporunun içine veri girişi App’in eklenmesi gibi  konularla devam edeceğim 🙂
Sevgiler