je lis un fichier séquentiel chaque ligne de ce fichier correspond à une commande
/*tant qu'il y a des lignes à lire : lire la ligne*/ while (fgets (bufe,sizeof(bufe), ptlec)) { nblignelues++;
strcpy(ligne,bufe);
/*là je récupère le n° de cde dans une variable locale of que je recopie dans une variable globale 'num_of' */)*/
compteur=0; /* initialisation du compteur qui retourne le nb de ligne renvoyée par le select */ strncpy(num_of.arr,of,9); /* on copie of (locale) dans num_of (globale)*/ num_of.len = strlen(num_of.arr);
/*je déclare un curseur pour ma requete, nb:si il y a me pourriez vous me le dire, mais c le seul moyen que j'ai trouvé pour pouvoir récupérer plusieurs lignes du select*/ EXEC SQL DECLARE C1 CURSOR FOR SELECT NUM_OF, NUM_LIGN, to_char(DAT_SORT_PREV,'DD-MON-YYYY'), CODE_FINI_SPEC FROM OF_LIGN WHERE NUM_OF=:numof[compteur];
/* exécution du curseur */ EXEC SQL OPEN C1;
EXEC SQL WHENEVER NOT FOUND DO break;
for (; { EXEC SQL FETCH C1 INTO :numof[compteur], :numligne[compteur], at_sort_prev[compteur], :code_fs[compteur];
compteur++; }
EXEC SQL CLOSE C1;
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL COMMIT WORK RELEASE;
là j'écrit la ligne dans un fichier et on boucle sur la ligne suivante
} /* fin du while */
pour la première ligne ça marche bien mais pour la deuxième le select n'a pas été rééxécuté avec le nouveau numéro lu de la ligne suivante et je retrouve donc dans mes variables tableau (INTO :numof[compteur], :numligne[compteur], dat_sort_prev[compteur], :code_fs[compteur]) les valeurs de la ligne précédente ... si quelqu'un avait une idée ça m'arrangerait je dois finir mon programme pour la semaine dernière...
Marsh Posté le 16-06-2005 à 11:51:24
bonjour j'ai un petit pb
at_sort_prev[compteur], :code_fs[compteur];
je lis un fichier séquentiel
chaque ligne de ce fichier correspond à une commande
/*tant qu'il y a des lignes à lire : lire la ligne*/
while (fgets (bufe,sizeof(bufe), ptlec))
{
nblignelues++;
strcpy(ligne,bufe);
/*là je récupère le n° de cde dans une variable locale of que je recopie dans une variable globale 'num_of' */)*/
compteur=0; /* initialisation du compteur qui retourne le nb de ligne renvoyée par le select */
strncpy(num_of.arr,of,9); /* on copie of (locale) dans num_of (globale)*/
num_of.len = strlen(num_of.arr);
/*je déclare un curseur pour ma requete, nb:si il y a me pourriez vous me le dire, mais c le seul moyen que j'ai trouvé pour pouvoir récupérer plusieurs lignes du select*/
EXEC SQL DECLARE C1 CURSOR FOR
SELECT NUM_OF, NUM_LIGN,
to_char(DAT_SORT_PREV,'DD-MON-YYYY'), CODE_FINI_SPEC
FROM OF_LIGN
WHERE NUM_OF=:numof[compteur];
/* exécution du curseur */
EXEC SQL OPEN C1;
EXEC SQL WHENEVER NOT FOUND DO break;
for (;
{
EXEC SQL FETCH C1 INTO :numof[compteur], :numligne[compteur],
compteur++;
}
EXEC SQL CLOSE C1;
EXEC SQL WHENEVER SQLERROR CONTINUE;
EXEC SQL COMMIT WORK RELEASE;
là j'écrit la ligne dans un fichier et on boucle sur la ligne suivante
} /* fin du while */
pour la première ligne ça marche bien
mais pour la deuxième le select n'a pas été rééxécuté avec le nouveau numéro lu de la ligne suivante
et je retrouve donc dans mes variables tableau (INTO :numof[compteur], :numligne[compteur], dat_sort_prev[compteur], :code_fs[compteur]) les valeurs de la ligne précédente ...
si quelqu'un avait une idée ça m'arrangerait je dois finir mon programme pour la semaine dernière...