Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/12/2010, 08h51   #1
Membre confirmé
 
Avatar de mongilotti
 
Mongi
Inscription : février 2003
Messages : 298
Détails du profil
Informations personnelles :
Nom : Mongi
Localisation : Tunisie

Informations forums :
Inscription : février 2003
Messages : 298
Points : 255
Points : 255
Par défaut Importer un fichier

Bonjour, je travaille avec WinXP, Forms6i, Oracle 10G

on me demande de développez un interface (un écran) qui permet de parcourir le disque pour sélectionner un fichier "extrait.txt" reçu de la banque contenant un extrait mensuel des opérations bancaires et de le charger directement dans une table dans la base, le fichier est formaté et séparé par des virgules.

je vois pas comment procéder.

Merci de me guider pour résoudre ce problème.
mongilotti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 08h56   #2
Membre confirmé
 
Avatar de mongilotti
 
Mongi
Inscription : février 2003
Messages : 298
Détails du profil
Informations personnelles :
Nom : Mongi
Localisation : Tunisie

Informations forums :
Inscription : février 2003
Messages : 298
Points : 255
Points : 255
j'ai créer la table dans la base avec les champs :
Code, Date_opération, Date_valeur, Libelle, Montant, Sens_Opération.

le fichier "extrait.txt" est présenter de cette façon.
mongilotti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 09h24   #3
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 529
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 529
Points : 6 458
Points : 6 458
Pour scanner le disque local, il faut utiliser une fonction disponible dans la librairie d2kwutil.pll (win_api_dialog ou quelque chose d'approchant)
ensuite, il faut ouvrir et lire le fichier avec les fonctions du package intégré TEXT_IO, et utiliser, par example la fonction Split() pour extraire les différents tokens de chaque ligne lue.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 10h24   #4
Membre confirmé
 
Avatar de mongilotti
 
Mongi
Inscription : février 2003
Messages : 298
Détails du profil
Informations personnelles :
Nom : Mongi
Localisation : Tunisie

Informations forums :
Inscription : février 2003
Messages : 298
Points : 255
Points : 255
Merci beaucoup pour ta réponse.

maintenant j'ai une autre contrainte c'est que chaque banque nous fournit un fichier avec un ordre de champ différent, c à d:

Banque A : Code, Date_opération, Date_valeur, Libelle, Montant, Sens.
Banque B : Date_opération, Date_valeur, Code, Libelle, Montant, Sens.
Banque C : Code, Date_opération, Date_valeur, Libelle, Montant, Sens.
Banque E : Date_opération, Date_valeur, Libelle, Montant, Code, Sens.
Banque F : Montant, Sens, Code, Date_opération, Date_valeur, Libelle.

je sais pas comment différencier ces champs pour les insérer dans leurs champ adéquats dans la tables?
mongilotti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 11h06   #5
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 529
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 529
Points : 6 458
Points : 6 458
Il y a donc un format différent pour chaque source. La différence réside dans l'ordre des colonnes. Ou est le problème ?
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 12h57   #6
Membre confirmé
 
Avatar de mongilotti
 
Mongi
Inscription : février 2003
Messages : 298
Détails du profil
Informations personnelles :
Nom : Mongi
Localisation : Tunisie

Informations forums :
Inscription : février 2003
Messages : 298
Points : 255
Points : 255
les problèmes est qu'on je lis le fichier texte (parfois même sans entête pour les colonnes) comment je peux mettre chaque ligne dans les champs de la table?
mongilotti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 13h58   #7
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 529
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 529
Points : 6 458
Points : 6 458
La fonction Split() que je vous donne dans un précédent message permet de récupérer n'importe quel token par son numéro.
A partir du moment ou vous connaissez l'ordre des champs en fonction de la source c'est facile:

source1: ch1,ch3,ch4,ch2

Code :
1
2
3
4
5
6
 
c1 := Split( chaine, 1, ',');
c2 := Split( chaine, 4, ',');
c3 := Split( chaine, 2, ',');
c4 := Split( chaine, 3, ',');
...
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2010, 14h43   #8
Membre confirmé
 
Avatar de mongilotti
 
Mongi
Inscription : février 2003
Messages : 298
Détails du profil
Informations personnelles :
Nom : Mongi
Localisation : Tunisie

Informations forums :
Inscription : février 2003
Messages : 298
Points : 255
Points : 255
merci bcp,
je procède de cette façon et je te tiens au courant.
mongilotti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 09h36   #9
Membre confirmé
 
Avatar de mongilotti
 
Mongi
Inscription : février 2003
Messages : 298
Détails du profil
Informations personnelles :
Nom : Mongi
Localisation : Tunisie

Informations forums :
Inscription : février 2003
Messages : 298
Points : 255
Points : 255
Bonjour,
je rencontre une autre ambiguïté, parmi les champs dans une ligne il y'a le champ montant, quand je le lit via la fonction Split il est de type varchar2() quand je l'insert dans la base il me donne une erreur ora-01722.

j'ai essayé avec TO_NUMBER(), mais je me retrouve pas?
mongilotti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 10h10   #10
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 529
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 529
Points : 6 458
Points : 6 458
Il faut tracer les valeurs retournées par la fonction split et vérifier l'adéquation entre les symboles décimaux retournés et ceux de la base. ça se trouve, le problème vient du séparateur décimal.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h57.


 
 
 
 
Partenaires

Hébergement Web