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:
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:
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
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:
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?
Partager