Méthode Open sur un recordSet
Bonjour,
J'ai un soucis avec la méthode Open d'un objet de type RecordSet.
Voici le code source :
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
function TFPrinc.getVersionTarif(dateEffet : TDateTime) : WideString;
var
obdd : recordset;
SQL : WideString;
oConnection : Connection;
tmp : IDispatch;
versionTarif : WideString;
begin
versionTarif := '';
tmp := oInfoBase.GetoADOConnection;
try
oConnection := Connection(tmp);
if oConnection = nil Then
showMessage('null')
Else
showMessage('non null');
Except
on E: Exception do begin
oErreur.CodeErreur := 5001;
oErreur.MsgErreur := 'Un message divers';
oErreur.MsgTech := E.Message;
end;
end;
// Fermeture du recordset
If obdd = Nil Then Begin
obdd := CoRecordSet.Create;
obdd := CreateOleObject('ADODB.Recordset');
obdd.CursorLocation := adUseServer;
End;
showMessage('methode getVersionTarif');
If obdd.State = adStateOpen Then obdd.Close;
SQL := 'SELECT numVersion FROM CAAA1_Version;';
showMessage(SQL);
// Lecture
try
try
// l'INSTRUCTION Open ci-dessous plante
// avec l'erreur "Les arguments sont de types incorrects,
//en dehors des limites autorisées ou en conflit les uns avec les autres
obdd.Open('CAAA1_Version', oConnection, adOpenKeySet,
adLockPessimistic, adCmdTableDirect);
showMessage('apres le open');
if(obdd.State = adstateopen) then
begin
showMessage('debut begin');
if not(obdd.eof) then begin
versionTarif := oBdd.Fields['numVersion'].value;
end;
end;
Except on E: Exception do
begin
oErreur.CodeErreur := 5003;
oErreur.MsgErreur := 'le message';
oErreur.MsgTech := E.Message;
showMessage(E.Message);
end;
end;
finally
if not (obdd = nil) then begin
if (obdd.State<>adStateClosed) then obdd.Close;
obdd:=nil;
end;
if not (oConnection = nil) then begin
if (oConnection.State<>adStateClosed) then oConnection.Close;
oConnection:=nil;
end;
end;
result := versionTarif;
end; |
Après affichage de la requête et différentes traces, l'exécutable plante sur l'instruction Open().
Quelqu'un a une idées s'il vous plaît?
Merci D'avance
Matt