2013-06-04 2 views
2

후 빈 레코드 표시 : 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 구현/제한입니까?

무엇이 여기에 있습니까?

어떤 제안이나 의견이 크게

답변

0

을 감상 할 수있다 당신이 올바른 서버에 입력하려는 SQL 삽입의 가치와 변수는? 나는 이것이 당신이 요구하는 것과 아무 관련이 없다는 것을 알고 있지만, mysql 서버의 작은 오류로 인해 다른 것들이 발생할 수있다. 행운을 빌어 주시기 바랍니다 :)

+0

답장을 보내 주셔서 감사합니다. 저는 SQL 구문이 올바른지 확신합니다. 그것이 내 질문 뒤에 완전한 이야기를하는 데 도움이된다면이 상황을 보여주는 작은 테스트 어플리케이션의 예가 여기에 있습니다 : http://qt-project.org/forums/viewthread/28390/ 나는이 행동을 기대하지 않았고 지금까지 나는 그것에 대한 설명을 찾을 수 없었다. ODBC 나 SQL Server 또는 QT에 대한 전문 지식을 가진 사람이이 상황을 이해하거나 해결할 수 있기를 바랍니다. – antseq