<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Version 7.0.2 : 2 Go de mémoire, Windows 7
J'ai une boucle for (qui boucle deux fois pour l'instant). Dans la boucle for, j'ouvre une connexion à une base de données et j'interroge une table renvoyée. La table renvoyée est d'environ 10 colonnes, 1,7 million de lignes. J'enregistre ensuite la table et la ferme, puis je passe à la table suivante. Le problème est que la mémoire n'est jamais libérée de la première table, donc lors de la récupération des enregistrements de la prochaine requête de boucles, j'obtiens une exception de mémoire. Existe-t-il un moyen de fermer définitivement la table et sa mémoire depuis la boucle for ? Merci Chris.
Veuillez voir l'extrait de code ci-dessous :
ma liste = mots ( Münger ( p [ "gaufrettes" ] , z , "," , " " )) ; // place les numéros de plaquette dans une liste
N = N articles ( ma liste ) ; // compte le nombre de wafers dans la liste
pour ( je = 1 , je <= N , je ++,
waf_id = ma liste [ je ] ;
waf_table = ma liste [ je ] ;
si ( longueur ( waf_id ) > 0 , waf_id = "('" || waf_id || "')" ) ;
ls_sql = "SÉLECTIONNER * " ;
ls_sql = ls_sql || " FROM WDBP.dbo.SF_QST " ;
ls_sql = ls_sql || " OÙ WAFER_ID DANS " || waf_id ;
Afficher ( ls_sql ) ; // affiche l'instruction SQL dans le journal
OpenDatabase ( "DSN=WDBP;UID=WDFREP;PWD=wdfrep;" , ls_sql , waf_table ) ; // interroge la base de données
dt = tableau de données ( waf_table ) ;
nom de fichier = waf_table||".jmp";
Afficher (nom de fichier);
proche (dt, enregistrer(nom de fichier));
) ;
D'ACCORD. Le problème est résolu en plaçant une commande "wait(5)" après "close(dt, save(filename))" à la fin de la boucle. JMP n'avait pas terminé la sauvegarde des fichiers avant que le script ne poursuive son traitement.
J'ai trouvé cela en effectuant quelques tests, et un coup de chance...