none
texte d'une Textbox vers BDD RRS feed

  • Question

  • Bonjour,

     

    Mon problème est ultra simple et pourtant je ne trouve aucune solution, cela fait deux jours que je parcours aide et forums...

     

    - J'ai créé une BDD, cette BDD contient une table nommée Table_TRANSPORTEUR, qui elle même contient deux colonnes. La première colonne est l'index (index) et la seconde contient les noms de plusieurs transporteurs (nom_transporteur)

     

     

    - J'ai également un windows form avec une textbox nommée TextBox1_transporteur et un boutton nommé Button1

     

    Ce que je veux faire :

    L'utilisateur entre un nom dans la textbox et lorqu'il clique sur le boutton, ce nom est ajouté à la base de données.

     

    Voici où j'en suis :

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim transporteur As String = TextBox1_transporteur.Text

     

     

     

    Je remercie par avance la personne qui aura pris le temps de m'aider.

     

    samedi 12 juillet 2008 01:39

Réponses

  • Bonjour,

     

    Le but de ce petit projet est de faire tourner sur trois PC cette petite application windowsform. Il devrait donc y avoir sur chaque PC le même programme interrogeant une BDD.

    Si je met la BDD sur un espace partagé entres les trois PC (qui sont en réseau) est-ce que ça a des chances de marcher ?

     

    Il me semble que ce n'est pas possible dans ce cas, car lorsque le fichier .mdf est attaché par SQL Server, il est automatiquement bloqué.

     

    Pour faire ce que vous souhaitez, il faut :

    • Installer SQL Server Express sur une machine considéré comme un serveur de données (Cela peut être une station de travail si vos moyens de le permet pas, et sur un Windows XP ou Vista).
    • Attachez votre base de données sur SQL Server de cette machine. (Utilisez l'utilitaire SQL Server Management)
    • Vous connectez sur cette base en utilisant la chaîne de connexion suivante :
      Dim ConnectionString As String = "Data Source=NOM_MACHINE\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;User Instance=True"

    Où NOM_MACHINE est le nom/ip de la machine sur lequel les clients doivent se connecter...

     

    Cordialement

     

    lundi 14 juillet 2008 09:11
    Modérateur

Toutes les réponses

  • Bonjour,

     

    Il faudra utiliser la méthode ExecuteNonQuery avec une requête de type "INSERT"

     

    Regardez l'exemple de la documentation à ce sujet (vous n'avez pas spécifié le type de BDD que vous utilisez, j'ai donc pris comme exemple celui de SQL Server) :

    http://msdn.microsoft.com/fr-fr/library/system.data.sqlclient.sqlcommand.executenonquery(VS.80).aspx

     

    Cordialement

     

    samedi 12 juillet 2008 08:04
    Modérateur
  • Bonjour,

    J'ai regardé ce fameux executenonquery et je suis arrivé au code ce dessous qui ne marche toujours pas...

     

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

     

    Dim transporteur As String = TextBox1_transporteur.Text

    Dim inserer As String = "INSERT INTO Table_TRANSPORTEUR (nom_transporteur) values(' " & transporteur & " ')"

    Dim connection As New SqlConnection

    connection.ConnectionString = "Data Source=.\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;User Instance=True"

     

    connection.Open()

    Dim insert_transporteur As New SqlCommand(inserer, connection)

    insert_transporteur.ExecuteNonQuery()

    connection.Close()

     

    End Sub

     

     

    J'obtiens l'erreur suivante :

    An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll

    Additional information: Invalid object name 'Table_TRANSPORTEUR'.

    Pourtant ma base de données SQL qui s'appelle BDD contient bien une table nommée 'Table_TRANSPORTEUR'

    Merci par avance.

    dimanche 13 juillet 2008 02:26
  • Bonjour,

     

    Du coup je me suis auto-aider...

    J'ai enfin trouver le problème, ce n'était qu'un problème de chemin au niveau de la base de données...

     

    Voici le code qui marche pour ceux que cela intéresse :

     

    Public Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

     

    Dim transporteur As String = TextBox1_transporteur.Text

    Dim Sqlconnection As New SqlConnection

    Dim ConnectionString As String = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\X\Bureau\projet\Bons Blancs\Bons Blancs\BDD.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"

    Dim se_connecter = New SqlConnection(ConnectionString)

    se_connecter.Open()

    Dim inserer As String = "INSERT INTO Table_TRANSPORTEUR (nom_transporteur) values(' " & transporteur & " ')"

    Dim insert_transporteur As New SqlCommand(inserer, se_connecter)

    insert_transporteur.ExecuteNonQuery()

    se_connecter.Close()

     

    End Sub

     

    Le problème venait du fait que je n'avais pas précisé le chemin de la BDD car j'avais changer le répertoire d'enregistrement par défaut.

     

    J'ai quand même une autre question :

     

    Le but de ce petit projet est de faire tourner sur trois PC cette petite application windowsform. Il devrait donc y avoir sur chaque PC le même programme interrogeant une BDD.

    Si je met la BDD sur un espace partagé entres les trois PC (qui sont en réseau) est-ce que ça a des chances de marcher ?

     

     

    lundi 14 juillet 2008 01:46
  • Bonjour,

     

    Le but de ce petit projet est de faire tourner sur trois PC cette petite application windowsform. Il devrait donc y avoir sur chaque PC le même programme interrogeant une BDD.

    Si je met la BDD sur un espace partagé entres les trois PC (qui sont en réseau) est-ce que ça a des chances de marcher ?

     

    Il me semble que ce n'est pas possible dans ce cas, car lorsque le fichier .mdf est attaché par SQL Server, il est automatiquement bloqué.

     

    Pour faire ce que vous souhaitez, il faut :

    • Installer SQL Server Express sur une machine considéré comme un serveur de données (Cela peut être une station de travail si vos moyens de le permet pas, et sur un Windows XP ou Vista).
    • Attachez votre base de données sur SQL Server de cette machine. (Utilisez l'utilitaire SQL Server Management)
    • Vous connectez sur cette base en utilisant la chaîne de connexion suivante :
      Dim ConnectionString As String = "Data Source=NOM_MACHINE\SQLEXPRESS;Integrated Security=True;Connect Timeout=30;User Instance=True"

    Où NOM_MACHINE est le nom/ip de la machine sur lequel les clients doivent se connecter...

     

    Cordialement

     

    lundi 14 juillet 2008 09:11
    Modérateur
  • Si vous voulez que votre textbox.text se retrouve dans votre BDD (champ nominatif), il faut l'ecrire implicitement dans le champ de la BDD.

     

    1 - Connection à la BDD  (Voir connectionString)

    2 - Ouvrir la connection    (Voir sqlCommand)

    3 - Ecrire dans le champ  (Voir Sql Insert)

    4 - Fermer la connection  (Voir Sql Close)

     

    Pour du code VB contacter : lesage_farid@hotmail.com

     

     

    lundi 27 octobre 2008 22:28
  • Le plus simple est de consider que PC1 contient La BDD SqlServer 2000 ou autre, PC2, PC3 effectuent un ODBC pour se connecter sur la BDD de PC1. 

     

    Ainsi la chaine de connection reste au niveau de l'ODBC.

     

    lundi 27 octobre 2008 22:44