PDA

View Full Version : ثبت تغییرات در tableView



mr_noori
سه شنبه 07 دی 1389, 08:47 صبح
سلام
بنده تازه کار هستم من tableView ای را به صورت زیر به table ای بنام test در mysqlم متصل کرده ام و اطلاعات را هم نمایش می دهد.
QSqlTableModel*model=newQSqlTableModel;
model->setTable("test");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
ui->tableView->setModel(model);
ui->tableView->show();


مشکل ای که دارم این است که وقتی سلولی را تغییر می دهم و بر روی دکمه ثبت ای که گذاشته ام کلیک می کنم در tableام ذخیره نمی شود. کد ای که بر روی دکمه ام گذاشتم:


QSqlTableModel*model=newQSqlTableModel;
model->setTable("test");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
ui->tableView->setModel(model);
model->submitAll();

برای ذخیره تغییرات نمی دانم چه کار کنم

حامد مصافی
چهارشنبه 08 دی 1389, 08:15 صبح
دوست عزيزم،
يك اشتباه بزرگ در كار شما وجود دارد، model ي كه در ابتداي كار ايجاد كرده‌ايد درست است، توجه داشته باشيد در اثر تغييرات كاربر اين مدل تغيير خواهد كرد، پس بايد ذخيره گردد. اما شما در هنگام ذخيره يك مدل جديد ايجاد مي‌كنيد كه اطلاعات را از ديتابيس دريافت مي‌كند. پس ذخيره بي معني است. اعلان model را در فايل سرآيند قيد كنيد و در شروع برنامه آن را مقدار دهي كنيد و هنگام ذخيره همان model را submit كنيد.

mr_noori
چهارشنبه 08 دی 1389, 13:13 عصر
ممنون ولی خدمتتان عرض کردم تازه کارم
تا آنجا که متوجه شدم قسمت زیر را در فایل header.h قرار دادم
#include <QtSql/QSqlTableModel>
بعد مقدار دهی اولیه هم کردم و هنگام باز شدن محتوای table را در qtableview نمایش می دهد
اما داخل تابع زیر که فرمودید اشتباه می باشد را متوجه نشدم چه کدی باید بنویسم که تغییرات هنگام زدن دکمه در دیتابیس ذخیره گردد

void MainWindow::on_pushButton_clicked()
{

}

حامد مصافی
چهارشنبه 08 دی 1389, 13:44 عصر
در فايل header


QSqlTableModel*model;

در سازنده كلاس


model=newQSqlTableModel;
model->setTable("test");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
ui->tableView->setModel(model);
ui->tableView->show();


در رويداد كليك

void MainWindow::on_pushButton_clicked()
{
model->submitAll();
}

mr_noori
شنبه 11 دی 1389, 08:23 صبح
ممنون و عالی بود