Merhabalar Serdar Bey,
Uzun zaman oldu. Sizin gibi değerli üstadları yeniden buralarda görmek
çok güzel... :)
Aslında doğrudan VT'ye yazdırmadım. Kullandığım VT PostgreSQL. Ancak
formu açtığımda önce verileri SQLite olarak hafızada işlemeyi düşündüm.
Sizin de belirttiğiniz gibi Qt model isimli bir basit vertabanı yapısı
kullanıyor. Zaten ben de bugün onu uygulamaya başladım. Ancak
QSqlrelationaltablemodel kullanmadım. ItemBased kullanmak daha kolay
gibi. Satır ve sütunları yaratıyorum. Sonra içlerini ister
PostgreSQL'den okuyarak doldurmayı (kayıt düzenleme) dilersem de yeni
kayıt olarak yapmayı planlıyorum.
ComboBox Delegate olarak kullanayım dedim ama harbiden kafa yakıcı.
Aslında örnekleri kolay verilmiş ama nedense ben oturtamadım!
Çalışmalarım devam ediyor. Halledebileceğimi tahmin ediyorum...
İlginize tekrar teşekkürler. Sizleri buralarda görmek çok hoş. Devamını
diliyorum... ;-)
Kolay gelsin,
Mucip:)
13.08.2018 22:22 tarihinde Serdar KÖYLÜ yazdı:
Veritabanı gibi yoğun veri olan yerlerde, pratik çözümler genelde pek
iş görmüyor.
QT mekanizması gereği, bu gibi işler için model tabanlı bir arabirim
kullanıyor, Bunu öğrenmeye çalışmakta fayda var bence. Fakat bunu
öğrenmenin yolu, SQL ve Tablo gibi nispeten karmaşık bir yapı yerine,
daha basit bir şeyler üzerinden gitmek olacaktır. Mesela basitçe bir
listview ile uğraşmak gibi. ItemDelegate vs. gibi mekanizmalara
gerçekten kafa karıştırıcı oluyor.
Sorunuza doğrudan cevap olmadığının farkındayım. Ama bir tavsiyede
bulunmadan geçmek istemiyorum. Kullanıcı arabirimi ile veritabanını
doğrudan bağlamanız, yani veritabanındaki verileri doğrudan
kullanıcıya maniple ettirmeniz pek sağlıklı olmayacaktır. Araya bir
"logic" katmanı eklemenizi tavsiye ederim. Yani, veritabanını okuyup
yazan ve kullanıcıya -bu kullanıcı başka bir kodda olabilir- sunan bir
ara katman. "Three-tier architecture" olarak ararsanız, bolca kaynak
bulabilirsiniz.
Sorunun özeline dönersek, qsqlrelationaltablemodel, bir tablo, yani
çalışma tablosu değil, yani ekranda satır, sütunlar gösteren bir şey
değil. Veri tabanını ifade eden bir model. Sizin bu modelden, inherit
ederek yeni bir model geliştirmeniz mantıklı olur. Bu model, gui
tablosuna, boş bir satır verir. Kullanıcı bu satırı doludurunca, o
satırdaki veriler
|model.insertRecord(-1,qsqlrecord); |
Şeklinde eklenebilir. Bu genelde daha sorunsuz bir çalışma sağlar.
Modele elle yeni bir satır ekleyip, bu doldurulunca setdata() çağrısı
da iş görür fakat, sorun yaşatma ihtimali yüksektir.
Daha somut bir şeyler söylemek için, ilgili kod akışını görmek gerekiyor..||
On Thu, Aug 9, 2018 at 3:18 PM Dr. Mucibirahman İLBUĞA
<mucip.ilb...@gmail.com <mailto:mucip.ilb...@gmail.com>> wrote:
Merhabalar,
SQLite tablosu ile bağlantılı (model) bir tableView var. Satırlar
şeklinde veri girişi yapmak istiyorum ama bir türlü güzel bir şey
bulamadım. Örnekler arasında "QSqlRelationalTableModel" örneği var
ama
tam işin içinden çıkamadım. Satırlar geliyor da yeni satır eklerken
nasıl yapacağız? Yazdığın bilginin anında veritabanında
güncellenmesini
nasıl yapacağız? Pratik bir şeyler yok mudur?...
--
Kolay gelsin,
Mucip:)
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
<mailto:Linux-programlama@liste.linux.org.tr>
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php
_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php