Enregistrer les information d'une forme

Résolu
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013 - 4 juin 2012 à 17:22
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013 - 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

16 réponses

Utilisateur anonyme
5 juin 2012 à 00:35
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
3
Utilisateur anonyme
4 juin 2012 à 18:23
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))
'...
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
4 juin 2012 à 19:06
svp expliquer d'avantage parce que je suis débutant et je n'arrive pas à comprendre merci
0
Utilisateur anonyme
4 juin 2012 à 19:40
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
4 juin 2012 à 20:25
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'.
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
4 juin 2012 à 20:25
[^^sad1]
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
4 juin 2012 à 23:13
toujours le même problème ?????
quelle est la solution?!!!
0
Utilisateur anonyme
5 juin 2012 à 00:03
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 
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
5 juin 2012 à 16:36
merci ça fonctionne convenablement
sauf que l'emplacement des 'controls' n'est pas respecté !!!!!!
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
5 juin 2012 à 16:47
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
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
5 juin 2012 à 19:46
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
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
5 juin 2012 à 20:03
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
0
Utilisateur anonyme
5 juin 2012 à 23:54
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.
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
6 juin 2012 à 19:29
merci
0
Utilisateur anonyme
6 juin 2012 à 21:31
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 ?
0
f2w1 Messages postés 28 Date d'inscription mercredi 3 mars 2010 Statut Membre Dernière intervention 25 septembre 2013
8 juin 2012 à 00:04
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)
0
Rejoignez-nous