후 빈 레코드 표시 : QT 5.0.2 +는 MinGW 4.7 + + ODBC 드라이버 + 윈도우 7 (32) + SQL 서버 32 비트 2012 익스프레스SQL 서버 + ODBC + QT : 내가 사용하고 거래
은 "문제 ":
1) 데이터베이스 테이블의 레코드를 보여주는 창이 하나 있습니다.
2) 응용 프로그램의 어딘가에서 '트랜잭션'을 사용하지 않고 데이터베이스를 업데이트해야합니다.
3) 응용 프로그램의 어딘가에서 '트랜잭션'을 사용하여 데이터베이스를 업데이트해야하는 경우 창 (1)에 표시된 레코드 (*)가 사라지고 빈 레코드가됩니다.
NOTE (*) : 여러 개의 테이블을 보여주는 더 많은 창 (MDI)이 있으면 모든 창과 모든 테이블 레코드가 동시에 공백으로 표시됩니다.
누군가 QSqlTableModel \ QSqlQueryModel을 사용할 때 서버 측에서 어떤 일이 발생하는지 확인하기로 결정했으며 서버에서 (내) 문제가 "발견되었습니다"하지만 문제가 정확히 어디인지는 확실하지 않습니다. 내/QT 측면 :
1) 창이 열리면, QSqlTableModel \ QSqlQueryModel (나는 생각한다) 커서를 만들어 "간부 sp_cursoropen 180150003"서버
2)의 "간부 sp_cursorfetch 180150003"일부 레코드를 검색
3) 창 다시 그리기/새로 고침이 일부 레코드를 검색하는 경우 "exec sp_c ursorfetch 180150003 "
4) 실행 후"간부 sp_cursorclose 거래 "QSqlTableModel \ QSqlQueryModel에 의해 사람 (?)를 사용하는 커서 (I 생각을 닫습니다)"180150003 "
5) 그 후, 거기에 아무 "exec sp_cursorfetch ..."의 항목이 더 많습니다. QTableView show BLANK 레코드가있는 이유입니다.
주 (*) : MDI 서브 윈도우를 사용할 때 완전히 다른 관련없는 테이블을 표시 할 때. "트랜잭션"후에 모든 서브 윈도우/QTableView는 자동으로 빈 레코드를 표시합니다. "SQL Server Profiler"로 확인한 후 "트랜잭션"후에 열리는 서브 윈도우만큼 많은 "exec sp_cursorfetch"가 있습니다.
모든 "커서"는 업데이트 (단일 테이블)와 관련이 있는지에 관계없이 자동으로 닫힌 것처럼 보입니다. 은 "문제는"그 "간부 sp_cursorclose는"누구나 아이디어가 않습니다 \ 그 \ 그 (간부 sp_cursorclose)이 자동으로 발생하는 이유라고 가정
:
이 그것을 ODBC가 (일반적으로) 한정?
ODBC (QT 구현) 제한 사항입니까?
ODBC (MSSQL 구현) 제한 사항입니까?
QSqlxxxxxx 구현/제한입니까?
무엇이 여기에 있습니까?
어떤 제안이나 의견이 크게
답장을 보내 주셔서 감사합니다. 저는 SQL 구문이 올바른지 확신합니다. 그것이 내 질문 뒤에 완전한 이야기를하는 데 도움이된다면이 상황을 보여주는 작은 테스트 어플리케이션의 예가 여기에 있습니다 : http://qt-project.org/forums/viewthread/28390/ 나는이 행동을 기대하지 않았고 지금까지 나는 그것에 대한 설명을 찾을 수 없었다. ODBC 나 SQL Server 또는 QT에 대한 전문 지식을 가진 사람이이 상황을 이해하거나 해결할 수 있기를 바랍니다. – antseq