我使用Qt 5.7,C ++,SQLite数据库。我有Sub Export()
rowsLength =document.all.yourHTMLTableId.rows.length
cellLength= (document.all.yourHTMLTableId.Cells.length/rowsLength) 'Because i dont know how to get no.of cells in a row,so used a simple division
Set crr = CreateObject("WScript.Shell")
fileNm= "Export"
dir= crr.CurrentDirectory&"\"&fileNm&".xlsx"
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Add()
Set objWorksheet= objWorkbook.Worksheets(1)
i=0
j=0
do until i=rowsLength
do until j=cellLength
objWorksheet.cells(i+1,j+1).value = document.all.yourHTMLTableId.rows(i).cells(j).innerHTML
msgbox document.all.yourHTMLTableId.rows(i).cells(j).innerHTML
j= j+1
Loop
j=0
i=i+1
Loop
objWorkbook.SaveAs(dir)
objWorkbook.close
objExcel.Quit
Set objExcel = Nothing
后裔班。我通过QSqlTableModel
,setRecord()
调用(submitAll()
模式)更新行。我们在一行中将QSqlTableModel::OnManualSubmit
设置为value_1
。它在数据库中正确保存,相应的field_1
也会自动刷新。当我再次在任意行中将QTableView
设置为value_2
时,修改会显示在视图中,但它不会保存在数据库中。
见qsqltablemodel.cpp source for Qt 5.7.0
field_1
它包含以下片段:
bool QSqlTableModelPrivate::exec(const QString &stmt, bool prepStatement,
const QSqlRecord &rec, const QSqlRecord &whereValues)
在我的情况下,对于第二次和进一步的更新调用,以下条件为真:if (editQuery.lastQuery() != stmt) {
if (!editQuery.prepare(stmt)) {
error = editQuery.lastError();
return false;
}
}
。
stmt可以包含类似
的值 editQuery.lastQuery() == stmt
因此,UPDATE documents SET "mark"=? WHERE "documents"."id" = ? AND "documents"."checked" = ? AND "documents"."state" = ?
未被调用。这就是分配后的原因
bool QSQLiteResult::prepare(const QString &query)
这种情况属实:int paramCount = sqlite3_bind_parameter_count(d->stmt);
(see qsql_sqlite.cpp:429,paramCount == 0
是指向d->stmt
的指针,它是NULL。
导致最终错误"参数计数不匹配"。这是一个错误,什么是解决方法?请不要建议原始SQL,我不想经常重置模型。