| 3884 | if (grab_data) |
| 3885 | { |
| 3886 | VERBOSE(VB_GENERAL, "Fudging non-unique programid " |
| 3887 | "with multiple parts."); |
| 3888 | |
| 3889 | MSqlQuery sel(MSqlQuery::InitCon()); |
| 3890 | sel.exec("SELECT DISTINCT programid, partnumber " |
| 3891 | "FROM program WHERE partnumber > 0 AND parttotal > 0 AND " |
| 3892 | "programid LIKE '%0000'"); |
| 3893 | |
| 3894 | if (sel.isActive() && sel.size() > 0) |
| 3895 | { |
| 3896 | MSqlQuery repl(MSqlQuery::InitCon()); |
| 3897 | |
| 3898 | while (sel.next()) |
| 3899 | { |
| 3900 | QString orig_programid = sel.value(0).toString(); |
| 3901 | int partnum = sel.value(1).toInt(); |
| 3902 | QString new_programid = orig_programid.left(8); |
| 3903 | QString part; |
| 3904 | |
| 3905 | part.setNum(partnum); |
| 3906 | new_programid.append(part.rightJustify(4, '0')); |
| 3907 | |
| 3908 | repl.prepare("UPDATE program SET programid = :NEWID " |
| 3909 | "WHERE programid = :OLDID AND " |
| 3910 | "partnumber = :PART"); |
| 3911 | repl.bindValue(":NEWID", new_programid); |
| 3912 | repl.bindValue(":OLDID", orig_programid); |
| 3913 | repl.bindValue(":PART", partnum); |
| 3914 | if (!repl.exec()) |
| 3915 | { |
| 3916 | MythContext::DBError(QString("Fudging programid from '%1' " |
| 3917 | " to '%2'") |
| 3918 | .arg(orig_programid) |
| 3919 | .arg(new_programid), repl); |
| 3920 | } |
| 3921 | } |
| 3922 | } |
| 3923 | |
| 3924 | VERBOSE(VB_GENERAL, |
| 3925 | QString(" Found %1").arg(sel.numRowsAffected())); |
| 3926 | } |
| 3927 | |