Results 1 to 20 of 57

Thread: Record update windowd entered data saving

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Jan 2006
    Location
    Lincoln, NE USA
    Posts
    177
    Thanks
    3
    Thanked 7 Times in 6 Posts
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows

    Default Re: Record update windowd entered data saving

    I do something like what is shown below, but if you have an updatable view (using multiple tables) on your database then something similar to this snippet should work.
    Qt Code:
    1. void homestead::UpdateProperty() {
    2. QDateTime dtNow = QDateTime::currentDateTime();
    3. QString propQryPrep = "UPDATE property_";
    4. propQryPrep.append(this->dbYear);
    5. propQryPrep.append(" SET \
    6. county = :county, \
    7. cntyname = :cntyname, \
    8. txdistrict = :txdistrict, \
    9. legal = :legal, \
    10. parcel_id = :parcel_id, \
    11. pvalue = :pvalue, \
    12. entry_id = :entry_id, \
    13. entry_date = :entry_date, \
    14. notes = :notes \
    15. WHERE proprty_id = :proprty_id");
    16.  
    17. propQry.prepare(propQryPrep);
    18. propQry.bindValue(":county",ui.leCountyNumber->text().toInt());
    19. propQry.bindValue(":cntyname",ui.cboCountyName->currentText());
    20. propQry.bindValue(":txdistrict",ui.leTaxDistrict->text());
    21. propQry.bindValue(":legal",ui.txtLegal->toPlainText());
    22. propQry.bindValue(":parcel_id",ui.leParcelID->text());
    23. propQry.bindValue(":pvalue",ui.leHomeValue->text().toInt());
    24. propQry.bindValue(":entry_id",homestead::RevID);
    25. propQry.bindValue(":entry_date",dtNow);
    26. propQry.bindValue(":notes",ui.teNotes->toPlainText());
    27. propQry.bindValue(":proprty_id",ui.leProprtyID->text().toInt());
    28. if (propQry.exec()) {
    29. ui.leStatus->setText("Property record: "+ui.leProprtyID->text()+" updated!");
    30. } else {
    31. ui.leStatus->setText("Cannot updated property record: "+ui.leProprtyID->text());
    32. }
    33. }
    To copy to clipboard, switch view to plain text mode 
    BTW, this code works on Oracle and on PostgreSQL before 8.1.0. On PostgreSQL after 8.0 they've added 3 millisecond positions to the QDateTime return.

  2. #2
    Join Date
    Jan 2006
    Location
    Iasi, Romania
    Posts
    10
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11 Windows

    Default Re: Record update windowd entered data saving

    I have found a solution to my problem. I have appended a QSqlField to the record retrieved with model->record()
    Qt Code:
    1. QSqlRecord rec = model->record();
    2. QSqlField cityField("city", QVariant::Int);
    3. rec.append(cityField);
    4. rec.setValue("name", "Test Customer");
    5. rec.setValue("city", 1); // or whatever value exists in the related table 'cities'
    6.  
    7. model->insertRecord(-1, rec);
    8. model->submit();
    To copy to clipboard, switch view to plain text mode 
    'city' is the name of a field in the 'customers' database table but which is not part of the query that filled the model.
    'city_name' is the name of a field in the related table 'cities' and is contained by rec.
    I run this code and I got the same "error" - record inserted in the table 'customers' but the value of 'city' field is set to the default == 0. Then I have installed Qt 4.1.0 and magically it worked - record inserted with proper value for field 'city' == 1 (in this case).
    So, as wysota said, it is probably a bug in Qt 4.0.0.
    Thanks for all suggestions.

  3. #3
    Join Date
    Jan 2006
    Location
    Ljubljana
    Posts
    687
    Thanks
    111
    Thanked 4 Times in 4 Posts
    Qt products
    Qt5 Qt/Embedded
    Platforms
    MacOS X Unix/X11 Windows Android

    Default Re: Record update windowd entered data saving

    Whatever I do, I cannot get data into database!!!! I am going mad!!!
    Qt 5.3 Opensource & Creator 3.1.2

  4. #4
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,371
    Thanks
    3
    Thanked 5,019 Times in 4,795 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Record update windowd entered data saving

    Quote Originally Posted by MarkoSan
    Whatever I do, I cannot get data into database!!!! I am going mad!!!
    Please provide a minimal compilable example which reproduces the problem. Your code is too complex (and incomplete) for us to test on our own machines.

  5. #5
    Join Date
    Jan 2006
    Location
    Ljubljana
    Posts
    687
    Thanks
    111
    Thanked 4 Times in 4 Posts
    Qt products
    Qt5 Qt/Embedded
    Platforms
    MacOS X Unix/X11 Windows Android

    Default Re: Record update windowd entered data saving

    Quote Originally Posted by wysota
    Please provide a minimal compilable example which reproduces the problem. Your code is too complex (and incomplete) for us to test on our own machines.
    I tried, but zip file is too big and i do not know how to distribure sql databse.
    Qt 5.3 Opensource & Creator 3.1.2

  6. #6
    Join Date
    Jan 2006
    Location
    Ljubljana
    Posts
    687
    Thanks
    111
    Thanked 4 Times in 4 Posts
    Qt products
    Qt5 Qt/Embedded
    Platforms
    MacOS X Unix/X11 Windows Android

    Default Re: Record update windowd entered data saving

    Is the situation maybe connected with http://www.trolltech.com/developer/t...entry&id=86645, what do you think?
    Qt 5.3 Opensource & Creator 3.1.2

  7. #7
    Join Date
    Jan 2006
    Location
    Warsaw, Poland
    Posts
    33,371
    Thanks
    3
    Thanked 5,019 Times in 4,795 Posts
    Qt products
    Qt3 Qt4 Qt5 Qt/Embedded
    Platforms
    Unix/X11 Windows Android Maemo/MeeGo
    Wiki edits
    10

    Default Re: Record update windowd entered data saving

    Quote Originally Posted by MarkoSan
    I tried, but zip file is too big and i do not know how to distribure sql databse.
    So make it smaller. The example is to be minimal. We don't need your database, just a table schema and some sample data.

  8. #8
    Join Date
    Jan 2006
    Location
    Ljubljana
    Posts
    687
    Thanks
    111
    Thanked 4 Times in 4 Posts
    Qt products
    Qt5 Qt/Embedded
    Platforms
    MacOS X Unix/X11 Windows Android

    Default Re: Record update windowd entered data saving

    Here is minimal project file and sources (VC++ 6.0 Service Pack 6, Qt 4.0.1). After unziping in .sql file there are table declarations and sample data.
    Last edited by MarkoSan; 17th June 2006 at 03:11.
    Qt 5.3 Opensource & Creator 3.1.2

  9. #9
    Join Date
    Jan 2006
    Location
    Iasi, Romania
    Posts
    10
    Qt products
    Qt3 Qt4
    Platforms
    Unix/X11 Windows

    Default Re: Record update windowd entered data saving

    I have managed to make it work but I use Qt 4.1.0 on WinXp and MySQL 4.1.11. Similar code didn't work on Qt 4.0.0, but I don't know about 4.0.1. My modifications are commented with 'modified by fane' (hope I didn't miss anyone), and of course your MySQL root password has to be changed.
    I have appended two QSqlFields to the record retrieved with model->record() named "ULICA" and "POSTA_STEVILKA", set their value with QSqlRecord::setValue(). I have modified the edit strategy to be OnRowChange and removed the setValue() call for the "SIFRA" field which is autoincremented by MySQL.
    I guess you have to move to Qt 4.1.0 according to this
    Attached Files Attached Files
    Last edited by fane; 18th January 2006 at 19:02.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.