Se connecter / S'enregistrer
Votre question

VB 2010 - Formulaire + SQL

Tags :
  • Sql
  • Programmation
Dernière réponse : dans Programmation
27 Janvier 2011 00:22:18

Bonjour à toutes et à tous,


Alors voila, je me lance dans le développement ASP.NET et je rencontre une petite difficultés.
Je me lance dans un projet de gestion de stock.

Je dispose d'une base de données : Stock avec une table "Article" avec 5 arguments ( Localisation, Nom, Quantité, Date et Commentaire ).

J'ai réussi à faire la partie "Consultation" qui retourne un tableau avec les valeurs de la base de données.
Cependant, j'aimerai que le client puisse ajouter un article.

Il va saisir les 5 attributs puis en cliquant sur "Ajouter" la requête SQL est générée et ajoute à la table les valeurs saisies.

Je fais donc appel à vous pour me débloquer.

Je pensais donc à une div contenant la saisie des attributs et le submit du genre :

<div class="attributs">
<h3>Localisation: </h3>
<input name="Localisation" type="text"/>
<h3>Nom: </h3>
<input name="Nom" type="text"/>
<h3>Quantite: </h3>
<input name="Quantite" type="text"/>
<h3>Date: </h3>
<input name="txtDate" type="text"/>
<h3>Commentaire: </h3>
<input name="Commentaire" type="text"/>
<input name="btnGo" type="submit" value="Go" />
</div>

Mais après comment renvoyé tout ceci en requete ?!

Les requêtes SQL c'est pas un problème, j'ai juste quelques difficultés à faire le lien entre lien entre les deux.

Merci d'avance :) 

Autres pages sur : 2010 formulaire sql

27 Janvier 2011 01:46:32

Bonjour,

Pour faire un formulaire tu dois utiliser la balise <form>:

Exemple:

  1. <form method="post" action="pagedetraitement.php">
  2. <input type="text" name="input1" />
  3. <input type="submit" value="Envoyer" />
  4. </form>


Et sur la page de traitement tu récupère le ou les $_POST['input'];
m
0
l
a c 232 L Programmation
27 Janvier 2011 10:10:27

Salut,

@allstar27: en ASP.Net, il n'y a pas de $_POST :) 

@terrmarks: en ASP.NET, tu as déjà des contrôles qui sont quasiment tout fait pour faire ça.
Il faut que tu ajoutes une SqlDataSource à ta page ASP.NET, et en mode design, tu as un bouton pour la configurer.
Ensuite, tu peux ajouter un DetailsView sur ta page et le lier à ta SqlDataSource, et les champs vont être générés automatiquement.
m
0
l
Contenus similaires
27 Janvier 2011 14:19:14

Merci beaucoup Omar pour l'idée !

J'ai découvert le ListView et faire un peu comme sur ce tutoriel : http://msdn.microsoft.com/fr-fr/library/bb515103.aspx

Cependant il m'est impossible de réaliser cette étape :
Activez la case à cocher Générer des instructions INSERT, UPDATE et DELETE, puis cliquez sur OK.

Les zones sont grisés :


Est ce que vous avez une idée du pourquoi du comment ?!
Car c'est exactement ce qu'il me fallait :( 

Merci d'avance
m
0
l
a c 232 L Programmation
27 Janvier 2011 15:34:07

Salut,

Tu te bases sur un SqlDataSource ? Est-ce que tu as bien sélectionné ta clé primaire ?
Il est indiqué dans la partie "Générer des instructions INSERT, UPDATE et DELETE", qu'il faut forcément sélectionner tous les champs clés primaires pour activer l'option.
m
0
l
27 Janvier 2011 15:46:58

Ah ouai, je me disais bien que j'avais oublié de faire ceci ..

Cependant, dans la modification des lignes, je ne peux pas modifier mes clés primaires, est-ce normal ?


Merci de ton aide ;) 

PS : J'adore ta citation, GCM :D 
m
0
l
a c 232 L Programmation
27 Janvier 2011 17:00:52

Une clé primaire ne peut pas se modifier, c'est un peu le but d'une clé primaire, pouvoir identifier un élément sans jamais changer :) 
m
0
l
27 Janvier 2011 17:35:21

Arf, je me disais bien, va falloir que je trouve une astuce ..

Est ce que tu sais comment modifier l'apparence d'un ListView avec autant de détail d'un GridView ?

Car je ne peux pas modifier sa taille, tout les styles .. alors que dans les propriétés du GridView c'est possible :x

Merci d'avance ;) 
m
0
l
a c 232 L Programmation
27 Janvier 2011 19:28:39

Une ListView n'est peut être pas ce que tu veux aussi... si tu veux une GridView, utilise une GridView, c'est le même principe pour la DataSource, tu peux binder la GridView à une SqlDataSource et faire exactement la même chose.
La GridView te permet même de faire de l'édition/suppression en direct dans la table, et tu peux modifier le format d'affichage de tes données, le format d'édition, etc...
m
0
l
28 Janvier 2011 18:54:23

Me revoilà !

Grâce à la GridView et les configurations qui vont bien, j'ai réussi à faire mon edition et supression de données avec le même affichage.

Cependant, je ne comprends pas pourquoi le GridView ne propose pas directement la fonction insertion. J'ai vu sur le net que cela était possible mais je n'en ai pas compris la méthode ... :x

Est ce que vous connaissez le moyen de faire cela ?
Ou alors, quel outil me permettrait d'obtenir le résultat que je souhaite ?

Merci d'avance pour vos aides ;) 
m
0
l
a c 232 L Programmation
28 Janvier 2011 19:20:28

En effet, il faut utiliser un "hack" pour pouvoir utiliser la fonction INSERT.
Généralement, ce qu'on fait, c'est qu'on propose un formulaire à côté (FormView de mémoire) où il est pratique d'insérer les données.

Sinon, ce qui se fait aussi, c'est de mettre la fonction d'INSERT dans le footer de la GridView, mais ça oblige à ajouter toutes les TextBox à la main, ainsi que les contrôles de validation.
Tu peux regarder ici si l'anglais ne te fais pas trop peur (bon, c'est principalement du code, donc ça devrait aller, il y a juste quelques explications au départ sur ce qui doit être fait) :
http://geekswithblogs.net/casualjim/articles/51360.aspx
m
0
l
28 Janvier 2011 20:51:00

J'avais déjà vu cette démarche, mais j'avais un peu pris peur, je me suis lancé, cependant j'ai comparé mon code et celui présent dans le lien.

Je remarque qu'il faut que je déclare un ItemTemplate

  1. <ItemTemplate>
  2.  
  3. <asp:LinkButton ID="lbEdit" runat="server" CausesValidation="False" CommandName="Edit”
  4. Text="Edit" >asp:LinkButton> <asp:LinkButton ID="lbDelete" runat="server"
  5.  
  6. CausesValidation="False" CommandName="Delete" Text="Delete">asp:LinkButton>
  7.  
  8. </ItemTemplate>


Mais VisalBasic 2010 ne reconnait pas cette méthode :x
Voici l'erreur retournée lorsque je lance mon code :

Le type 'System.Web.UI.WebControls.GridView' ne possède pas de propriété publique appelée 'ItemTemplate

Et j'ai remarqué que le LinkButton est rappelé de nombreuses fois donc indispensable.

Est ce que parce que je n'ai pas encoré intégré le code source présent à la fin ?

  1. protected void lbInsert_Click(object sender, EventArgs e)
  2.  
  3. {
  4.  
  5. odsIngredient.Insert();
  6.  
  7. }
  8.  
  9. protected void LinkButton2_Click(object sender, EventArgs e)
  10.  
  11. {
  12.  
  13. ((TextBox)gvIngredient.FooterRow.FindControl("tbIngredient")).Text = "";
  14.  
  15. ((TextBox)gvIngredient.FooterRow.FindControl("tbStock")).Text = "";
  16.  
  17. ((TextBox)gvIngredient.FooterRow.FindControl("tbMinStock")).Text = "";
  18.  
  19. }
  20.  
  21. protected void odsIngredient_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
  22.  
  23. {
  24.  
  25. string Ingredient = ((TextBox)gvIngredient.FooterRow.FindControl("tbIngredient")).Text;
  26.  
  27. string stock = ((TextBox)gvIngredient.FooterRow.FindControl("tbStock")).Text;
  28.  
  29. string minstock = ((TextBox)gvIngredient.FooterRow.FindControl("tbMinStock")).Text;
  30.  
  31. e.InputParameters["ProductIngredient_Name"] = Ingredient;
  32.  
  33. e.InputParameters["ProductIngredient_Stock"] = stock;
  34.  
  35. e.InputParameters["ProductIngredient_MinStock"] = minstock;
  36.  
  37. }


Dois-je l'intégré comme dans le lien ? Après ma dernière balise ASP ?

Merci pour ton aide ;) 
m
0
l
a c 232 L Programmation
28 Janvier 2011 21:29:53

Le <ItemTemplate> se trouve dans <Columns>, et non pas à la racine de <asp:GridView>
Il faut que tu aies:
  1. <asp:GridView ...>
  2. <Columns>
  3. <ItemTemplate>...</ItemTemplate>
  4. </Columns>
  5. </asp:GridView>


Et pour le code, c'est pour gérer le clics sur les boutons. Tu auras quelques modifications à faire afin de récupérer tes propres contrôles (le FindControl), et de le faire pour toutes tes données.
Et tu stockeras ça dans le e.InputParameters comme là, tout en gardant les noms des colonnes dans ta base de données.
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS