Announcement

Collapse
No announcement yet.

ado net suchabfrage funtzt nicht

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ado net suchabfrage funtzt nicht

    ich habe eine suchfunktion gebastelt, nun wollte ich asen string mit cmd.Parameters.Add aufbauen anstatt mit stringverkettung nun funtzt sie nicht mehr. die einfache suche die nur mit den bezeichner durchsuchte funktionierte vohrer die andere die alle felder durchsuchen solltet nicht das ist der zweite punkt wo ich auf der leitung steh.

    Code:
        Dim Selectstr As String = "select * from hilfe " ' order by hilfenr asc"
    
        Private Sub bSuchen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSuchen.Click
    
            Dim cmd As New OleDbCommand()
            con = New OleDbConnection(constr)
            If cAlleFelder.Checked Then
                cmd.CommandText = Selectstr & " WHERE bezeichnung like '% @Suchfeld  %' OR beschreibung like '% @Suchfeld %' OR keywords like '% @Suchfeld %' " _
                         & "OR gruppe is like '% @Suchfeld %' "
            Else
                cmd.CommandText = Selectstr & " WHERE bezeichnung like '% @Suchfeld % ' "
            End If
            cmd.Connection = con
            cmd.Parameters.Add("@Suchfeld", OleDbType.VarWChar, 255).Value = vSuche.Text
            Try
                con.Open()
                dreader = cmd.ExecuteReader()
    
                dataTable.Load(dreader)
                con.Close()
                DataGridView1.DataSource = dataTable
            Catch ex As Exception
    
            End Try
        End Sub

  • #2
    Versuch es mal so. Denn bei Parametern musst du dich nicht drum kümmern ob du Semikolons brauchst oder nicht außerdem sind beim Oledbcommandobjekt die Parameter nur durch ein ? zu kennzeichnen und müsssen dann wenn mehrere vorhanden sind in der richtigen reihenfolge hinzugefügt werden.
    Code:
        Dim Selectstr As String = "select * from hilfe " ' order by hilfenr asc"
    
        Private Sub bSuchen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSuchen.Click
    
            Dim cmd As New OleDbCommand()
            con = New OleDbConnection(constr)
            If cAlleFelder.Checked Then
                cmd.CommandText = Selectstr & " WHERE bezeichnung like ? OR beschreibung like ? OR keywords like ? OR gruppe is like ?"
            Else
                cmd.CommandText = Selectstr & " WHERE bezeichnung like ?"
            End If
            cmd.Connection = con
            cmd.Parameters.Add("@Suchfeld", OleDbType.VarWChar, 255).Value = vSuche.Text
            Try
                con.Open()
                dreader = cmd.ExecuteReader()
    
                dataTable.Load(dreader)
                con.Close()
                DataGridView1.DataSource = dataTable
            Catch ex As Exception
    
            End Try
        End Sub
    Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

    Comment


    • #3
      Ergänzung zu das-d: Die '%'-Zeichen für LIKE gehören in den Suchtext beim Parameter, nicht in den Select-String:
      Code:
      cmd.Parameters.Add("@Suchfeld", OleDbType.VarWChar, 255).Value = "%" & vSuche.Text & "%"
      Für Parameters.Add gibt es viele Varianten (je nach DbProvider und Situation), siehe [Artikelserie] Parameter von SQL Befehlen

      Gruß Jürgen

      /Edit
      Du weißt, dass das ein Problem mit ADO.NET ist. Warum benutzt du dann nicht das dafür vorgesehene Unterforum?

      Comment


      • #4
        thx, der progteil schaut jetzt so aus, die variante mit mehreren suchfeldern zickt weiterhin

        Code:
                If cAlleFelder.Checked Then
                    cmd.CommandText = Selectstr & " WHERE bezeichnung like ? OR beschreibung like ? OR keywords like ? OR gruppe is like ?"
                    cmd.Parameters.Add("@Suchfeld", OleDbType.VarWChar, 255).Value = "%" & vSuche.Text & "%"
                    cmd.Parameters.Add("@Suchfeld", OleDbType.LongVarWChar).Value = "%" & vSuche.Text & "%"
                    cmd.Parameters.Add("@Suchfeld", OleDbType.VarWChar, 255).Value = "%" & vSuche.Text & "%"
                Else
                    cmd.CommandText = Selectstr & " WHERE bezeichnung like ?"
                End If
                cmd.Connection = con
                cmd.Parameters.Add("@Suchfeld", OleDbType.VarWChar, 255).Value = "%" & vSuche.Text & "%"
        ... das mit dem ado net unterforum hab ich übersehen.

        Comment


        • #5
          Definiere doch mal 'zickt weiterhin'.
          Was passiert und was erwartest du eigentlich.

          Comment


          • #6
            Du benutzt immer dieselben Parameter-Namen, aber wie ich im 3. Beitrag der Artikelserie geschrieben habe:
            Die Namen der Parameter müssen (bezogen auf einen DbCommand) eindeutig sein.
            Gruß Jürgen

            Comment

            Working...
            X