Enregistrer les information d'une forme [Résolu]

f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 4 juin 2012 à 17:22 - Dernière réponse : f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention
- 8 juin 2012 à 00:04
Bonjour,
je voulais enregistrer avec vb.net les information d'une forme (tous les informations:labell, textbox,...).Il s'agit d'un rapport que je dois le sauvegarder ,j'ai trouver ce code

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim myStream As System.IO.Stream
Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
saveFileDialog1.FilterIndex = 2
saveFileDialog1.RestoreDirectory = True
If saveFileDialog1.ShowDialog() DialogResult.OK Then myStream saveFileDialog1.OpenFile()
End Sub

et il me semble qu'il est vrai mais le problème réside dans l'extension du fichier enregistré. j'ai essaillé d'enregistrer le fichier avec l'extension .txt par exemple mais ça ne marche pas. le fichier est vide aider moi svp et merci d'avance
Afficher la suite 

Votre réponse

16 réponses

Meilleure réponse
Utilisateur anonyme - 5 juin 2012 à 00:35
3
Merci
Et sans oeillomètre
Dim saveFileDialog1 As New SaveFileDialog() With { _
.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*", _
.FilterIndex = 1, _
.RestoreDirectory = True}
If saveFileDialog1.ShowDialog() = DialogResult.OK Then
Using fichier As New IO.StreamWriter(saveFileDialog1.FileName)
For Each MonControle As Control In Me.Controls
If MonControle.GetType().GetProperty("Text") IsNot Nothing Then _
   fichier.WriteLine(String.Format("{0}->{1}", MonControle.Name, MonControle.Text))
Next
End Using
End If

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 4 juin 2012 à 18:23
0
Merci
Bonjour,

Tu peux énumérer les contrôles du formulaire
For Each MonControle As Control In Me.Controls
'...

Tester si ce contrôle à une propriété 'Text' pour l'écrire dans un fichier :
If MonControle.GetType().GetProperty("Text") IsNot Nothing Then
     fichier.writeline(monControle.Text))
'...
Commenter la réponse de Utilisateur anonyme
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 4 juin 2012 à 19:06
0
Merci
svp expliquer d'avantage parce que je suis débutant et je n'arrive pas à comprendre merci
Commenter la réponse de f2w1
Utilisateur anonyme - 4 juin 2012 à 19:40
0
Merci
Le premier code que tu as trouvé ne crée qu'un fichier vide.
Ce qui est normal puisque il est incomplet. Pour qu'il fonctionne, il faudrait écrire des données sur le flux 'myStream'.

La méthode que je t'ai proposé permet de lister tous les contrôles (labels, textboxs, buttons ...) d'un formulaire, de vérifier s'ils possèdent une propriété 'Text' et d'écrire dans un fichier ce que renvoie cette propriété.

Tu peux te servir du code que tu as 'trouvé', le compléter par les exemples que je t'ai fourni, l'adapter ensuite pour écrire tes données de type string sur ton objet myStream.
Remarque : Pour écrire des données de type string dans un fichier, l'emploi d'un objet de type IO.StreamWriter aurait été plus juditieux que d'utiliser IO.Stream.
La classe IO.File est elle aussi très pratique.
Commenter la réponse de Utilisateur anonyme
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 4 juin 2012 à 20:25
0
Merci
j'ai inséré le bout de code que tu m'a proposé de cette manière

'#########
Dim myStream As System.IO.Stream
Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
saveFileDialog1.FilterIndex = 2
For Each MonControle As Control In Me.Controls
If MonControle.GetType().GetProperty("Text") IsNot Nothing Then
fichier.writeline(MonControle.Text)
End If


Next
saveFileDialog1.RestoreDirectory = True
If saveFileDialog1.ShowDialog() DialogResult.OK Then myStream saveFileDialog1.OpenFile()
'##################

et j'ai rencontré un problème avec 'fichier.writeline(MonControle.Text)' j'ai l'erreur suivante 'Object variable or With block variable not set'.
Commenter la réponse de f2w1
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 4 juin 2012 à 20:25
0
Merci
[^^sad1]
Commenter la réponse de f2w1
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 4 juin 2012 à 23:13
0
Merci
toujours le même problème ?????
quelle est la solution?!!!
Commenter la réponse de f2w1
Utilisateur anonyme - 5 juin 2012 à 00:03
0
Merci
Bonjour

À l'oeillomètre et pas testé

Private Sub Button2_Click(ByVal sender As System.Object, _ 
ByVal e As System.EventArgs) Handles Button2.Click
   Dim myStream As System.IO.Stream 
   Dim saveFileDialog1 As New SaveFileDialog()
   with saveFileDialog1
      .Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*" 
      .FilterIndex = 2 
      .RestoreDirectory = True 
   end with
   If saveFileDialog1.ShowDialog() = DialogResult.OK Then
      myStream = saveFileDialog1.OpenFile()
      For Each MonControle As Control In Me.Controls 
         If MonControle.GetType().GetProperty("Text") IsNot Nothing Then 
            fichier.writeline(MonControle.Text) 
         End If
      Next 
   end if 
 End Sub 
Commenter la réponse de Utilisateur anonyme
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 5 juin 2012 à 16:36
0
Merci
merci ça fonctionne convenablement
sauf que l'emplacement des 'controls' n'est pas respecté !!!!!!
Commenter la réponse de f2w1
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 5 juin 2012 à 16:47
0
Merci
ouuups
Quand j'ai mis mes 'controls' dans un 'tabcontrol' ça ne fonctionne plus , rien n'est enregistré sauf le nom de la 'tabcontrol' et ce qui est en dehors d'elle
Commenter la réponse de f2w1
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 5 juin 2012 à 19:46
0
Merci
j'ai trouvé la solution pour accéder aux 'contols' de la 'tabpages '
  Dim tb As TabPage
   tb = TabControl1.TabPages(1)
   For Each ctrl As Control In tb.Controls
                    
                      If ctrl.GetType().GetProperty("Text") IsNot Nothing Then _
                      fichier.WriteLine(String.Format("{0}", ctrl.Text))
                                    

    Next

et il me reste l'ordre
Commenter la réponse de f2w1
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 5 juin 2012 à 20:03
0
Merci
puis je enregistrer avec l'extension docx au lieu de txt afin que le fichier s'ouvre directement avec word???????????
comment ça se fait svp
Commenter la réponse de f2w1
Utilisateur anonyme - 5 juin 2012 à 23:54
0
Merci
Si tu affectes un TabIndex à chaque contrôle de ton formulaire, tu peux alors les classer dans l'ordre par le biais d'une requête linq :
Dim requete = From ctrl In tb.Controls Order By DirectCast(ctrl, Control).TabIndex
For Each ctrl As Control In requete
'reste du code inchangé...

puis je enregistrer avec l'extension docx au lieu de txt afin que le fichier s'ouvre directement avec word???????????

Celà n'a rien à voir avec le sujet. Ouvre un nouveau topic.
Commenter la réponse de Utilisateur anonyme
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 6 juin 2012 à 19:29
0
Merci
merci
Commenter la réponse de f2w1
Utilisateur anonyme - 6 juin 2012 à 21:31
0
Merci
Bonsoir f2w1,

J'ai vu que tu as ouvert un nouveau sujet avec la même question.
Qu'est-ce qui t'empêches d'imprimer ces informations à partir d'un fichier txt ?
Commenter la réponse de Utilisateur anonyme
f2w1 28 Messages postés mercredi 3 mars 2010Date d'inscription 25 septembre 2013 Dernière intervention - 8 juin 2012 à 00:04
0
Merci
bonsoir
et merci pour votre attention et votre aide.
Je veux avoir la possibilité d'imprimer sans passer par un fichier (je veux que mon application soit plus flexible)
Commenter la réponse de f2w1

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.