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

VBA Access Discussion :

La fonction "kill"


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut La fonction "kill"
    Bonjour ,débutante en vba access ,je sollicite votre aide.

    J'ai une fonction qui exporte une commande en csv.Je voudrais que chaque fois qu'une nouvelle commande est générée ,il supprime le fichier temporaire précédent .J'ai utilisé la fonction "kill" .Mais à chaque nouvelle commande ,il met les enregistrements à la suite de la commande précédente .
    Voici le code

    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
    24
    25
    26
    27
    Public Function exportcommandeSob()
    Dim temp As String
    Dim rs As Recordset
     
    On Error GoTo err_exportcommandeSob:
     
    temp = getCommandesDir & "temp" & ".csv"
     
    If Dir(temp) = "" Then Kill temp
     
    intFic = FreeFile
     
    Open temp For Output As intFic
        Set rs = CurrentDb.OpenRecordset("Select * from commande where ComID <> 0" & ComID & ";")
        With rs
            Print #intFic, rs!ComCode & ";" & rs!ComRef & ";" & rs!Email & ";" & rs!Commentaire
        End With
        Set rs = CurrentDb.OpenRecordset("Select * from commandedetail WHERE  ComID <> 0" & ComID & ";")
        With rs
            Do Until .EOF
            Print #intFic, rs!MedicRef & ";" & rs!QuantiteCondPrim
            rs.MoveNext
            Loop
     
        End With
    Close intFic
    Set rs = Nothing
    C'est la version access Xp
    Merci de votre réponse et aide

  2. #2
    Membre chevronné Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Par défaut
    Bonjour tennesy,

    Il est possible que le kill ne se fasse pas si la condition avec le Dir n'est pas bonne (a vérifier avec la touche F1). Je serrai d'avis de faire un toujours un kill si le fichier n'existe pas c'est pas grave le kill échoue et si ca génère une erreur il faut la 'trapper'.

    Il serait bien aussi d'aller voir si cette répétition n'est pas faite aussi dans les tables access. Controle le résultat des requêtes dans une requete access vierge, tu faire des copier - coller si tu te place en mode SQL.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Par défaut
    bonjour,

    Il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    If Dir(temp) <> "" then Kill temp
    ...
    Philippe

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut Merci de la réponse mais ,j'ai essayé cela et ça ne fonctionne pas
    Citation Envoyé par philben Voir le message
    bonjour,

    Il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    If Dir(temp) <> "" then Kill temp
    ...
    Philippe

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut
    Citation Envoyé par Tonioyo Voir le message
    Bonjour tennesy,

    Il est possible que le kill ne se fasse pas si la condition avec le Dir n'est pas bonne (a vérifier avec la touche F1). Je serrai d'avis de faire un toujours un kill si le fichier n'existe pas c'est pas grave le kill échoue et si ca génère une erreur il faut la 'trapper'.

    Il serait bien aussi d'aller voir si cette répétition n'est pas faite aussi dans les tables access. Controle le résultat des requêtes dans une requete access vierge, tu faire des copier - coller si tu te place en mode SQL.
    pourriez-vous m'epliquer :"toujours un kill.Mon but est un fichier temporaire que l'utilisateur enregistre après avec un nom qui lui convient.
    : "trapper"
    j'essaye de voir le control par une requête vierge ...
    merci en tous les cas de votre aide

  6. #6
    Membre chevronné Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Par défaut
    Voici ce que tu peux trouver en faisant F1 sur l'instruction Kill

    Kill, instruction
    Voir aussi Exemple Particularités

    Supprime des fichiers d'un disque.

    Syntaxe

    Kill pathname

    L'argument pathname est une expression de chaîne indiquant le nom d'un ou plusieurs fichiers à supprimer. L'argument pathname peut préciser le répertoire ou le dossier et le lecteur.

    Remarques

    Sous Microsoft Windows, l'instruction Kill permet d'utiliser des jokers ou caractères génériques (* ou ?) pour sélectionner plusieurs fichiers. Toutefois, sur le Macintosh, ces caractères sont considérés comme des caractères de noms de fichiers valides et ne peuvent être utilisés comme des caractères génériques pour spécifier des fichiers multiples.

    Comme le Macintosh ne gère pas les caractères génériques, utilisez le type de fichier pour identifier les groupes de fichiers à supprimer. Vous pouvez utiliser la fonction MacID pour indiquer le type de fichier au lieu de répéter la commande à l'aide de noms de fichiers séparés. Par exemple, l'instruction suivante permet de supprimer tous les fichiers TEXT dans le dossier courant.

    Kill MacID("TEXT")

    Si vous utilisez la fonction MacID avec l'instruction Kill dans Microsoft Windows, une erreur se produit.

    Une erreur se produit si vous tentez de supprimer un fichier ouvert avec l'instruction Kill.

    Note Pour supprimer des dossiers, utilisez l'instruction RmDir.
    Apparemment il n'y a pas de retour pour cette fonction donc enlève la condition if. Si cela cause une erreur utilise ce que philben à écrit.

    Si ca ne résoud toujours pas ton problème c'est au niveau des données qu'il faut agir.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut
    J'ai essayé mais ,ça ne marche pas non plus .
    Je constate que si je supprime ,l'enregistrement en manuel ,et que je demande de faire une nouvelle commande alors ça marche .D'où ma question ,est-ce que par exemple si je mettais à l'ouverture du formulaire de supprimer le dernier enregistrement ,cela pourrait être acceptable comme fonctionnement ?Je vous pose la question car c'est la première fois que je réalise une telle base de données?

  8. #8
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 678
    Par défaut
    Bonjour,

    peux-tu nous reposter ton code avec les modifications qui t'ont été proposées, histoire de voir où on en est ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre chevronné Avatar de Tonioyo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 343
    Par défaut
    Je suis du même avis que Jpcheck car cette question est une question de conception.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut
    Oui ,bien sur ,le voici
    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
    24
    25
    26
    27
    28
     
    Public Function exportcommandeSob()
    Dim temp As String
    Dim rs As Recordset
     
    On Error GoTo err_exportcommandeSob:
     
    temp = getCommandesDir & "temp" & ".csv"
     
    Kill temp
     
    intFic = FreeFile
     
    Open temp For Output As intFic
    Set rs = CurrentDb.OpenRecordset("Select * from commande where ComID <> 0;")
    With rs
    Print #intFic, rs!ComCode & ";" & rs!ComRef & ";" & rs!Email & ";" & rs!Commentaire
    End With
    Set rs = CurrentDb.OpenRecordset("Select * from commandedetail WHERE ComID <> 0;")
    With rs
    Do Until .EOF
    Print #intFic, rs!MedicRef & ";" & rs!QuantiteCondPrim
    rs.MoveNext
    Loop
     
    End With
    Close intFic
    Set rs = Nothing

  11. #11
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 678
    Par défaut
    quelques points à étudier d'après moi :
    - ton 1er recordset n'est utilisé qu'une fois dans ton fichier, est-ce normal ?
    - à quoi te sert le ?
    - pour améliorer ton code, je te recommande de mettre en commentaire pour l'instant le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    On Error GoTo err_exportcommandeSob
    tu utilises le fichier en ligne à ligne, mais ne veux-tu pas faire un export global de tes données ?
    Dans ce cas, je t'encourage à regarder du côté de
    ainsi que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Docmd.TransfertSpreadSheet
    en espérant que ca te donne de bonnes pistes pour avancer
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut
    Hé bien ,en tous les cas ,je remercie ce forum d'exister

    Je ne sais pas si je suis aussi sur une autre piste de syntaxe mais bon étant donné que vous êtes tous plus qualifiés que moi ,je choisis de suivre vos conseils.

    Est-ce que je peux ou pourrais utilisé le même raisonnement si je veux le fare vers un format .txt

    Si de part vos conseils ,j'arrive à une solution ,est-ce que je mets le nouveau code en ligne?

    Merci en tous les cas à tous

  13. #13
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 678
    Par défaut
    oui,
    si tu explores d'autres pistes, indiques nous ton cheminement, qu'on puisse te dire ce qu'il en est
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 11
    Par défaut résolu
    Bonjour à tous .

    Voilà ,après avoir suivi tous vos conseils,et essayer dans tous les sens.je viens de trouver .En fait tout bêtement ,c'était la conception d'un numéro de commande automatique .Sinon ,le code fonctionne très bien .Désolée de vous avoir dérranger .Merci et à bientôt sans doute pour d'autres questions

Discussions similaires

  1. Fonction Replace pour quote
    Par piero53 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 17/11/2009, 01h19

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