Bonjour,

J'ai déclaré une table telle que
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
  //******************************************************** table Segmentation
  // les noms de champ sont visibles pour l'utilisateur
  req:= 'CREATE TABLE SEGMENTATION (' +
  ' SEGMENTATION_NO AUTOINCREMENT, ' +
  ' SEGMENTATION_OPERATION_NO INTEGER NOT NULL, ' +
  ' CONSTRAINT FK_Segmentation2Operation FOREIGN KEY (SEGMENTATION_OPERATION_NO) '+
  ' REFERENCES OPERATION(OPERATION_NO) ON UPDATE CASCADE ON DELETE CASCADE, '+
  ' SEGMENTATION_SEGMENTS_NUMBER INTEGER NOT NULL, ' +
  ' SEGMENTATION_DEGREE BYTE DEFAULT 1, ' +
  ' SEGMENTATION_SPEED BYTE DEFAULT 1, ' +
  ' SEGMENTATION_START BYTE DEFAULT 1, ' +
  ' SEGMENTATION_STEPRGB SINGLE NOT NULL, '+
  ' SEGMENTATION_CUSTUMED_OK VARCHAR(2) DEFAULT -1, '+
  ' SEGMENTATION_USED VARCHAR(2) DEFAULT -1 '+
  ')';
  ADOCommand1.CommandText := req;
  ADOCommand1.Execute;
  // ==================== Clé primaire
  req := 'ALTER TABLE SEGMENTATION ADD CONSTRAINT PK_SEGMENTATION PRIMARY KEY (SEGMENTATION_NO);';
  ADOCommand1.CommandText := req;
  ADOCommand1.Execute;
Cette table est parfaitement lisible sous MSAccess et contient déjà deux enregistrements.
Je veux lire l'un d'eux par la fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
// lire une segmentation
function TPeekDM.ReadSegmentationOK(Const RecNo: Integer; var Rec: TPeekSegmentsCfg): boolean;
begin
  qry.Close();
  qry.ConnectionString:= Format(_ConnString,[_UserName,_PassWord,CurDBPath]);
  qry.sql.text := 'SELECT * FROM SEGMENTATION WHERE SEGMENTATION_NO = '+IntToStr(RecNo)+';';
  qry.Open(); // Ici Open pour SELECT, reserver ExecSQL à INSERT\UPDATE
L'ensemble de ce code source est déclaré dans un DataModule.
Dans une autre unité j'appele la fonction PeekDM.ReadSegmentation(1,record) et l'erreur se produit au code précédent ligne 6 "EOleExeption avec message "Echec de l'authentification"

Au secours ! Comment corriger ?

Merci à l'avance à tous les forumers