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

VB.NET Discussion :

je n'arrive pas à ajouter multilignes dans un seul champ da ma table access


Sujet :

VB.NET

  1. #1
    Inactif  
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Points : 2
    Points
    2
    Par défaut je n'arrive pas à ajouter multilignes dans un seul champ da ma table access
    Bonjour tout le monde

    je suis débutant, je viens de débuter a développer une application pour le suivi des dossiers d'associations
    je veux que les éléments cochés de ma CheckedListBox soit insérés dans le même champ (pieces_fourni) de ma table (tab_asso) Access
    et ceux qui ne sont pas cochés soit insérés dans le même champ(pieces_manquant) de la meme table
    est ce que quelqu’un peut vérifier avec moi le code j'ai passé pas mal de temps essayant de résoudre ce problème mais sans résultats
    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
    31
    32
    33
    34
    35
    36
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
    cn.Open()
     
    Dim dt As New DataTable
    Dim da As New OleDbDataAdapter
    Dim x, z As Integer
     
    Dim cmd As New OleDbCommand("INSERT INTO tab_asso(id_dossier,denomination,date_recep,nom_prenom,adresse,wilaya,code_wilaya,region,pieces_fourni,pieces_manquant) values('" & TextBox1.Text & "','" & TextBox2.Text & "','" & DateTimePicker1.Value.Date & "','" & TextBox6.Text & "','" & TextBox7.Text & "','" & ComboBox1.Text & "','" & TextBox4.Text & "','" & TextBox5.Text & "','" & CheckedListBox1.Items(x).ToString & ",""',""' , '" & CheckedListBox1.Items(z).ToString & "' ", cn)
     
            cmd.Connection = cn
            da = New OleDbDataAdapter(cmd)
            da.Fill(dt)
            CheckedListBox1.DataSource = dt
            CheckedListBox1.DisplayMember = "dossier_ass"
            CheckedListBox1.ValueMember = "DESIGNATIONS"
            CheckedListBox1.Text = ""
            cmd.CommandType = CommandType.Text
     
            For i = 0 To CheckedListBox1.Items.Count - 1
     
     
                If CheckedListBox1.GetItemChecked(i) = True Then
                    i = x
                Else
                    i = z
                End If
     
            Next
            cmd.ExecuteNonQuery()
     
            MessageBox.Show("Data inserted successfuly")
     
            cn.Close()
     
        End Sub

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 111
    Points : 1 616
    Points
    1 616
    Par défaut
    Je ne suis pas sûr que ce soit une bonne idée de structure de données.... mais bon, il suffit de concaténer les champs dans 2 chaines
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim Chaine_fourni as String, Chaine_manquant as String
    For i = 0 To CheckedListBox1.Items.Count - 1
     
     
                If CheckedListBox1.GetItemChecked(i) = True Then
                    Chaine_fourni &= CheckedListBox1.Items(i).Text
                Else
                    Chaine_manquant &= CheckedListBox1.Items(i).Text
                End If
     
            Next
    ou quelque chose comme ça.

    PS: ta requête n'est pas sécurisée; on pourrait mettre "); drop table tab_asso;" dans un des champs et adieu ta table

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Je suis du même avis que umfred.
    Ta structure n'est pas bonne.

    Et ce, pour 2 raisons très simples.
    La première, tu dois faire un traitement pour transformer tes données dans un sens et dans l'autre.
    La seconde, en cas d'ajout de pièces, tu devras allonger la taille de tes colonnes pieces_fourni et pieces_manquant (au passage si tu dois écrire des nom de colonnes en française, c'est mieux de respecter les accords en genre et en nombre).

    Je pourrai éventuellement rajouter une troisième raison : l'une des informations est inutile.
    Si tu as la liste des pièces et que tu sais lesquelles sont fournies, tu peux aisément déduire celles qui manquent sans avoir besoin de les stocker.

    Je verrai bien une table "association", une table "piece" et une table "lien_piece_association" pour les relier.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 581
    Points : 1 069
    Points
    1 069
    Par défaut
    Bonjour,

    Ne surtout pas utiliser cette possibilités d'Access, car si un jour tu passes sur une base plus robuste cette fonctionnalité n'existe pas.

    Philippe

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 111
    Points : 1 616
    Points
    1 616
    Par défaut
    Tu peux préciser la fonctionnalité dont tu parles?

  6. #6
    Inactif  
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par popo Voir le message
    ... Ta structure n'est pas bonne...

    je dois les stocker pour d’autres traitement sur un autre formulaire

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur .net - Office - Quadiant
    Inscrit en
    Février 2020
    Messages
    581
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur .net - Office - Quadiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2020
    Messages : 581
    Points : 1 069
    Points
    1 069
    Par défaut
    Citation Envoyé par umfred Voir le message
    Tu peux préciser la fonctionnalité dont tu parles?
    Re

    Il s'agit des champs multivalués sous Access : https://access.developpez.com/actu/3...de-Denis-Hulo/

    C'est une aberration d'utiliser ce genre de truc, car si on est amené à changer des SGBD on est mort cela ne respecte pas les règles.

    ONTAYG

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 111
    Points : 1 616
    Points
    1 616
    Par défaut
    Citation Envoyé par brahounidz Voir le message
    je dois les stocker pour d’autres traitement sur un autre formulaire
    Non tu n'as pas besoin de les stocker ainsi, tu dois juste savoir si les pièces ont été fournies ou pas, pour un dossier; donc tu peux récupérer une liste des documents manquants par une requête et ensuite traiter cette liste.

  9. #9
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Citation Envoyé par ONTAYG Voir le message
    Re
    Il s'agit des champs multivalués sous Access : https://access.developpez.com/actu/3...de-Denis-Hulo/
    C'est une aberration d'utiliser ce genre de truc, car si on est amené à changer des SGBD on est mort cela ne respecte pas les règles.
    ONTAYG
    Sauf que personne n'avait évoqué les champs multivalués.


    Citation Envoyé par brahounidz Voir le message
    je dois les stocker pour d’autres traitement sur un autre formulaire
    Non.
    Et j'ai déjà expliqué pourquoi.
    Citation Envoyé par popo Voir le message
    Si tu as la liste des pièces et que tu sais lesquelles sont fournies, tu peux aisément déduire celles qui manquent sans avoir besoin de les stocker.
    Dans la structure que j'ai proposé, tu sais qu'une pièce est fournie pour une association par qu'il existe un enregistrement dans dans la table "lien_piece_association" portant l'id de l"association et l'id de la pièce.
    Dans la structure que j'ai proposé, tu sais qu'une pièce est est manquante pour une association par qu'il N'existe PAS d'enregistrement dans dans la table "lien_piece_association" portant l'id de l"association et l'id de la pièce.

  10. #10
    Inactif  
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par popo Voir le message
    Sauf que personne n'avait évoqué les champs multivalués.



    Non.
    Et j'ai déjà expliqué pourquoi.

    Dans la structure que j'ai proposé, tu sais qu'une pièce est fournie pour une association par qu'il existe un enregistrement dans dans la table "lien_piece_association" portant l'id de l"association et l'id de la pièce.
    Dans la structure que j'ai proposé, tu sais qu'une pièce est est manquante pour une association par qu'il N'existe PAS d'enregistrement dans dans la table "lien_piece_association" portant l'id de l"association et l'id de la pièce.
    et comment coder ce schéma?

  11. #11
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    De la même manière que tu as créé ta table "tab_asso" pour la structure de la base.

    Avec une simple requête de sélection pour aller chercher les données.
    Si tu ne sais pas comment faire, il serait préférable de te former avant d'attaquer un projet.

  12. #12
    Inactif  
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2020
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    j'ai fais une requête de sélection sur la table dossier associer a ma requête d'insertion, j'ai eu un autre message d'erreur
    Nom : erreur2.PNG
Affichages : 45
Taille : 62,8 Ko

  13. #13
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    La seule requête de sélection visible est mise en commentaire.
    Elle n'a donc aucun impact sur le reste.

    Et le message d'erreur est pourtant clair !
    Il manque un point virgule à la fin d'une requête.


    Sauf que tu n'avais déjà pas de point virgule sur ton premier code.
    Je soupçonne que tu as rajouté une requête de sélection à la suite de la première dans ta commandes.
    Rassure-moi, tu n'as pas fait ça !

    En plus, je ne l'avais pas vu auparavant mais tu passes par une requête d'insertion pour remplir ton IHM.
    Cela signifie que tu insères avant même que l'utilisateur puisse choisir de cocher ou décocher des éléments.

    Sans parler du fait que x et z ne sont pas initialisés, donc à 0.
    Ils le sont toujours lorsque tu les utilises dans CheckedListBox1.Items(x).ToString dans ta requête.
    Ils le sont toujours lorsque tu les affectes à i dans ta boucle.
    Ce i étant la variable incrémentée dans ta boucle !
    C'est une erreur grossière qui montre que tu ne maitrises pas les bases.

    Bref, je le redis : il faut te former avant d'attaquer un projet.

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 111
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 111
    Points : 1 616
    Points
    1 616
    Par défaut
    Qu'est-ce qui a changé entre ce code et celui de ton autre sujet (https://www.developpez.net/forums/d2.../#post12005712) pour que le message soit différent.

    En principe, il n'y a pas besoin de point-virgule à la fin d'une requête seule; mais si tu as mis 2 requêtes à la suite, alors oui, il faut un point virgule au moins entre les 2 requêtes. (je vois aussi qu'il y a une double parenthèse ouvrante avant la requête, pourquoi ?)
    (la limite de la capture écran, c'est qu'on ne voit pas ton code en entier, donc on doit émettre des hypothèses)

Discussions similaires

  1. [AC-2013] Recherche de plusieurs valeurs dans un seul champ d'une table de jonction
    Par Vijinn dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 12/09/2017, 11h33
  2. Je n'arrive pas à poster dans une rubrique
    Par Virginia95 dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 25/06/2014, 14h25
  3. je n'arrive pas a ecrire dans un fichier !
    Par lucastof dans le forum C
    Réponses: 1
    Dernier message: 01/11/2011, 09h17
  4. [FTP] je n'arrive pas à uploader dans un dossier
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 11/03/2008, 01h57
  5. j'arrive pas a inserer dans une table vide
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 16
    Dernier message: 03/05/2005, 14h24

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