Bonjour,

J'essaie de convertir une application Delphi7 sous Delphi 10.4.2.
La version 7 fonctionne avec dbexpress. Je souhaiterais, dans un premier temps, continuer à fonctionner de la même façcon avec Delphi 10.
Je verrais plus tard, pour passer sous firedac.

J'utilise les composants suivants :

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
type
  TForm1 = class(TForm)
    conn1: TSQLConnection;
    qry1: TSQLQuery;
    cds1: TClientDataSet;
    dsp1: TDataSetProvider;
    ds1: TDataSource;
    grid1: TDBGrid;
    SQLConnection1: TSQLConnection;
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;
Je les initialise ainsi :

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
31
32
33
34
35
36
procedure TForm1.FormCreate(Sender: TObject);
var
  str: string;
begin
  grid1.DataSource := ds1;
  ds1.DataSet := cds1;
  cds1.ProviderName := dsp1.Name;
  dsp1.DataSet := qry1;
  qry1.SQL.Text := 'SELECT * FROM dbo.TSERVICE;';
  qry1.SQLConnection := conn1;
 
  conn1.LoginPrompt := False;
  conn1.ConnectionName := 'MSSQLConnection';
  conn1.DriverName := 'MSSQL';
  conn1.GetDriverFunc := 'getSQLDriverMSSQL';
  conn1.LibraryName := 'dbexpmss.dll';  // 'dbxmss.dll' pour d10
  conn1.VendorLib := 'oledb';
 
  conn1.Params.Clear;
  conn1.Params.Values['DriverName'] := 'MSSQL';
  conn1.Params.Values['HostName'] := '.';
  conn1.Params.Values['Database'] := 'ma_table';
  conn1.Params.Values['User_Name'] := 'sa';
  conn1.Params.Values['Password'] := 'password';
 
  try
    conn1.Open;
    cds1.Open;
    str := 'ok';
  except
    on e: Exception do
      str := e.Message;
  end;
 
  ShowMessage(str);
end;
Ce code fonctionne parfaitement sous Delphi 7.
Sous Delphi 10.4.2, j'obtiens l'erreur suivante : "Erreur DBX: Le pilote n'a pas été correctement initialisé. La bibliothèque client est manquante, n'est pas installée correctement, sa version est incorrecte, ou le pilote n'est pas dans le chemin système."

J'ai placé dans le dossier de l'exe le fichier dbxmss.dll que j'ai récupéré dans le dossier "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin".

Quelqu'un aurait-il une idée de ce qui ne fonctionne pas ?