Har gjort en sökfunktion som har bestämt sig för att jäklas i massor med mig =) Read anropet hämtar första raden. Så ersätt:första posten syns inte
Problemet jag har är att när jag har med min while sats så syns inte första posten i svaret på sql frågan
Här är koden:
<code> Sub sok(ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles sokKnapp.Click
'Skapar anslutning (anropar från web.config)
Dim strConn As String = ConfigurationManager.AppSettings("Connstr").Replace("%MAPPATH%", Server.MapPath(" "))
Dim myConn As New OleDbConnection(strConn)
Dim strsql As String = "SELECT * FROM lankdb WHERE " & _
" (((Lankdb.foretag)='" & Request.Form("sokFras") & "')) OR " & _
" (((Lankdb.undergrupp)='" & Request.Form("sokFras") & "') OR " & _
" ((Lankdb.beskrivning)='" & Request.Form("sokFras") & "') OR " & _
" ((Lankdb.typ)='" & Request.Form("sokFras") & "') OR " & _
" ((Lankdb.sokord1)='" & Request.Form("sokFras") & "') OR " & _
" ((Lankdb.sokord2)='" & Request.Form("sokFras") & "') OR " & _
" ((Lankdb.sokord3)='" & Request.Form("sokFras") & "'))"
Dim myCommand As New OleDbCommand(strsql, myConn)
Dim myDataReader As OleDbDataReader
If Page.IsPostBack Then
'If EOF(strsql) = True Then
'Response.Write(strsql)
'Else
Try
Dim found As Boolean = False
myConn.Open()
myDataReader = myCommand.ExecuteReader()
'binder datan med repeatern
sokResultat.DataSource = myDataReader
'sokResultat.DataBind()
While myDataReader.Read()
sokResultat.DataBind()
found = True
End While
If (found = True) Then
Response.Write("found")
Else
Response.Write(" not found")
End If
myDataReader.Close()
myDataReader = Nothing
Catch ex As Exception
'lblErrMessage.Text = ex.Message
Response.Write(ex.Message)
Finally
myConn.Close()
myConn.Dispose()
myConn = Nothing
End Try
End If
End Sub</code>
Verkar även som om denna sub körs två gånger av ngn konstig anledning (hittar ej felet), kan de ha något med detta att göra?Sv: första posten syns inte
While myDataReader.Read()
sokResultat.DataBind()
found = True
End While
Med:
If myDataReader.HasRows() Then
sokResultat.DataBind()
found = True
End If
Du bör även kolla upp SQL-inject. Då din kod är sårbar för en sådan attack.