2009-06-24 2 views
8

इस तरह क्यूटी 4.4 में एक मेज मॉडल स्थापित करने के बाद:समस्या - कोई स्वत: अद्यतन

QSqlTableModel *sqlmodel = new QSqlTableModel(); 

    sqlmodel->setTable("Names"); 
    sqlmodel->setEditStrategy(QSqlTableModel::OnFieldChange); 
    sqlmodel->select(); 
    sqlmodel->removeColumn(0); 

    tableView->setModel(sqlmodel); 
    tableView->show(); 

सामग्री ठीक से प्रदर्शित किया जाता है, लेकिन संपादन संभव नहीं है, त्रुटि:

 QSqlQuery::value: not positioned on a valid record 
+0

क्या आप क्वेरी के लिए कोड पेस्ट कर सकते हैं जो आप भी चल रहे हैं? – nmuntz

+1

कोई प्रश्न नहीं है। QSqlQueryModel के लिए क्वेरी की आवश्यकता है। इसके बजाए, QSqlTableModel बस एक टेबल दिखाता है (इसे संपादित करने की अनुमति भी देता है)। "QSqlTableModel एक एकल तालिका दिखाने के लिए एक संपादन योग्य मॉडल प्रदान करता है ... परिणामस्वरूप दृश्य संपादन योग्य है क्योंकि मॉडल संपादन योग्य है।" जोहान थेलिन द्वारा "क्यूटी विकास की नींव" से – MadH

उत्तर

12

मैं पुष्टि कर सकता हूं कि बग ठीक है जैसा कि आप इसकी रिपोर्ट करते हैं, क्यूटी 4.5.1 में, और दस्तावेज, उदा। here, अभी भी एक गलत उदाहरण देता है (यानी removeColumn कॉल सहित)।

एक काम के आसपास के रूप में मैंने beforeUpdate सिग्नल से जुड़े स्लॉट को लिखने का प्रयास किया है, यह जांचने के विचार के साथ कि QBqlRecord के साथ क्या गलत है, जो डीबी में अपडेट होने वाला है और संभवतः इसे ठीक कर रहा है, लेकिन मैं ' यह काम करने के लिए नहीं मिलता है - उस रिकॉर्ड पैरामीटर के तरीकों के लिए कोई भी कॉल मेरे खिलौने-ऐप को BusError के साथ दुर्घटनाग्रस्त कर रहा है।

तो मैंने उस विचार को छोड़ दिया है और इसे करने का कोई सही तरीका नहीं है (दृश्यता को मॉडल द्वारा नहीं, सही है? -): removeColumn और lieu में खोना इसके बजाय tableView->setColumnHidden(0, true) पर कॉल करें। इस तरह आईडी छिपी हुई हैं और सबकुछ काम करता है।

तो मुझे लगता है कि हम एक दस्तावेज त्रुटि की पुष्टि कर सकते हैं और क्यूटी ट्रैकर में इसके बारे में कोई समस्या खोल सकते हैं, इसलिए इसे दस्तावेज़ों के अगले दौर में ठीक किया जा सकता है, है ना?

+0

हाँ, धन्यवाद! :-) – MadH

+3

मेरी सभी प्रतिष्ठा को यह पुष्टि करने के लिए बिताया कि :-)) – MadH

0

ऐसा लगता है कि इस का कारण लाइन

sqlmodel->removeColumn(0); 

में था इसे बाहर टिप्पणी के बाद, सब कुछ पूरी करता काम tly। इस प्रकार, मैं क्योंकि जोहान "क्यूटी विकास की नींव" से उदाहरण में, एक और तरीका तालिका ;-)

संपादित मैंने कहा गया है "ऐसा लगता है" में पहचान पत्र दिखाने के लिए नहीं मिल रहा होगा Thelin ने पहले कॉलम भी हटा दिया। तो, यह अच्छा होगा अगर कोई और यह भी कोशिश करता है और परिणामों की रिपोर्ट करता है।

0

मैं पीईक्यूटी में क्यूटी 4.6.1 का उपयोग करता हूं और समस्या अभी भी यहां है। "हटाएं कॉलम (0)" को हल करने से समस्या हल हो जाती है।