quickbox icon indicating copy to clipboard operation
quickbox copied to clipboard

QE3 - problem s vycitanim cipu

Open arnost00 opened this issue 1 month ago • 4 comments

Tyka se to QE 3.4.16 i aktualniho build z commitu 4ca7bbc5377a8b5bbd9d737f2b1f0ed0f492ce12

Pri vycteni noveho cipu se objevi:

Image

Po zmacknuti tlacika Refresh/Obnovit se jiz zobrazi spravne:

Image

A vypise se pri spatnem zobrazeni tento log:

2025-11-14T22:40:00[quickbox/libqf/libqfcore/src/sql/query.cpp:50]|E| SELECT cards.id AS cards__id, cards.siId AS cards__siId, cards.runId AS cards__runId, cards.checkTime AS cards__checkTime, cards.startTime AS cards__startTime, cards.finishTime AS cards__finishTime, cards.runIdAssignError AS cards__runIdAssignError, runs.id AS runs__id, runs.startTimeMs AS runs__startTimeMs, runs.timeMs AS runs__timeMs, runs.finishTimeMs AS runs__finishTimeMs, runs.misPunch AS runs__misPunch, runs.disqualified AS runs__disqualified, runs.badCheck AS runs__badCheck, runs.notStart AS runs__notStart, runs.notFinish AS runs__notFinish, runs.disqualifiedByOrganizer AS runs__disqualifiedByOrganizer, runs.overTime AS runs__overTime, runs.notCompeting AS runs__notCompeting, runs.cardLent AS runs__cardLent, runs.cardReturned AS runs__cardReturned, competitors.registration AS competitors__registration, competitors.startNumber AS competitors__startNumber, classes.name AS classes__name, COALESCE(lastName, '') || ' ' || COALESCE(firstName, '') AS competitorName, lentcards.siid IS NOT NULL AS cardLentTable, '' AS runFlags FROM cards LEFT JOIN lentcards ON lentcards.siid=cards.siId AND (NOT lentcards.ignored) LEFT JOIN runs ON runs.id=cards.runId LEFT JOIN competitors ON competitors.id=runs.competitorId LEFT JOIN classes ON classes.id=competitors.classId WHERE (cards.stageId=1) AND (id=2) ORDER BY cards.id DESC 
 ambiguous column name: id Unable to execute statement
2025-11-14T22:40:00[quickbox/libqf/libqfgui/src/model/sqltablemodel.cpp:525]|E| "ok == true" - SQL Error: ambiguous column name: id Unable to execute statement
SELECT cards.id AS cards__id, cards.siId AS cards__siId, cards.runId AS cards__runId, cards.checkTime AS cards__checkTime, cards.startTime AS cards__startTime, cards.finishTime AS cards__finishTime, cards.runIdAssignError AS cards__runIdAssignError, runs.id AS runs__id, runs.startTimeMs AS runs__startTimeMs, runs.timeMs AS runs__timeMs, runs.finishTimeMs AS runs__finishTimeMs, runs.misPunch AS runs__misPunch, runs.disqualified AS runs__disqualified, runs.badCheck AS runs__badCheck, runs.notStart AS runs__notStart, runs.notFinish AS runs__notFinish, runs.disqualifiedByOrganizer AS runs__disqualifiedByOrganizer, runs.overTime AS runs__overTime, runs.notCompeting AS runs__notCompeting, runs.cardLent AS runs__cardLent, runs.cardReturned AS runs__cardReturned, competitors.registration AS competitors__registration, competitors.startNumber AS competitors__startNumber, classes.name AS classes__name, COALESCE(lastName, '') || ' ' || COALESCE(firstName, '') AS competitorName, lentcards.siid IS NOT NULL AS cardLentTable, '' AS runFlags FROM cards LEFT JOIN lentcards ON lentcards.siid=cards.siId AND (NOT lentcards.ignored) LEFT JOIN runs ON runs.id=cards.runId LEFT JOIN competitors ON competitors.id=runs.competitorId LEFT JOIN classes ON classes.id=competitors.classId WHERE (cards.stageId=1) AND (id=2) ORDER BY cards.id DESC virtual int qf::gui::model::SqlTableModel::reloadRow(int)
2025-11-14T22:40:00[quickbox/quickevent/app/quickevent/plugins/CardReader/src/cardreaderwidget.cpp:713]|W| Inserted/Copied row id: 2 reloaded in 0 instances.

Pri pokusu zjistit co je problem se zda ze je to kus dotazu obsahujici AND (id=2) ORDER, pri jeho nahrade za AND (cards.id=2) ORDER BY se dotaz v qsqlmon choval dobre.

Akorat nevim jak tuto upravu naimplementovat. Protoze id je ve tride SqlTableModel zadratovano napevno: https://github.com/Quick-Box/quickevent/blob/4ca7bbc5377a8b5bbd9d737f2b1f0ed0f492ce12/libqf/libqfgui/src/model/sqltablemodel.cpp#L462 A to konkretne v headeru predka : https://github.com/Quick-Box/quickevent/blob/4ca7bbc5377a8b5bbd9d737f2b1f0ed0f492ce12/libqf/libqfgui/src/model/tablemodel.h#L24

arnost00 avatar Nov 14 '25 23:11 arnost00

Vetsina SQL query pochazi ze tridy CardReaderWidget definovano zde: https://github.com/Quick-Box/quickevent/blob/4ca7bbc5377a8b5bbd9d737f2b1f0ed0f492ce12/quickevent/app/quickevent/plugins/CardReader/src/cardreaderwidget.cpp#L465-L477

Ale tu cast co dela problemy si tam prida SqlTableModel v metode reloadRowQuery

arnost00 avatar Nov 14 '25 23:11 arnost00

Jeste jsem dohledal ze k nejspis k posledni zmene v teto casti kodu doslo v commitu 1e36eb8205312eba6ee935d5c9c7a4b35d4aeee5

arnost00 avatar Nov 14 '25 23:11 arnost00

Tak update - tento problem se netyka jen vycitani cipu - napr. i pridani nove stafety 2025-11-15T01:02:51.132 Warning SQL error: ambiguous column name: id Unable to execute statement quickbox/libqf/libqfgui/src/tableview.cpp 1150

Kde je v dotazu

Query: SELECT relays.id AS relays__id, relays.number AS relays__number, relays.classId AS relays__classId, relays.club AS relays__club, relays.name AS relays__name, relays.note AS relays__note, relays.importId AS relays__importId, relays.isRunning AS relays__isRunning, classes.name AS classes__name FROM relays LEFT JOIN classes ON classes.id=relays.classId WHERE (id=1) ORDER BY classes.name, relays.name

zase pridana cast WHERE (id=1) ORDER, a kde by nejspise melo byt relays.id misto id.

Projevuje se to tak, ze kdyz pridam nekolik stafet, tak dokud nedam Obnovit/Refresh tak se mi do seznamu prihlasenych stafet nepridavaji.

arnost00 avatar Nov 15 '25 00:11 arnost00

Týká se to i 3.4.13

Osin01 avatar Nov 15 '25 06:11 Osin01