IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Formulaire pour la saisie simultanée d'enregistrements : besoin d'aide svp


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut Formulaire pour la saisie simultanée d'enregistrements : besoin d'aide svp
    J’ai une table composée des champs suivant : Termini, Quantité, Prix.

    Il y a, pour chaque Termini, 8 quantités différentes, ce qui veut dire 8 prix différents mais aussi 8 enregistrements par Termini.

    Exemple :

    Termini---Quantité---Prix

    A------------1----------10
    A------------3----------20
    A------------5----------30
    A------------10---------40
    A------------25---------110
    A------------50---------200
    A------------100--------350
    A------------250--------500

    B------------1----------10
    B------------3----------20
    B------------5----------30
    B------------10---------40
    B------------25---------110
    B------------50---------200
    B------------100--------350
    B------------250--------500

    ETC ETC

    Je souhaite dans faire créer un formulaire pour la saisie d’un nouveau Termini, je souhaite pour cela ne devoir entrer qu’une seule fois le termini et ensuite saisir les prix :

    ?------------1---------- ?
    -------------3---------- ?
    -------------5---------- ?
    -------------10--------- ?
    -------------25--------- ?
    -------------50--------- ?
    -------------100-------- ?
    -------------250-------- ?
    Les points d’interrogations seraient les champs à renseigner dans le formulaire.

    Ensuite, après avoir cliqué sur un bouton de commande, ces nouvelles informations viendraient simultanément dans la table Terminis comme par exemple :

    A------------1----------10
    A------------3----------20
    A------------5----------30
    A------------10---------40
    A------------25---------110
    A------------50---------200
    A------------100--------350
    A------------250--------500

    B------------1----------10
    B------------3----------20
    B------------5----------30
    B------------10---------40
    B------------25---------110
    B------------50---------200
    B------------100--------350
    B------------250--------500

    C------------1----------15
    C------------3----------30
    C------------5----------50
    C------------10---------90
    C------------25---------210
    C------------50---------300
    C------------100--------450
    C------------250--------600

    J’ai cherché dans le FAQ mais je ne trouve rien que je comprenne et que je puisse adapter, et j’ai aussi cherché sur le forum mais c’est la même chose. J’ai lu que peut-être l’instruction Insert Into pourrait m’aider. , mais étant débutant sur Access même avec l’aide Access je n’y arrive pas.

    J’espère vraiment que vous pourrez m’aider à solutionner mon problème.

    Merci à l’avance.

  2. #2
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,

    Voici une petite solution......

    -1) Tu crée un formulaire indépendant avec les champs indépendants suivants:
    .......txtTermini (saisie du Termini)

    .......Qu1 (propriété par défaut = 1)
    .......Qu2 (propriété par défaut = 3)
    .......Qu3.....la même chose jusqu'à Qu8 (change simplement les valeurs par défaut)

    ......Prix1
    ......Prix2
    ......Prix3.....la même chose jusqu'à Prix8

    [ATTENTION] Bien sur tu peux changer les noms des champs, mais il faut obligatoirement qu'ils se terminent par 1 jusqu'à 8

    Sur ton bouton de contrôle (cmdEnregistrer) qui va permettre l'enregistrement dans ta table (T_Termini):
    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
    Private Sub cmdEnregistrer_Click()
    Dim I As Byte
    Dim sSQL As String
    'Suppression message d'avertissement
    DoCmd.SetWarnings False
     
    'Ici je boucle 8 fois sur mes champs
    For I = 1 To 8
        sSQL = "INSERT INTO T_Termini(Termini,Quantite,Prix)" _
        & "values(txtTermini,Qu" & I & ",Prix" & I & ")"
        DoCmd.RunSQL sSQL
    Next
     
    'Activation message d'avertissement
    DoCmd.SetWarnings True
    End Sub
    Avec cette "solution", tu n'a plus qu'à saisir la lettre du Termini et les prix dans les différents champs....
    ATTENTION, je n'ai pas fais de vérification pour savoir si les champs sont correctement remplis.....

    En espérant que cela réponde en partie à ton problème.....
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    Merci cela fonctionne, j’ai cependant encore un petit problème, ma table Terminis est correctement remplis mais avec le même contrôle, c’est-à-dire Termini, j’aimerais aussi enregistrer un nouvel enregistrer dans une table, j’ai fait une autre requête sql mais cela ne fonctionne, décidemment je ne suis pas très doué.

    Voici le code

    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
    Private Sub Enregistrer_Click()
     
    Dim I As Byte
    Dim sSQL As String
    Dim tSQL As String
     
    'Suppression message d'avertissement
     
    DoCmd.SetWarnings False
     
    'Ici je boucle 8 fois sur mes champs
     
    For I = 1 To 8
     
        sSQL = "INSERT INTO Terminis(Termini,Quantité,Prix)" _
        & "values(Termini,Quantité" & I & ",Prix" & I & ")"
        DoCmd.RunSQL sSQL
     
     
        tSQL = "INSERT INTO Contact(Reference contact, Designation contact)" _
        & "values(Termini,Designation)"
        DoCmd.RunSQL tSQL
     
    Next
     
    'Activation message d'avertissement
    DoCmd.SetWarnings True
    End Sub
    Et Access me trouve une erreur sur cette ligne

    DoCmd.RunSQL tSQL

    Je ne voie pas où est l'erreur.

  4. #4
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    J'ai changer un peu le code en ajoutant un bouton spécifique pour l'enregistrement dans ma deuxième table

    J'ai toujours une erreur sur la ligne :
    Le message d'erreur est le suivant :
    Instruction SQL non valide : 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' ou UPDATE attendus

    Voici mon code :

    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
    Option Compare Database
    Private Sub Enregistrer_Click()
     
    Dim I As Byte
    Dim sSQL As String
     
     
    'Suppression message d'avertissement
     
    DoCmd.SetWarnings False
     
    'Ici je boucle 8 fois sur mes champs
     
    For I = 1 To 8
     
        sSQL = "INSERT INTO Terminis(Termini,Quantité,Prix)" _
        & "values(Termini,Quantité" & I & ",Prix" & I & ")"
     
        DoCmd.RunSQL sSQL
     
    Next
     
    'Activation message d'avertissement
    DoCmd.SetWarnings True
    End Sub
    Private Sub Enregistrer2_Click()
     
    Dim tSQL As String
     
    'Suppression message d'avertissement
     
    DoCmd.SetWarnings False
     
     
        sSQL = "INSERT INTO Contact(Reference contact,Designation contact)" _
        & "values(Termini,Designation)"
     
        DoCmd.RunSQL tSQL
     
    'Activation message d'avertissement
    DoCmd.SetWarnings True
    End Sub

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Points : 62
    Points
    62
    Par défaut
    Bonjour

    Tu définis

    sSQL = "INSERT INTO Contact(Reference contact,Designation contact)" & "values(Termini,Designation)"

    et tu appelles tSQL DoCmd.RunSQL tSQL

    Ce ne serais pas plutôt

    DoCmd.RunSQL sSQL

    Christophe

  6. #6
    Membre éclairé Avatar de ft035580
    Profil pro
    Inscrit en
    Août 2004
    Messages
    689
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 689
    Points : 799
    Points
    799
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sSQL = "INSERT INTO Contact(Reference contact,Designation contact)" _
        & "values(Termini,Designation)"
     
        DoCmd.RunSQL tSQL
    deviendrait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tSQL = "INSERT INTO Contact(Reference ,Designation )" _
        & "values(TxtTermini,TxtDesignation)"
     
        DoCmd.RunSQL tSQL
    TxtTermini et TxtDesignation sont tes 2 zones de texte de ton formulaire.

  7. #7
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour,

    Bien content que cette "solution" réponde à ton problème....

    Sinon, pourquoi faire deux contrôles pour remplir tes deux tables...

    Sur le même événement de ton bouton de commande "cmdEnregistrer", dans un premier temps tu enregistre dans la table "Termini" puis en fin de boucle (après le next) tu exécute l'enregistrement dans ta deuxième table "Contact":
    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
    Private Sub cmdEnregistrer_Click()
    Dim I As Byte
    Dim sSQL As String
    Dim tSQL As String
     
    'Suppression message d'avertissement
    DoCmd.SetWarnings False
     
    'Enregistrement dans la table "Termini"
    'Ici je boucle 8 fois sur mes champs
    For I = 1 To 8
        sSQL = "INSERT INTO T_Termini(Termini,Quantite,Prix)" _
        & "values(txtTermini,Qu" & I & ",Prix" & I & ")"
        DoCmd.RunSQL sSQL
    Next
     
    'Puis enregistrement dans la table "Contact"
    tSQL = "INSERT INTO Contact(Reference ,Designation )" _
        & "values(TxtTermini,TxtDesignation)"
    DoCmd.RunSQL tSQL
     
    'Activation message d'avertissement
    DoCmd.SetWarnings True
    End Sub
    Voila, en une seule action tu réalise l'ensemble des enregistrements...

    Par contre, comme dit précédemment, n'oublie pas de faire un contrôle de saisie sur tes champs.....du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'AVANT validation verifie que tous les champs sont remplis
    If (IsNull(Termini) Or (Termini = vbNullString)) Or (IsNull(Prix1) _
     Or (Prix1 = vbNullString)) Or (IsNull(Prix2) Or (Prix2 = vbNullString)) Then
        MsgBox "La saisie de tous les champs est OBLIGATOIRE avant validation", 48, "Saisie incomplète"
        Exit Sub
    Else
    Tu peux également opter pour un contrôle de ce type:
    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
    'AVANT validation verifie que tous les champs sont remplis
    If Me.Termini.Value = "" Then
         MsgBox "Le champ Termini doit être rempli"
         Me.Termini.SetFocus
         End Sub
    If Me.Prix1.Value ="" Then
         MsgBox "Le champ Prix doit être rempli"
         Me.Prix1.SetFocus
         End Sub
    .....
    .....
    .....
    Else
    'Ici début du code d'enregistrement
     
    Exit Sub
    Bonne continuation...
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  8. #8
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 91
    Points : 41
    Points
    41
    Par défaut
    Merci pour vos réponses, pour l'inversion entre le T et le S pour l'appel de la fonction, j'avais pas fait attention merci.

    Mais j'avais toujours le problème sur la même ligne.

    J'ai donc changer le nom des champs dans ma table qui comportaient des espaces et cela fonctionne.

    Si cela peux aider quelqu'un, voici le code :

    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
    Private Sub Enregistrer_Click()
     
    Dim I As Byte
    Dim tSQL As String
    Dim sSQL As String
     
     
    'Suppression message d'avertissement
     
    DoCmd.SetWarnings False
     
    'Ici je boucle 8 fois sur mes champs
     
    For I = 1 To 8
     
        sSQL = "INSERT INTO Terminis(Termini,Quantité,Prix)" _
        & "values(Termini,Quantité" & I & ",Prix" & I & ")"
     
        DoCmd.RunSQL sSQL
     
    Next
     
        tSQL = "INSERT INTO Contact(Reference,Designation)" _
        & "values(Termini,Designation)"
     
        DoCmd.RunSQL tSQL
     
    'Activation message d'avertissement
    DoCmd.SetWarnings True
    End Sub
    Merci à tous pour votre aide

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

Discussions similaires

  1. Obliger l'utilisation du formulaire pour la saisie
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/04/2013, 12h36
  2. [MySQL] Creation formulaire pour integré a un site joomla..besoin de suggestion
    Par naytobe dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/11/2010, 14h00
  3. [AC-2007] simplifer mon formulaire pour la saisie
    Par tibofo dans le forum IHM
    Réponses: 1
    Dernier message: 12/07/2010, 09h49
  4. MsgBox pour signal Accès simultané à un enregistrement
    Par dfournier dans le forum Sécurité
    Réponses: 1
    Dernier message: 12/04/2007, 14h43
  5. [MySQL] Un formulaire pour afficher et modifier un enregistrement
    Par Atchoum_002 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/09/2005, 14h13

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