Bonjour à tous,
Je suis tout nouveau sur le site... Et je vais donc commencer par me présenter:
Je m'appelle Guillaume.
J'ai 27 ans.
Je suis Lyonnais
je bosse dans l'informatique (consultant ERP)
Je programme un peu pour me divertir.

Voilà le contexte de mon problème:
Version de Qt 4.8.3.
J'ai un base de données SQL Server:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE [dbo].[ACTITRAC](  
    [ACKTSOC] [char](3) NULL,  
    [ACKTTYPE] [char](1) NULL,  
    [ACKTCODART] [char](18) NULL,  
    [ACKTCOMART] [char](6) NULL,  
    [ACKJDATE] [char](8) NULL,  
    [ACKTHEURE] [char](8) NULL,  
    [ACCTUTILIS] [char](35) NULL,  
    [ACCTCOMMEN] [char](200) NULL,  
    [ACCTETS] [char](2) NULL  
)
Ce code:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
 
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setDatabaseName("Driver={SQL Server Native Client 10.0};Server=XSOFTWAR-0B291A;Database=IES;Port=1433;WSID=.");
 
    QMessageBox msg;
    if (db.open())
    {
        msg.setText("Connection successfull");
 
    }
    else
    {
        msg.setText(db.lastError().text());
    }
 
    QSqlTableModel *model = new QSqlTableModel(this);
    model->setTable("ACTITRAC");
    model->setEditStrategy(QSqlTableModel::OnFieldChange);
    model->select();
 
    QTableView *view = new QTableView();
    view->setModel(model);
    view->show();
 
}
Génère cette erreur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
QODBCResult::exec: Unable to execute statement: "[Microsoft][SQL Server Native Client 10.0][SQL Server]The data types char and ntext are incompatible in the equal to operator. [Microsoft][SQL Server Native Client 10.0][SQL Server]Statement(s) could not be prepared."
Quand je trace la requête dans le profiler SQL Server:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
exec sp_executesql N'UPDATE ACTITRAC SET "ACCTCOMMEN"=@P1 WHERE "ACKTSOC" = @P2 AND "ACKTTYPE" = @P3 AND "ACKTCODART" = @P4 AND "ACKTCOMART" = @P5 AND "ACKJDATE" = @P6 AND "ACKTHEURE" = @P7 AND "ACCTUTILIS" = @P8 AND "ACCTCOMMEN" = @P9 AND "ACCTETS" = @P10',N'@P1 ntext,@P2 nvarchar(6),@P3 nvarchar(2),@P4 nvarchar(36),@P5 nvarchar(12),@P6 nvarchar(16),@P7 nvarchar(16),@P8 nvarchar(70),@P9 ntext,@P10 nvarchar(4)',N'Régénération de facture client                                                                                                                                                                          ',N'100',N'2',N'010775            ',N'      ',N'20120724',N'14314130',N'Frédérique BONNIN FRE              ',N'Régénération de facture client                                                                                                                                                                          ',N'  '
Ma question est: pourquoi diable me transforme t'il un varchar en ntext? J'aurai tendance à accuser la longueur du champs 200... mais comme je me connecte à une base d'une application tierce, je peux malheureusement pas changer le type....

Une idée?