1. #1
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    avril 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : avril 2015
    Messages : 22
    Points : 16
    Points
    16

    Par défaut champs count qui ne se génère pas en fichier .txt

    Bonjour Membres ,

    svp je voudrais générer à partir de ma requête sql un fichier .txt via un formulaire en Access. tout marche bien sauf un champs `Count ` qui ne s affiche pas pas dans mon fichier .txt.

    Avez vous des explications svp?
    ci dessous ma requete :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT  Mid(Now(),6,2) AS Mois, Mid(Now(),1,4) AS [Year], Count(TenantCategoryCode) As NombreLoc, '01' AS NombredeCentre, '0050' AS CodeCMA
    FROM Requête_1

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Developpeur VBA, C# et VB.Net =]
    Inscrit en
    juillet 2007
    Messages
    12 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Developpeur VBA, C# et VB.Net =]
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 12 909
    Points : 28 957
    Points
    28 957

    Par défaut

    Salut,
    la requete n'est pas assez comme info, il nous faudrait également le code VBA qui genere le fichier txt par exemple, et éventuellement un comparatif attendu/obtenu

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

    Apprendre à programmer avec Access 2016

    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

  3. #3
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    avril 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : avril 2015
    Messages : 22
    Points : 16
    Points
    16

    Par défaut

    Bonjour,

    après peu de vacances je reviens vers vous.

    Voici ci-dessous ma requête sql :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT 'XX' AS DevloperCode, 
                 Mid(Now(),6,2) AS Mois, Mid(Now(),1,4) AS [Year], 
                  Count(TenantCategoryCode) AS LOCATAIRE,
                 '01' AS NombredeCentre,
                  '0050' AS CodeCMA
    FROM Requête_1;

    voici mon fichier schéma.ini , le problème je l'ai dans le fichier2.txt

    [fichier1.txt]
    ColNameHeader=False
    CharacterSet=1500
    Format= FixedLenght
    Col1=DeveloperCode Char Width 2
    Col2=MonthNumber Char Width 2
    Col3=CurrentYear Char Width 4
    Col4=CMACode Char Width 4
    Col5=Tenante Char Width 4
    Col6= SupAnc Char Width 10
    Col7=VentesAnc Char Width 10
    Col8=SupeActue Char Width 10
    Col9=ventesActue Char Width 10
    [fichier2.txt]
    ColNameHeader=False
    CharacterSet=1000
    Format= FixedLenght
    Col1=DeveloperCode Char Width 2
    Col2=MonthNumber Char Width 2
    Col3=CurrentYear Char Width 4
    Col4=NombreLocataire Char Width 10
    Col5=NombreCentre Char Width 2
    Col6=CodeCMA Char Width 4

    Mon problème quand je génère mon fichier via un code VBA , voici la le résultat dans le fichier généré:

    XX012018010050

    Donc la colonne du locataire n'est pas générée.

    Voici mon bout de code VBA qui génère le fichier.
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    'générer un fichier txt à partir des données de la requête
     
     
        'Formatage de la date
        'Déclaration des variables
        Dim Date1
            Date1 = Format(Date, "mmyy")
     
     
        Dim numFic As Long: numFic = FreeFile()
        Dim nomFic As String: nomFic = "\\mvt\usr\Perso\NR\052\DYH1976\Desktop\Projets\" & Date1 & "XX02.txt"
        Dim enr As String
        Open nomFic For Output As #numFic 'ouvre le fichier résultat
     
        Dim db As DAO.Database: Set db = CurrentDb
        Dim r As DAO.Recordset: Set r = db.OpenRecordset("Requete2_ICSC", dbOpenSnapshot)
        Dim c As DAO.Field
        Dim v As String
     
        Do While Not r.EOF
             enr = ""
             For Each c In r.Fields
                 If enr <> "" Then
                    enr = enr & SEPARATEUR_CHAMP
                End If
                  Select Case c.Type
                    Case dbText
                        enr = enr & c
                     Case dbDouble
                        v = Format(c, "0.0000")
                        v = Replace(v, ".", ",") 'Au cas où on est sur une machine qui utilise le point comme virgule.
                        enr = enr & v
                     Case dbDate
                        enr = enr & Format(c, "yyyy\-mm\-dd")
     
                 End Select
             Next c
             Print #numFic, enr
            r.MoveNext
        Loop
        r.Close: Set r = Nothing
        db.Close: Set db = Nothing
        Close #numFic 'Ferme le fichier résulat
     
    End Sub
    je ne sais pas le problème est dû à quoi. Je suis plantée !

    Merci d'avance pour votre aide!

  4. #4
    Membre actif
    Femme Profil pro
    Développeur informatique
    Inscrit en
    août 2017
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : août 2017
    Messages : 117
    Points : 270
    Points
    270

    Par défaut

    Bonjour Mafkir,

    Dans ton programme, tu ne prends en compte que trois formats possibles (texte, réel double, date), et il se pourrait que le résultat du "count" soit au format "Long".
    Le cas n'étant pas prévu dans ton test, tu n'ajoutes donc pas la valeur au fichier.
    De manière générale, il vaut mieux coder un "case else" en fin de clause "select case", ne serait-ce que pour générer un message d'erreur si on tombe sur une valeur non prévue.

    Cordialement,
    Paraffine.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

    "à tort", c'est toujours avec un "t". C'est tordu d'écrire "à tord".
    "hors" (en dehors), ce n'est pas "or" (pourtant). Là nous réfléchissons hors contexte, or le contexte est primordial.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    avril 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : avril 2015
    Messages : 22
    Points : 16
    Points
    16

    Par défaut

    mERCI PARAFINE,

    oui effectivement j ai ajouté le contrôle dbDecimal et ça marche , le champ s'affiche sauf que je veux arrondir la partir décimal apres la virgule.
    une idée svp?

    merci Merci bcp.

    Voici ce qu'il m affiche:

    XX0220180050111979033978068728712,56
    XX02201800501129407232918591089,07
    XX0220180050113918224024417182178,14
    XX02201800501149859865948591089,07
    XX0220180050115933379686734364356,28

  6. #6
    Membre actif
    Femme Profil pro
    Développeur informatique
    Inscrit en
    août 2017
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : août 2017
    Messages : 117
    Points : 270
    Points
    270

    Par défaut Bonsoir Mafkir,

    Depuis Access 2000, on dispose d'une fonction d'arrondi qui s'appelle Round.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonNbreArrondi2dec = Round(MonNombreReel, 2) ' Pour un arrondi à deux décimales
    Le deuxième argument est facultatif, si on l'omet, on arrondit à l'entier le plus proche.

    (Attention, si tu souhaites conserver les chiffres avant la virgule, ce n'est pas la même fonction; elle s'appelle Int (partie entière))

    Veux-tu vraiment constituer ton fichier de cette manière, sans séparateur? Il faudrait que tu formates les données afin qu'elles aient la même longueur pour tous les enregistrements si tu veux t'y repérer.
    Quand les données sont de longueur variable, on utilise souvent un séparateur (par exemple le point virgule) entre les valeurs.

    Cordialement,
    Paraffine.
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

    "à tort", c'est toujours avec un "t". C'est tordu d'écrire "à tord".
    "hors" (en dehors), ce n'est pas "or" (pourtant). Là nous réfléchissons hors contexte, or le contexte est primordial.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    avril 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : avril 2015
    Messages : 22
    Points : 16
    Points
    16

    Par défaut

    Merci Beaucoup Parafine sur tes instructions . en fait c 'est la demande qui est exprimée comme cece : lataille doit etre fixe et sans separateur.

    mais tu as tout a fait raison, la les champs se melent.

    Comment puis je fixer la taille dans mon code sql et la completer par des 0 a gauche. est ce que le leftPad existe en sql.

    Merci bcp

  8. #8
    Membre actif
    Femme Profil pro
    Développeur informatique
    Inscrit en
    août 2017
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 50
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : août 2017
    Messages : 117
    Points : 270
    Points
    270

    Par défaut Bonsoir Mafkir,

    Je ne crois pas qu'il existe un équivalent exact - mais mes connaissances datent un peu (et je suis en Access2007). J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cstr(Format(MonNombre,"000000.00"))
    - pour un format avec 6 chiffres avant la virgule et 2 après, par exemple (Cstr=conversion en chaîne de caractères), mais cela donne quelque chose comme "000219,33" avec mes paramètres régionaux, donc il faut que je fasse un replace en plus.
    Au final, je dois faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Replace(Cstr(Format(MonNombre,"000000.00")), ",", ".")
    si je veux un point comme séparateur de décimales.

    Oyez, oyez, est-ce que quelqu'un connait plus simple ?

    Cordialement,
    Paraffine
    Les problèmes sont des opportunités en vêtements de travail. Henry H. Kaiser
    Il n'est pas de problème dont une absence de solution ne finisse par venir à bout. Henri Queuille

    "à tort", c'est toujours avec un "t". C'est tordu d'écrire "à tord".
    "hors" (en dehors), ce n'est pas "or" (pourtant). Là nous réfléchissons hors contexte, or le contexte est primordial.

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

Discussions similaires

  1. Table qui ne se génère pas
    Par lollita2321 dans le forum NetBeans
    Réponses: 3
    Dernier message: 01/12/2012, 14h38
  2. ogre.cfg qui ne se génère pas :'(
    Par Le Barde dans le forum Ogre
    Réponses: 12
    Dernier message: 28/11/2009, 17h03
  3. [1.x] Mise à jour de champ created_at qui ne se fait pas
    Par jejeman dans le forum Symfony
    Réponses: 4
    Dernier message: 08/07/2009, 16h04
  4. Champ BLOB qui ne se vide pas.
    Par pifou02 dans le forum Firebird
    Réponses: 4
    Dernier message: 05/10/2007, 10h02
  5. Champ auto qui ne s'affiche pas
    Par codial dans le forum Connexion aux bases de données
    Réponses: 19
    Dernier message: 27/11/2006, 17h26

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