SQL et VB.NET : SÉLECTIONNEZ la requête à l'aide de données dans la zone de texte
Je suis en train de créer une zone de recherche, où la requête SQL dépend d'un radio bouton et une zone de texte.
SELECT * FROM [Sales] WHERE (text in radio button) = (text in textbox)
Comment puis-je mettre en œuvre cette?
Ci-dessous mon code complet.
Protected Sub btnSearch_Click(sender As Object, e As ImageClickEventArgs) Handles btnSearch.Click
If radClient.Checked = True Then
Dim connection As New OleDb.OleDbConnection
Dim provider As String
Dim source As String
provider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
source = "Data Source=|DataDirectory|DeltaOneMDB.mdb"
connection.ConnectionString = provider & source
GridView1.Visible = False
connection.Open()
SqlDataSource3.SelectCommand = "SELECT * FROM Sales WHERE ClientID = '" & txtSearch.Text & "'"
connection.Close()
ElseIf radItem.Checked = True Then
Dim connection As New OleDb.OleDbConnection
Dim provider As String
Dim source As String
provider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
source = "Data Source=|DataDirectory|DeltaOneMDB.mdb"
connection.ConnectionString = provider & source
GridView1.Visible = False
connection.Open()
SqlDataSource3.SelectCommand = "SELECT * FROM Sales WHERE ItemID = '" & txtSearch.Text & "'"
connection.Close()
ElseIf radUser.Checked = True Then
Dim connection As New OleDb.OleDbConnection
Dim provider As String
Dim source As String
provider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
source = "Data Source=|DataDirectory|DeltaOneMDB.mdb"
connection.ConnectionString = provider & source
GridView1.Visible = False
connection.Open()
SqlDataSource3.SelectCommand = "SELECT * FROM Sales WHERE UserID = '" & txtSearch.Text & "'"
connection.Close()
ElseIf radUser.Checked = False And radClient.Checked = False And radItem.Checked = False Then
ErrorLabel.Text = "Error: You have not chosen a search criteria."
End If
End Sub
La table, textbox et un bouton radio sont tous sur le même formulaire. Je suis l'aide de Microsoft Visual Studio 2012 pour le Web, et d'essayer de changer la source de données pour un contrôle GridView objet sur le formulaire. Cependant, je reçois l'erreur:
La propriété ConnectionString n'a pas été initialisé.
Excuses pour ne pas donner mon code plus haut.
Merci!
- Qu'avez-yout essayé jusqu'à présent?
- Vraiment, vous devriez commencer à donner un peu de code où vous êtes arrêté. Pour aider nous avons besoin d'un contexte, les noms des contrôles, le code déjà écrit, les messages d'erreur. Cette question est tellement vague que sera fermé.
- Édité mon post, merci!
- Juste par intérêt, comment voulez-vous obtenir le texte dans le bouton radio en premier lieu? Aussi, je ne suis pas sûr si j'ai ce droit, mais vous êtes en comparant le texte du bouton radio pour le texte de la zone de texte? Est l'un de ces éléments de texte d'un champ dans ta base de données?
Vous devez vous connecter pour publier un commentaire.
En regardant ton code, je vois beaucoup de lignes inutiles. Je voudrais vous donner un exemple de ce que je pense que vous pourriez faire pour simplifier votre code.
Tout d'abord, retirez le code n'est pas nécessaire pour le SqlDataSource (je suppose que vous avez déjà ouvert la connexion avec la base de données et cependant cela pourrait être fait en une fois, à cliquez sur entrée.
Deuxièmement, dans chaque commutateur de préparation de la commande doit être exécutée et le paramètre (nom et valeur) à passer pour cette commande
À la fin de mise à jour de votre SqlDataSource et relier tout
lors de l'utilisation de SQLDatasource, vous n'avez pas à spécifier les Connexions, il gère sa propre connexion.
ce que vous devez faire est de:
SqlDataSource3.DataBind()
Aussi, une Meilleure Approche est d'Utiliser une Procédure Stockée qui autorise les Valeurs Null.
mieux pour l'Injection SQL (Menaces pour votre Base de données)
HORRIBLE des SOLUTIONS partout sur internet. C'est probablement la plus simple dans le monde.
supprimer les lignes commentées. seul problème, c'est que les requêtes sont sensibles à la casse. Vous pouvez déterminer quelle opération de chaîne à utiliser pour le faire 'ignorer la casse'.