IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Powerbuilder Discussion :

Création de fichier avec Powerbuilder


Sujet :

Powerbuilder

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut Création de fichier avec Powerbuilder
    Bonjour à tous !

    Est-ce que quelqu'un connait la commande permettant de créer un fichier ?

    Tant qu'à faire, comment écrire dedans et enregistrer les modifs ?


    Merci d'avance

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    Pour créer un fichier et écrire une ligne...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    long ll_numFile 
    
    ll_numFile = FileOpen("c:\monfichier.txt", lineMode!, write!, LockWrite!, Replace!)
    
    fileWrite( ll_numFile, "Une ligne")
    
    fileClose( ll_numFile )
    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    Merci.

    Sinon, sais-tu quelle est l'utilité de la commande "GetFileSaveName" ?

    C'est pour récupérer un nom de fichier déjà présent sur le disque dur ?


    D'autre part, sais-tu comment faire pour récupérer (ou enregistrer) le résultat d'une requête dans un fichier ?

    Voici un extrait de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT A, B, C INTO :a, :b, :c FROM table;
    
    ls_enreg = string(a)+";"+string(b)+";"+string(c)
    
    FileWrite(ll_NumFile, ls_enreg)
    Je créé un fichier csv contenant les résultats mais je n'ai que la première ligne.

    Que dois-je faire pour écrire l'ensemble des résultats ?

    Est-il possible de stocker chaque résultat dans un tableau (au lieu d'avoir :a, :b et :c) ?

    Help me !

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    GetFileSaveName, ouvre une fenêtre Windows permettant de choisir l'endroit ou l'on veut sauvegarder un fichier. Le fichier peut exister ou non.

    Pour créer le fichier, il manque les instructions "fetch" permettant de récupérer toutes les lignes...

    Le plus simple est d'utiliser un datastore/datawindow. La fonction saveAs du datastore/datawindow permet de créer automatiquement le fichier dans des formats divers...

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string ls_sql = "select ..."
    string ls_res, ls_erreur
    ls_res = SQLCA.SyntaxFromSQL(ls_sql, "", ls_erreur)
    dw_1.create(ls_res, ls_error)
    dw_1.setTransObject(SQLCA)
    dw_1.retrieve()
    dw_1.saveas("c\monfichier.cvs", CSV!, false)

    A+

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    J'ai trouvé un exemple qui n'utilise pas de datawindow :

    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
                 string clause = "SELECT * FROM TEST;"
    
    	PREPARE SQLSA FROM :Clause;
    	DECLARE curseur DYNAMIC CURSOR FOR SQLSA;
    	OPEN DYNAMIC curseur;  
    
    	if SQLCA.sqlcode < 0 then
    		MessageBox ( "Erreur!" , SQLCA.sqlerrtext )
    	end if 
    
    	Do While SQLCA.sqlcode = 0
    		Fetch curseur into :result;
    		
    		if SQLCA.sqlcode < 0 then
    			MessageBox( "Erreur", SQLCA.sqlerrtext )
    		ELSE 
    			FileWrite(file_num,result)
    		end if
    		
    	Loop
    
                 close curseur;
    Le problème, c'est que dans le programme où se situe ce code, il fonctionne mais si je l'utilise dans mon programme, sqlca.sqlcode renvoit -1 après la ligne "OPEN DYNAMIC curseur;".

    Cette façon de faire serait plus facile pour le traitement que j'aimerais faire mais sais-tu pourquoi ça ne passe pas ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    C'est quoi le message d'erreur (SQLCA.sqlerrtext)?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    Le problème c'est qu'il ne me renvoit rien !!!

    Alors avec ça je suis bien avancé !

    Et si je met la ligne suivante "MessageBox ( "code" , SQLCA.sqlcode )" avant et après le "OPEN DYNAMIC curseur;", avant il me retourne 0 donc apparement ça passe mais juste après, il me retourne -1 !

    Est-ce que l'utilisation d'un curseur dynamique nécessite des déclarations spéciales ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 108
    Points : 97
    Points
    97
    Par défaut
    La connexion à la base c'est-elle bien passé ? SQLCA.sqlCode ?

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Points : 33
    Points
    33
    Par défaut
    Le résultat de SQLCA.SqlCode est indiqué dans mon précédent message.

    Sinon j'ai trouvé une solution qui fonctionne.
    Il suffit de ne pas passer par une clause et de ne pas utiliser de curseur dynamique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	DECLARE curseur CURSOR FOR SELECT * FROM TEST;
    	OPEN curseur;
    Là ça fonctionne !

    Je pense que je vais faire comme ça mais je ne vois pas pourquoi ça ne passe pas si on utilise une clause...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. changer forme d'une création de fichier avec if
    Par Maxime082 dans le forum Général VBA
    Réponses: 2
    Dernier message: 13/06/2011, 17h28
  2. probleme de création de fichiers avec une boucle
    Par bobo696 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2009, 14h45
  3. Création de fichier avec fopen
    Par mcdelay dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2008, 09h08
  4. création de fichier avec droits
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 2
    Dernier message: 25/02/2008, 17h40
  5. création de fichier avec commande DOS
    Par staticx dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 21/08/2007, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo