[VB] aider moi a enregistrer mes donnes ??

bonjour, je suis une debutante en vb.

j'ai creer une petite application en vb,qui consiste à entrer des indicaterus et des mesures.

Mon probleme c que une fois je quitte l'application rien n'est enregistrer.

je veux savoir comment les enregistrer????

merci.

17 réponses

  1. Salut =)

    Pour stocker des données, tu as le choix entre :
    -> un fichier
    ->une base de données

    Evidemment, si dans ton appli tu mets ça dans une liste et que quitte l'appli, les données ne sont stockées nulle part. Il faut donc les écrire dans un fichier (plus simple, mais s'il y a bcp de données vite chiant) ou dans une base de données (+ dur, mais + sûr, + structuré, + tout quoi !)

    voili voilou
    1
    1. bonjour,
      est ce que tu peux me dire comment je peux effectuer cette commande d'enregistrement sur une base.

      MOi,mon programme demande à l'utilisateur d'entrer des donnés sous forme de valeur ,ces donnees je veux les enregistrer, pour qu'il puisse les ouvrir aprés.
      0
  2. Bonjour,

    Pour enregistrer sur un fichier dans votre cas, c est plus facile les fichier a accès séquentiel, il faut juste respecter l'ordre de saisie des données qui doit être le même que celui de les charger exemple

    strFile = "C:\" & strFile & ".dat"

    Open strFile For Random As #1

    Put #1, 1, P0
    Put #1, 2, BAT10
    Put #1, 3, TVA0
    Put #1, 4, BAT1
    Put #1, 5, TVA
    Close #1

    le nom du fichier où sauvegarder strFile doit être évidement déclaré comme string

    pour recharger les données
    Open strFile For Random As #1

    Get #1, 1, P0
    Get #1, 2, BAT10
    Get #1, 3, TVA0
    Get #1, 4, BAT1
    Get #1, 5, TVA

    txtP0.Value = P0
    txtBAT10.Value = BAT10
    txtTVA0.Value = TVA0
    txtBAT1.Value = BAT1
    txtTVA.Value = TVA
    Close #1

    Voila facile et efficace
    1
    1. salut
      aprés avoir établie la connection entre ton prog et ta base de donnée (je te conseil d'utiliser la technologie ADO)
      prosédes comme suit
      rs.addnew
      ecrire
      rs.update

      rs c'est les enregistrements et ecrire c'est une procédure pour remplir ta base de donnée par exemple tu peut la définir (je ne connait pas tes donnée )comme suit:
      sub ecrire()
      rs!poids =text1.text
      rs!age=text2.text
      end sub
      et pour les afficher tu crée une procedure pour l'affichage
      par expl
      sub afficher ()
      text1.text=rs!poids
      text2.text=rs!age
      end sub
      j'éspére que ça va marcher
      a+
      0
      1. bonjour,
        mes donnees se sont des single(taux de marge,taux de benefice....).
        donc si j'ai bien compris il faut que je fait connection avec une base vide je réalise les:

        rs.addnew
        ecrire
        rs.update

        j'ai pas compris le fonctionnenment de " rs".elle est déclaré par défaut?

        sub ecrire()
        rs!taux de bénéfice =text1.text
        rs!estimation=text2.text
        end sub

        c'est correcte comme ca?
        0
    2. j'ai oublié de te dire que j'ai trouve une demi solution sans base c'est dans la commande enregistrer sous j'écrit:

      Open ("C:\form.frm") For Output As #1
      Close #1

      Mais l'erreur est: "l'entréé dépasse la fin de fichier" c:\form.frm".
      0
      1. Salut =)

        en fait rs = Enregistrement. je ne connais pas sépcialement le VB, mais je ne pense pas que ce soit déclaré sans rien faire. Dans une base de données, quand tu ajoutes une ligne de données, on appelle ça un enregistrement.

        Sinon, tu as bcp de données à stocker ? si tu n'en as pas bcp, tu px en effet stocker dans un fichier ce sera bcp plus simple.
        Et de même, je ne sais pas comment on fait pour lire et écrire dans un fichier en VB.
        0
        1. merci beaucoup,
          je vais essayer de creer une base.
          encore merci
          0
          1. salut khouloude

            je te donne un petit exemple j’éspére que ca va être utile pour toi
            tu va dans projet de la barre d’outil tu click sur références et tu coche la case (microsoft Active X Data Objects 2.0 library ) c la référence qui va te pérmettre de réaliser la connection avec ta base aprés, tu ajoute un module + ta forme éxistante

            dans ta partie de module

            Global db As ADODB.Connection
            Global rs As ADODB.Recordset
            Sub connexion() 'procedure qu'on va utiliser dans la form pour etablir la cnnection
            entre la base et le prog
            Set db = New ADODB.Connection
            With db
            .Provider = "microsoft.jet.oledb.4.0"
            .ConnectionString = "c:\btissam.mdb" 'btissam c le nom de la base de données
            .CursorLocation = adUseClient
            .Open
            End With
            End Sub
            Sub deconnexion() 'procedure pour la déconnection qu'on va utiliser dans la form
            db.Close
            Set db = Nothing
            End Sub

            dans ta partie form

            Private Sub ecrire() 'procédure pour le remplissage de la base
            rs!nom = nom.Text
            rs!prenom = prenom.Text
            rs!tel = tel.Text
            End Sub
            Private Sub afficher() 'procédure pour l'affichage
            nom.Text = rs!nom
            prenom.Text = rs!prenom
            tel.Text = rs!tel
            End Sub

            Private Sub ajouter_Click()
            rs.AddNew
            ecrire
            rs.Update
            End Sub

            Private Sub dernier_Click()
            rs.MoveLast
            afficher
            End Sub
            Private Sub clean()
            nom = ""
            prenom = ""
            tel = ""
            nom.SetFocus
            End Sub

            Private Sub effacer_Click()
            clean
            End Sub

            Private Sub Form_Load()
            connexion
            Set rs = New ADODB.Recordset
            rs.Open "select * from betty", db, adOpenDynamic, adLockOptimistic ‘betty c le nom de la table utilisée

            afficher
            End Sub

            Private Sub modifier_Click()
            ecrire
            rs.Update
            End Sub

            Private Sub precedent_Click()
            rs.MovePrevious
            If rs.BOF Then
            rs.MoveFirst
            End If
            afficher
            End Sub

            Private Sub premier_Click()
            rs.MoveFirst
            afficher
            End Sub

            Private Sub quitter_Click()
            Dim rep As String * 20
            rep = MsgBox("êtes vous sûre de vouloir quitter?", vbQuestion + vbOKCancel)
            If rep = vbOK Then

            Unload Me
            deconnexion
            End If
            End Sub

            Private Sub suivant_Click()
            rs.MoveNext
            If rs.EOF Then
            rs.MoveLast
            End If
            afficher
            End Sub

            Private Sub supprimer_Click()
            rs.Delete
            rs.MoveNext
            If rs.EOF Then
            rs.MoveFirst
            End If
            End Sub

            une chose pour le remplissage ou l’affichage on utilise par exemple (rs!tel) . ce qui est écrit aprés le rs doit correspendre au champs de ta base (même écriture) par exemple (tel) c un champ dans ma table betty de la base btissam j'éspére que ça va marcher cette fois a+
            0
            1. salut btissam,merciiiiii beaucoup pour ton aide.
              juste une question la procedure ajouter, c pour ajouter un enregistrement dans la base ?
              si oui elle ne marcher pas.j'ajoute dans les textebox mais dans la base ya rien.
              encore merciiiiii
              0
          2. salut btissam,merciiiiii beaucoup pour ton aide.
            juste une question la procedure ajouter, c pour ajouter un enregistrement dans la base ?
            si oui elle ne marcher pas.j'ajoute dans les textebox mais dans la base ya rien.
            encore merciiiiii
            0
            1. salut
              juste une petite astuce grammaticale:
              pour savoir si un verbe se conjugue à l'infinitif,
              (aider moi , rien n'est enregister)
              ou au participe passé, voire à l'impératif
              (aidez moi, rien n'est enregistré)
              une astuce:
              utiliser un verbe du 2e/3e groupe comme vendre, servir
              exemple :
              (servez moi, rien n'est vendu)
              est bien plus correct à l'oreille que
              (servir moi, rien n'est vendre)
              étonnant non ?

              sinon, pour les fichier, dans l'aide de VB
              voir open, read, write, close
              une base de donnée ? est-ce bien nécessaire ?

              cordialement, et désolé pour la disgression
              0
              1. pour la base oui il le faut.
                pour les fichier c pas ma question comment l'ouvrir mais de copier des donnes et des enregistrement.
                ps
                c un frum de programmation non????
                0
                1. c un frum de programmation non????

                  en effet. mais si tu dis ça par rapport à la remarque de blurk concernant la syntaxe de tes messages, il a tout à fait raison. Malgré que ce soit un forum de programmation, il est toujours plus facile et plus agréable d'aider une personne qui s'exprime correctement.

                  En fait, j'appelerais ça tout simplement du respect.
                  0
              2. salut khouloud
                pour la pocédure ajouter permet d'ajouter les données dans ta base de donnée. Mais je ne sais pas ou est le prob car avec ce code ca marche chez moi
                peut être que dans la procédure écriture et affichage t'a eu des contrainte par exemple dans la procédure écriture ta une ligne comme suit
                rs!nom = nom.Text
                le 2éme "nom" prés de text c le nom de la zone text tu peux la changer par text1 ou selon le nom de ta zone text. c le même truc dans ta procédure afficher
                a+
                0
                1. salut btissam2,

                  juste une question au niveau de la form je veux ouvrir deux table,est ce que j'écris:
                  Private Sub Form_Load()
                  connexion
                  Set rs = New ADODB.Recordset
                  rs.Open "select * from bd1", db, adOpenDynamic,adLockOptimistic

                  rs.Open "select * from bd2", db, adOpenDynamic,adLockOptimistic

                  afficher
                  End Sub
                  0
                  1. salut khouloud
                    en réalité j 'ai jamais utiliser 2 tables dans la même form. pour chaque table je fait une nouvelle connexion (dans une nouvelle form) . mais au niveau du module je le laisse tel qu'il est. je ne sais pas. essayes ta méthode et si elle ne marche pas essayes la mienne
                    a+
                    0
                    1. voila je commence avec le vb.
                      J'ai créer une interface, les utilsateurs remplice des cases (peu) mais j'aimerai qu'ils puissent enregistrer leur travail. Pour ça j'ai deja créer un menu fichier - enregistrer dans la barre des taches mais je ne c pas comment faire des fichiers

                      merci d'avance pour votre aide
                      0
                      1. salut khouloud tu dois lire des cours sur la technologie ADO, tu dois comprendre les methodes de connexion et les controles qui vous aides à le faire, cherche à savoir à quoi sert ces controle: ADOD, DATA et tu dois aussi chercher à koi sert les concepteurs, genre DATAENVIRONEMENT, et DATAREPORT, ces controles sont des controles active-x disponible avec la version 6 de VB. tu pe toujours consulter MSDN qui te donnera tous les exemples de code et d'application dont tu a besoin pour faire des programmes basés sur des bases de données.
                        n'oublie surtt que tu dois avoir des notions en SQL (structured querry language), cherche sur comment ça marche tu torouvera des cours pour cela, et bon chance :)
                        0