none
Remplir une base de données à partir des valeurs d'un Textbox dans visual studio RRS feed

  • Question

  • Bonjour,

    j'ai créé une base de données dans visual studio et j'aimerais la remplir à partir de données issues d'une textbox.

    Merci par avance pour vos réponses.

    PS1: J'utilise visual basic comme language de programmation

    PS2: Si en plus de la solution vous pouvez expliquer chaque ligne  pour que je puisse comprendre j'en serai ravis!

    dimanche 3 juillet 2016 10:14

Réponses

  • Module Module1
        Function traitement(Nom, Da, del, faut)
            Dim marequete = "INSERT INTO Table(Nom,Da,Del,Faut) Values (?,?,?,?)"
            Dim DataSource = "C:\Users\gér\Desktop\Signal\Hor.accdb"
            Dim cn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DataSource)
            Dim cmd As New OleDb.OleDbCommand
    
            Try
                cn.Open()
                cmd.Connection = cn
                cmd.CommandText = marequete
                With cmd.Parameters
                    .AddWithValue("?", aut)
                    .AddWithValue("?", se)
                    .AddWithValue("?", deb)
                    .AddWithValue("?", faut)
                End With
                cmd.ExecuteNonQuery()
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Function
    End Module

    Merci à tous

    AsIaM237




    • Marqué comme réponse AsIaM237 lundi 4 juillet 2016 12:39
    • Modifié AsIaM237 lundi 18 juillet 2016 12:59
    lundi 4 juillet 2016 12:38

Toutes les réponses

  • Votre question est très générale...

    Il faudrait montrer le code que vous avez déjà pour accéder à votre base de données et pour traiter votre TextBox.

    On pourra vous aider ensuite.

    lundi 4 juillet 2016 09:07
  • Bonjour AsIaM237,

    Cependant, vous pouvez consulter le thread suivant :
    Inserting values into table from textboxes & from another table's foreign key C#
    Je vous remercie par avance de votre retour.

    Cordialement,
    Teodora


    Votez! Appel à la contribution TechNet Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 4 juillet 2016 09:10
    Modérateur
  • Bonjour AslaM237,

    Pour faire suite à la réponse de Cyrille Precetti, vous avez plusieurs moyens pour communiquer avec une base de données en .Net : via ADO.NET ou un ORM. De le premier cas, vous communiquerez à votre base des données en envoyant des requêtes SQL via des objets .Net et dans le second cas, votre base de données sera mappé dans une relations d'entités et d'objets permettant une manipulation directement via le code.

    Cordialement

    lundi 4 juillet 2016 09:14
  • Bonjour Teodora,

    Merci de votre réponse, elle semble correspondre à ce que je veux donc je vais la testé pour voir...

    Pourriez-vous cependant jeter un coup d'œil à ma réponse à Cyrille plus haut?

    Merci par avance.


    AsIaM237


    • Modifié AsIaM237 lundi 18 juillet 2016 12:55
    lundi 4 juillet 2016 09:48
  • Bonjour Arthur,

    Merci pour votre réponse. Je ne maitrise vraiment pas les connections aux bases de données donc je suis loin de comprendre la différence entre les méthodes que les différents moyens de connection...


    AsIaM237


    • Modifié AsIaM237 lundi 18 juillet 2016 12:55
    lundi 4 juillet 2016 09:51
  • Bonjour Cyrille,

    Le problème pour moi justement est la connexion à la base de données depuis Visual studio.

    J'ai lu quelques trucs sur internet mais pour le moment j'y arrive pas!

    J'ai par exemple trouvé cet exemple qui colle au mien:

        Sub InsertLocataire()
            Dim MaRequete As String = "INSERT INTO LOCATAIRES (Nom, Adresse,Ville,Pays) VALUES (?,?,?,?)"
            Dim DataSource = "C:\Users\ROLAND KOFFI\Documents\Visual Studio 2010\Projects\WindowsApplication3_LOYERS\WindowsApplication3_LOYERS\GestionLoyers1.accdb"
            Using cn As New OleDbConnection("PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source =" & DataSource), cmd As New OleDbCommand(MaRequete, cn)
                With cmd.Parameters
                    .AddWithValue("?", Me.txtNom.Text)
                    .AddWithValue("?", Me.txtAdresse.Text)
                    .AddWithValue("?", Me.txtVille.Text)
                    .AddWithValue("?", Me.txtPays.Text)
                End With
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                Catch ex As Exception
                    MsgBox(ex.ToString)
                End Try
            End Using
        End Sub

    Mais je ne le comprend pas trop, en plus y a des commandes tels que OleDbConnection et OleDbCommand qui n'existent pas chez moi.

    Merci par avance 


    AsIaM237


    • Modifié AsIaM237 lundi 18 juillet 2016 12:54
    lundi 4 juillet 2016 09:52
  • Bonjour,

    Par exemple, le morceau de code que vous avez fourni ci-dessus correspond à du ADO.NET, avec un provider pour des bases de données comme  SQL Server, Microsoft Access, ou Microsoft Excel. Vous pouvez retrouver une liste ici. Dans le cas d'ADO.NET, on respecte le schéma suivant :

    • On indique la chaîne de connection (fournit dans Visual Studio)
    • On passe une requête SQL sous forme de string à cette connexion
    • On ouvre
    • On exécute
    • On ferme

    Si vous voulez commencer, je vous conseille de vous tourner vers ADO.NET, c'es très simple à prendre en main.

    Cordialement,

    lundi 4 juillet 2016 09:57
  • Re-bonjour Arthur,

    Merci pour l'explication!

    Voici ce que j'ai fait, mais apparamment il y a un problème au niveau du provider...J'ai juste copié et collé ce que j'avais dans mes paramètres...

    Module Module1

        Function traitement()
            Dim marequete = "INSERT INTO table(Jour,temps,Debut,Fin) Values (?,?,?,?)"
            Dim DataSource = "C:\Users\géraud\Desktop\MyProject\Horizchx\Horizchx\HorizDataChxDataSet1.xsd"
            Using cn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\HorizDataChx.accdb" & DataSource), cmd As New OleDb.OleDbCommand(marequete, cn)
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                Catch ex As Exception
                    MsgBox(ex.ToString)
                End Try
            End Using

        End Function
    End Module

    AsIaM237


    • Modifié AsIaM237 lundi 18 juillet 2016 12:54
    lundi 4 juillet 2016 10:30
  • Dans le bout de code original, l'auteur utilise ce qu'on appelle requête préparée. D'où les points d'interrogations dans le SQL (ici dans le INSERT). Comme vous lui fournissez la syntaxe d'une requête préparée, il s'attend à ce que vous lui donniez les paramètres correspondants  (comme dans le bloc With cmd.Parameters).

    Du coup, soit vous continuez à utiliser cette syntaxe, soit vous rentrez directement les valeurs en dur de cette façon :

     "INSERT INTO table(Jour,temps,Debut,Fin) Values (1,'valeur','valeur','valeur')"

    Cordialement,

    lundi 4 juillet 2016 11:33
  • ça je crois l'avoir compris, je l'ai juste pas recopié! Le problème que je pose se situe au niveau du "Provider" pour lequel l'application me retrourne un message d'erreur pour le format invalide du chemin d'accès...

    AsIaM237


    • Modifié AsIaM237 lundi 18 juillet 2016 12:54
    lundi 4 juillet 2016 11:55
  • Module Module1
        Function traitement(Nom, Da, del, faut)
            Dim marequete = "INSERT INTO Table(Nom,Da,Del,Faut) Values (?,?,?,?)"
            Dim DataSource = "C:\Users\gér\Desktop\Signal\Hor.accdb"
            Dim cn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DataSource)
            Dim cmd As New OleDb.OleDbCommand
    
            Try
                cn.Open()
                cmd.Connection = cn
                cmd.CommandText = marequete
                With cmd.Parameters
                    .AddWithValue("?", aut)
                    .AddWithValue("?", se)
                    .AddWithValue("?", deb)
                    .AddWithValue("?", faut)
                End With
                cmd.ExecuteNonQuery()
            Catch ex As Exception
                MsgBox(ex.ToString)
            End Try
        End Function
    End Module

    Merci à tous

    AsIaM237




    • Marqué comme réponse AsIaM237 lundi 4 juillet 2016 12:39
    • Modifié AsIaM237 lundi 18 juillet 2016 12:59
    lundi 4 juillet 2016 12:38
  • Super,

    Svp marquez les post qui ont aidés et la réponse pour clore le sujet.

    lundi 4 juillet 2016 12:40
  • C'est fait je crois!

    J'ai "marquer comme réponse". C'est suffisant j'espère...


    AsIaM237


    • Modifié AsIaM237 lundi 18 juillet 2016 12:53
    lundi 4 juillet 2016 13:06