Data

Résolu
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
bonsoir,
j'ai un controle data1 lié à 1 fichier texte
connect = text;
readOnly=false
recordsetType= 0-Table

j'ai un textbox relié à data1
pas de problème pour se balader dans le fichier, le texbox réagit, par contre quand je change les données dans text1, çà ne les met pas à jour dans mon fichier texte quand je sort de l'application

y a une manip pour mettre les données à jour ?

merci de votre aide.

14 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Pour un fichier texte ? Je n'utilise jamais de fichier texte pour stocker des données car c'est un véritable bordel à gérer et c'est très risqué !
Je lui préfère amplement une base de données, qui est bien plus simple à utiliser, rapide et sécurisé niveau accès concurrentiels !
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
133
Il me semble (ca reste à confirmer puisque ca fait belle lurette que je n'utilise plus ce genre de liaison) qu'il faut faire un update de ton contrôle Data lorsque tu veux enregistrer les données.
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
j'ai beau le faire, çà marche po

sinon, tu utilises quoi comme controle pour ce genre de fichier (texte) ?

merci
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
ok, merci
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonsoir,
Utilises plutot un control RichTextBox.

chaibat
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Si tu dois travailler avec des fichiers texte, tu pourrais y aller avec ADO. Je ne sais pas si c'est faisable avec DAO (?)


Voici un exemple à partir d'Excel. Si tu utilises VB, il faut changer
ThisWorkBook.Path par App.Path ou le chemin en dur. Il faut aussi que
le fichier soit délimité (FMT pour Format) par des caractères
quelconques acceptables. Ici, ce sont des TAB, donc TabDelimited.

HDR, c'est pour spécifier si le fichier contient des entêtes (Header)


'Façon de se connecter
    oConn.Open "Provider= Microsoft.Jet.OLEDB.4.0;" & _

                "Data Source=" & ThisWorkbook.Path & "\;" & _

                "Extended Properties =""text;HDR= YES;FMT= TabDelimited """
   

'Erreur de connexion, on sort
    If oConn.State <> adStateOpen Then Exit Sub

   

    Set Rs = New ADODB.Recordset

    sSql "Select * from Fichier.txt where Champ Valeur"

   

    Rs.Open sSql, oConn, adOpenStatic, adLockOptimistic, adCmdText


Et pour que ADO sache ce que tu entends par Champ, il faut créer un
fichier Schema.ini qui se présente comme ceci (à mettre dans le
répertoire des fichiers texte et/ou du programme... je ne me souviens
plus...)


'Contenu du fichier Schema.ini
[Fichier.txt]

Format=TabDelimited

Col1=Code Long

Col2=Description Text Width 250

Col3=Banniere Text Width 10

Col4=Semaine Integer

Col5=PrixLb Double

Col6=PrixKg Double

Col7=Promo Text Width 15

Col8=Ventes Double

Col9=Produit Text Width 20

Col10=Formule1 Text Width 30

Col11=Annee Long

Col12=Formule2 Text Width 30


Donc, chaque colonne est prédéfinie dans ce fichier, avec le type du
champ. Il faut inscrire tout ce qui est en vert, tel quel, en changeant
les valeurs de Col1, 2, 3... selon les besoins.

ex: Col1=NomDuChamp TypeDuChamp (Width et nombre de caractères si c'est du texte)


Et comme dit DarkSidious, si tu peux utiliser une base, oublie tout ce que je viens d'écrire... ¦¬)

MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Et si tu utilises un Data... ouf ça fait un bout... je pense que tu dois faire


Data1.Recordset.Update  (ça dépend des propriétés du contrôle Data)


et il y a aussi Data1.Refresh, il me semble  (pour raffraîchir les données)


Mais c'est loin loin tout ça...

MPi
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Re...
Pourquoi faire compliqué quand on peut faire plus simple !

'ouvre ton fichier
RichTextBox.LoadFile xFileName, rtfRTF

'sauvegarde
RichTextBox.SaveFile xFileName, rtfRTF

(ni data ni ado)

chaibat
Messages postés
548
Date d'inscription
mercredi 28 juillet 2004
Statut
Membre
Dernière intervention
11 septembre 2013
2
bah, çà marche pas
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
ton fichier texte doit avoir l' extension .rtf
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Dans les propriétés du Data, il y a EOFAction.

Change les options et fais des tests.

Après avoir modifié un enregistrement, clique sur le "bouton dernier enregistrement" du Data

MPi
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonsoir MPi,
Pourquoi vouloir à tout prix traiter un fichier texte,comme un champ dans une base de donnée ?
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
19
Salut Chaibat05,

Un fichier texte peut servir de base de données si celles-ci sont écrites de façon ordonnées, avec séparateur...


Tu peux donc éventuellement vouloir afficher un seul ou plusieurs
enregistrements répondant à certains critères. L'utilisation de SQL
peut être utile dans ce cas, d'où connexion au fichier comme à une base.


Bien sûr, on peut utiliser une simple boucle Do Until EOF(numFichier)
et vérifier chaque ligne (Line Input, Split - ou Instr...), mais je
pense que c'est pas mal plus lent qu'une requête... à vérifier tout de
même...


On peut aussi afficher dans un RTB et modifier le mot qu'on souhaite et
réenregistrer le fichier, mais ça risque d'être long et complexe si le
fichier contient 20 colonnes et  1 million de lignes, disons, et
qu'il y a plusieurs conditions qui entrent en jeu pour la modification
de ce mot.


Et bien sûr, si on a Access ou autre base de données, il serait
préférable de passer par ce type de programme pour stocker les données,
ce qui n'est pas mon cas au bureau. Je dois donc faire avec les moyens
du bord. Pour l'instant, je peux me débrouiller avec Excel, mais
bientôt, dans une certaine application, je devrai penser à
l'utilisation de fichiers parce que le nombre de données sera trop important...

MPi
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonjour MPi,
Rien à dire !
Tu as parfaitement raison dans ce que tu dit.
Moi aussi je suis pour l' ordonnancement des données.
Comme ça la gestion est facile, il n' y a pas de risque et
l' integrité est assurée.
D' ailleurs je n' ai jamais travaillé avec des fichiers textes ...
Mais ce qui m' a conduit à proposer le RichTextBox c' est
qu' au début il a précisé:
^^j'ai un controle data1 lié à 1fichier texte...
et c' est après qu' on l' a dirrigé vers la solution d' un fichier
organisée comme une table.
Si seulement il pourrait répondre pour nous donner plus
de précision à ce sujet.
Est-ce qu' il a un simple document ?
Ou est-ce que son fichier est organisé en ligne et coloone ?
De tout façon avec nos propositions , il n' a que l' embarras du choix.


cordialement


chaibat