Produit : 4D OCI 2004 · Plateforme : Mac & Win ♪
Si vous avez des difficultés à retourner les valeurs des colonnes Oracle de type date avec 4D for OCI, utilisez SQLT_ODT au lieu de SQLT_DATE :
Sélectionnez
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.
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.
` ---------- exemple ----------
TABLEAU DATE(results;3)
TABLEAU ENTIER LONG($tNull;1)
TABLEAU ENTIER LONG($tTailles;1)
TABLEAU ENTIER LONG($tCodes;1)
$tTailles{1}:=255
$UserName:="xxx"
$Password:="xxx"
$OraServ:="xxx"
$sql:="SELECT date_fact FROM factures"
$Status:=OCIEnvCreate ($DescrEnv;OCI_DEFAULT)
$Status:=OCIHandleAlloc ($DescrEnv;$DescrErr;OCI_HTYPE_ERROR)
$Status:=OCIHandleAlloc ($DescrEnv;$DescrService;OCI_HTYPE_SVCCTX)
$Status:=OCIHandleAlloc ($DescrEnv;$DescrAuth;OCI_HTYPE_SESSION)
$Status:=OCIHandleAlloc ($DescrEnv;$DescrServer;OCI_HTYPE_SERVER)
$Status:=OCIServerAttach ($DescrServer;$DescrErr;$OraServ)
$Status:=OCIAttrSetVal ($DescrService;$DescrServer;OCI_ATTR_SERVER;$DescrErr)
$Status:=OCIAttrSetText ($DescrAuth;$UserName;OCI_ATTR_USERNAME;$DescrErr)
$Status:=OCIAttrSetText ($DescrAuth;$Password;OCI_ATTR_PASSWORD;$DescrErr)
$Status:=OCISessionBegin ($DescrService;$DescrErr;$DescrAuth;OCI_CRED_RDBMS;OCI_DEFAULT)
$Status:=OCIAttrSetVal ($DescrService;$DescrAuth;OCI_ATTR_SESSION;$DescrErr)
$Status:=OCIHandleAlloc ($DescrEnv;$DescrStmt;OCI_HTYPE_STMT)
$Status:=OCIStmtPrepare ($DescrStmt;$DescrErr;$sql;Length($sql))
`$sqlt:=SQLT_DATE
$sqlt:=SQLT_ODT
$Status:=OCIDefineByPos ($DescrStmt;$DescrDefine;$DescrErr;1;->results;$sqlt;
->$tNull;->$tTailles;->$tCodes;OCI_DEFAULT)
$Status:=OCIStmtExecute ($DescrService;$DescrStmt;$DescrErr;0;0;0;0;OCI_DEFAULT)
$Status:=OCIStmtFetch ($DescrStmt;$DescrErr;10)
$text:=Chaine(results{1})+Caractere(13)
Boucle ($i;2;Taille tableau(results))
$text:=$text+Chaine(results{$i})+Caractere(13)
Fin de boucle
ALERTE("TABLEAU DATE :"+Caractere(13)+$text)
$Status:=OCISessionEnd ($DescrService;$DescrErr;$DescrAuth)
$Status:=OCIServerDetach ($DescrServer;$DescrErr)
$Status:=OCIHandleFree ($DescrService)
$Status:=OCIHandleFree ($DescrServer)
$Status:=OCIHandleFree ($DescrErr)
$Status:=OCIHandleFree ($DescrEnv)
TABLEAU DATE(results;0)
` ---------- fin exemple ----------
En complément, petit script SQL pour créer la table factures :
Sélectionnez
drop table factures;
create table factures (ID_fact varchar(3), date_fact date);
insert into factures (ID_fact,date_fact) values ('F01','10/05/2005');
insert into factures (ID_fact,date_fact) values ('F02','11/05/2005');
insert into factures (ID_fact,date_fact) values ('F03','12/05/2005');
select * from factures;
commit;


