[Linux-programlama] Re: QT, TableView veri girişi?

2018-08-13 Başlik Dr . Mucibirahman İLBUĞA

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 
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

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


[Linux-programlama] Re: QT, TableView veri girişi?

2018-08-13 Başlik Serdar KÖYLÜ
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> 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
> 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