2010-02-23 6 views
0

Je suis en train de créer une page de recherche, ce qui permet à l'administrateur de recherche à travers les entrées dans la base de données par certains critères, tels que la province (comme l'État, mais pays diff)base de données de recherche résultats retour à gridview via sqldatareader

Voici le code que j'ai jusqu'ici. Le problème est que je ne reçois aucune erreur. Mais je n'obtiens pas non plus de résultats. La page vient de publier et revient à la page de recherche vide. Le GridView n'affiche aucun résultat.

est mon code ici tel qu'il est:

Imports System.Data 
Imports System.Data.SqlClient 
Imports System.Web.Configuration 
Partial Class administration_Search 
    Inherits System.Web.UI.Page 

    Protected Sub ProvinceButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ProvinceButton.Click 
     'get the search string from text box 
     Dim Search As String 
     Search = ("%" & ProvinceButton.Text & "%") 
     'if the string has value then continue with search 
     If Len(Trim(Search)) > 0 Then 
      Dim con As String = WebConfigurationManager.ConnectionStrings("fubar").ToString() 
      'build sql string 
      Dim s As String 
      s = ("SELECT id, surname, name FROM orders WHERE province like @strSearch") 
      'declar connection 
      Dim c As SqlConnection = New SqlConnection(con) 
      'add command 
      Dim x As New SqlCommand(s, c) 
      'add parameter 
      x.Parameters.AddWithValue("@strSearch", strSearch) 
      c.Open() 
      Dim r As SqlDataReader = x.ExecuteReader 
      GV.DataSource = r 
      GV.DataBind() 
      c.Close() 
     Else 
      Province.Text = ("Please enter search terms") 
     End If 
    End Sub 
End Class 

Sur la page .aspx J'ai une zone de texte (id: province) et un bouton (id: soumettre)

Can spot personne où je Je vais mal. C'est très frustrant quand vous n'obtenez pas d'erreurs ou de résultats: 0)

Merci!

Répondre

1

Vos noms de variables ne correspondent pas (Search vs strSearch), mais je soupçonne que c'est une faute de frappe. Le plus gros problème est qu'en plaçant les caractères correspondants dans le paramètre, ils sont cotés. Mettez-les dans l'instruction SQL elle-même.

Dim strSearch As String 
strSearch = ProvinceButton.Text.Trim() 

... 

s = ("SELECT id, surname, name FROM orders WHERE province like '%' + @strSearch + '%'") 
+0

mon mauvais la recherche/strsearch sont en fait des fautes de frappe. Je vais essayer de déplacer les caractères correspondants vers SQL.Merci beaucoup pour l'aide – Phil

+0

Et vous voudrez peut-être couper votre entrée (comme je l'ai ajouté à l'exemple, bien que vous deviez vérifier null d'abord, ne me souviens pas du haut de ma tête si une zone de texte vide retourne null ou string.Empty). – tvanfosson

+0

Merci beaucoup, votre solution a été extrêmement utile et le code fonctionne maintenant! – Phil

1

1) Je suggère que vous SQL examiner le qui est en cours d'exécution. Placez un point d'arrêt sur la ligne c.Open(). Quand vous y arrivez, examinez le SqlCommand x. Voir quelle est la version finale de l'instruction SELECT. Copiez et collez-le dans Management Studio, puis exécutez-le pour voir s'il y a un problème de syntaxe.

2) Vous pouvez également essayer de remplir certaines propriétés SqlCommand. Définissez x.CommandType = CommandType.Text.

3) Je vous suggérerais également Fermer et éliminer du SqlDataReader à la fin, juste avant de fermer la connexion c. Cela ne résoudra pas ce problème particulier, mais c'est une bonne pratique.

+0

Merci beaucoup pour l'aide, je vais modifier et commencer à Dispose à l'avenir. – Phil

0

OK

Une fois que je l'ai fait amende honorable aimablement fait par tvanfosson j'avais encore des problèmes;

j'avais accidentellement tapé: strSearch = ProvinceButton.Text.Trim() Quand j'aurais tapé: strSearch = Province.Text.Trim()

Merci beaucoup: 0)

-1

C'est un tir sauvage dans l'obscurité, mais cette variable doit-elle avoir des graduations avant le premier% et après le dernier% puisque c'est une valeur de chaîne?

Original:

Search = ("%" & ProvinceButton.Text & "%") 

Révision:

Search = ("'%" & ProvinceButton.Text & "%'") 
+0

J'ai réussi à le résoudre avec la réponse ci-dessus, mais merci pour l'aide de toute façon Yoav, très apprécié. – Phil

Questions connexes