Bonjour,
J'ai un soucis avec la méthode Open d'un objet de type RecordSet.
Voici le code source :
Après affichage de la requête et différentes traces, l'exécutable plante sur l'instruction Open().
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
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;
Quelqu'un a une idées s'il vous plaît?
Merci D'avance
Matt
Partager