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

Cevap