失敗「大家好,SubmitAll()上QSqlRelationalTableModel
我有代表QSqlRelationalTableModel並鏈接到通過QDataWidgetMapper同型號小部件的tableview的形式。
這裏是表結構:
queryString = QString("CREATE TABLE t100000_Stations ("
"RecordID INTEGER PRIMARY KEY AUTOINCREMENT,"
"StationID TEXT UNIQUE, "
"ProjectID TEXT, "
"LocalName TEXT, "
"StationType TEXT REFERENCES t911000_StationTypes(StationType), " // We have to link station type to a table (maybe parameters)
"Easting DOUBLE NOT NULL, "
"Northing DOUBLE NOT NULL, "
"Latitude DOUBLE, "
"Longitude DOUBLE, "
"LatLonDatum TEXT, "
"CoordinateSystem TEXT, "
"Elevation DOUBLE, "
"ElevationType INTEGER REFERENCES t908000_ParameterTypes(ParameterID), " // Same here
"ElevationDatum TEXT, "
"SurveyMethod TEXT, "
"Surveyor TEXT, "
"SurveyDate DATETIME, "
"LandTenure TEXT, "
"Region TEXT, "
"MiningLease TEXT, "
"Comments TEXT,"
"Source TEXT NOT NULL, "
"SourceDate DATETIME NOT NULL, "
"EntryAuthor TEXT NOT NULL, "
"EntryDate DATETIME NOT NULL)"
);
的形式展示了記錄和完美的關係,包括組合框和表視圖代表們的關係領域。 我的問題是,表值中的任何編輯都不會傳回給數據庫。
經過多次嘗試後,我最終將setEditStrategy更改爲OnManualSubmit。 我加的形式析構submitAll()調用來更新數據庫,但它返回假,給我下面的錯誤消息:
「近」。」:語法錯誤無法執行語句」
我在某些頁面看到它可能與主鍵有關。我在調試模式下執行了以下命令:
QString tempString = tableModelStations->primaryKey().name();
但字符串是空的,這讓我相信問題的確在主鍵。
然後我創建了QSqlRelationalTableModel的子類,以便我可以實現setPrimaryKey()函數並手動執行,但沒有運氣。
任何人都可以揭示一些輕:
爲什麼submitAll()不工作
如何訪問)由submitAll(使用語句
謝謝事先,
問候
愛德華
嗨亞歷克斯,該感謝。這是我在SQL模型先走,現在我已經重寫了大部分,但最大的問題是,我的參考表沒有在當時的主鍵。一旦我改變了這一點,它就成爲一種魅力! – user3094309
沒問題,做出好的應用程序。 – AlexBee