Bonjour supersnail,
Je vais essayer de mettre le plus de chose possible. J'utilise un composant TODBCConnection pour me connecter, à l'aide d'un fichier dsn. Voici la config du composant ODBC :
1 2 3 4 5 6 7 8
|
object ODBCConnection1: TODBCConnection
Connected = True
Transaction = SQLTransaction1
FileDSN = 'C:\paradoxtest.dsn'
left = 8
top = 445
end |
le fichier DSN est le suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [ODBC]
DRIVER=Microsoft Paradox Driver (*.db )
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
ParadoxUserName=admin
ParadoxNetStyle=4.x
ParadoxNetPath=C:\WINDOWS\system32
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=Paradox 4.X
DriverId=282
DefaultDir=C:\BDD
CollatingSequence=International |
Pour récupérer les infos, j'utilise un query très simple, à savoir :
SELECT * FROM :prNomTable
bien évidemment je remplace le parametre par le nom de la table souhaité (j'ai essayé avec .db et sans, même punition !). Le query est lié à une DBGrid via un datasource, config toute bête quoi !
Et finalement, voici le code pour ouvrir la table :
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
|
procedure TfrmParadox2.actOuvrirExecute(Sender: TObject);
var Fichier,NomTable : String;
begin
// Selection d'un fichier a ouvrir
If SQLQuery1.Active Then
SQLQuery1.Close;
If ODBCConnection1.Connected Then
ODBCConnection1.Close;
// Selection du fichier
If OpenDialog1.Execute Then
Begin
Fichier := OpenDialog1.FileName;
// recuperation du nom de la table
NomTable := AnsiRightStr(Fichier, AnsiPos('\',AnsiReverseString(Fichier))-1);
if Application.MessageBox(PChar('Table : '+NomTable),'Nom de la table selectionnee', MB_ICONINFORMATION or MB_YESNO) = mrYes Then
Begin
Try
ODBCConnection1.Open;
SQLQuery1.Params.ParamByName('prNomTable').AsString:= NomTable;
SQLQuery1.Open;
Except
On e:exception do
Begin
Application.MessageBox(PChar('Erreur : '+e.Message),'Erreur requete', MB_ICONERROR or MB_OK)
End;
End;
End;
End;
end; |
Petite remarque, malgré l'utilisation d'un bloc protégé, impossible d'obtenir le message d'erreur, le pied quoi !
Merci d'avance pour l'aide.
@+
Dnode57.
Partager