Avatar billede fun22 Nybegynder
21. januar 2008 - 18:08 Der er 1 løsning

Problemer med sql og dataadapter

Jeg har en søgefunktion hvor som virkede fint, men nu har jeg så lavet en paging funktion, og nu virker det så ikke...

Mit bud er at det er fordi DataAdapteren ikke kan håndtere mine Parametere..

Men hvad gør man så lige?

Her er koden...

Private Sub BindTheData()
        Dim objConn As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString)

        Dim strSQL As String

        strSQL = "SELECT * FROM Her_Users WHERE UserActive = '1'"

        If Not DDGender.SelectedValue = "12" Then
            strSQL = strSQL & " AND Gender = @Gender"
        End If

        If Not DDSeeks.SelectedValue = "0" Then
            strSQL = strSQL & " AND Seeks = @Seek"
        End If

        If Not TBZip.Text = "" Then
            strSQL = strSQL & " AND Zip = @Zip"
        End If

        If Not TBCity.Text = "" Then
            strSQL = strSQL & " AND City = @City"
        End If

        If TBHeightFrom.Text.Length > 0 And TBHeightTo.Text.Length > 0 Then
            strSQL = strSQL & " AND Height BETWEEN @HeightFrom AND @HeightTo"
        Else
            If TBHeightFrom.Text.Length > 0 Then
                strSQL = strSQL & " AND Height BETWEEN @HeightFrom AND '0'"
            End If
            If TBHeightTo.Text.Length > 0 Then
                strSQL = strSQL & " AND Height BETWEEN '0' AND @HeightTo"
            End If
        End If

        If TBWeightFrom.Text.Length > 0 And TBWeightTo.Text.Length > 0 Then
            strSQL = strSQL & " AND Weight BETWEEN @WeightFrom AND @WeightTo"
        Else
            If TBWeightFrom.Text.Length > 0 Then
                strSQL = strSQL & " AND Weight BETWEEN @WeightFrom AND '0'"
            End If
            If TBWeightTo.Text.Length > 0 Then
                strSQL = strSQL & " AND Weight BETWEEN '0' AND @WeightTo"
            End If
        End If

        Dim AgeFrom As DateTime
        Dim AgeTo As DateTime

        If TBAgeFrom.Text.Length > 0 And TBAgeTo.Text.Length > 0 Then
            Dim a As New AgeScript
            AgeFrom = a.GetAgeDate(TBAgeFrom.Text)
            AgeTo = a.GetAgeDate(TBAgeTo.Text)
            strSQL = strSQL & " AND Age BETWEEN @AgeTo AND @AgeFrom"
        Else
            If TBAgeFrom.Text.Length > 0 Then
                Dim a As New AgeScript
                AgeFrom = a.GetAgeDate(TBAgeFrom.Text)
                AgeTo = DateTime.Now
                strSQL = strSQL & " AND Age BETWEEN @AgeTo AND @AgeFrom"
            End If
            If TBAgeTo.Text.Length > 0 Then
                Dim a As New AgeScript
                AgeTo = a.GetAgeDate(TBAgeTo.Text)
                AgeFrom = DateTime.Now
                strSQL = strSQL & " AND Age BETWEEN @AgeTo AND @AgeFrom"
            End If
        End If

        strSQL = strSQL & " ORDER by UID asc"

        Dim objCmd As New SqlCommand(strSQL, objConn)
        Dim dataAdapter As New SqlDataAdapter(strSQL, objConn)

        Dim Test As New DataSet

        If Not DDSeeks.SelectedValue = "0" Then
            Dim paramSeek As SqlParameter
            paramSeek = New SqlParameter("@Seek", SqlDbType.VarChar, 50)
            paramSeek.Value = DDSeeks.SelectedValue
            objCmd.Parameters.Add(paramSeek)
        End If

        If Not DDGender.SelectedValue = "12" Then
            Dim paramGender As SqlParameter
            paramGender = New SqlParameter("@Gender", SqlDbType.VarChar, 50)
            paramGender.Value = DDGender.SelectedValue
            objCmd.Parameters.Add(paramGender)
        End If

        If Not TBZip.Text = "" Then
            Dim paramZip As SqlParameter
            paramZip = New SqlParameter("@Zip", SqlDbType.VarChar, 50)
            paramZip.Value = TBZip.Text
            objCmd.Parameters.Add(paramZip)
        End If

        If Not TBCity.Text = "" Then
            Dim paramCity As SqlParameter
            paramCity = New SqlParameter("@City", SqlDbType.VarChar, 50)
            paramCity.Value = TBCity.Text
            objCmd.Parameters.Add(paramCity)
        End If

        If TBHeightFrom.Text.Length > 0 And TBHeightTo.Text.Length > 0 Then
            Dim parameightFrom As SqlParameter
            parameightFrom = New SqlParameter("@WeightFrom", SqlDbType.VarChar, 50)
            parameightFrom.Value = TBHeightFrom.Text
            objCmd.Parameters.Add(parameightFrom)

            Dim paramHeightTo As SqlParameter
            paramHeightTo = New SqlParameter("@HeightTo", SqlDbType.VarChar, 50)
            paramHeightTo.Value = TBHeightTo.Text
            objCmd.Parameters.Add(paramHeightTo)
        Else
            If TBHeightFrom.Text.Length > 0 Then
                Dim paramHeightFrom As SqlParameter
                paramHeightFrom = New SqlParameter("@WeightFrom", SqlDbType.VarChar, 50)
                paramHeightFrom.Value = TBHeightFrom.Text
                objCmd.Parameters.Add(paramHeightFrom)
            End If
            If TBHeightTo.Text.Length > 0 Then
                Dim paramHeightTo As SqlParameter
                paramHeightTo = New SqlParameter("@HeightTo", SqlDbType.VarChar, 50)
                paramHeightTo.Value = TBHeightTo.Text
                objCmd.Parameters.Add(paramHeightTo)
            End If
        End If

        If TBWeightFrom.Text.Length > 0 And TBWeightTo.Text.Length > 0 Then
            Dim paramWeightFrom As SqlParameter
            paramWeightFrom = New SqlParameter("@WeightFrom", SqlDbType.VarChar, 50)
            paramWeightFrom.Value = TBWeightFrom.Text
            objCmd.Parameters.Add(paramWeightFrom)

            Dim paramWeightTo As SqlParameter
            paramWeightTo = New SqlParameter("@WeightTo", SqlDbType.VarChar, 50)
            paramWeightTo.Value = TBWeightTo.Text
            objCmd.Parameters.Add(paramWeightTo)
        Else
            If TBWeightFrom.Text.Length > 0 Then
                Dim paramWeightFrom As SqlParameter
                paramWeightFrom = New SqlParameter("@WeightFrom", SqlDbType.VarChar, 50)
                paramWeightFrom.Value = TBWeightFrom.Text
                objCmd.Parameters.Add(paramWeightFrom)
            End If
            If TBWeightTo.Text.Length > 0 Then
                Dim paramWeightTo As SqlParameter
                paramWeightTo = New SqlParameter("@WeightTo", SqlDbType.VarChar, 50)
                paramWeightTo.Value = TBWeightTo.Text
                objCmd.Parameters.Add(paramWeightTo)
            End If
        End If

        If TBAgeFrom.Text.Length > 0 Or TBAgeTo.Text.Length > 0 Then
            Dim paramAgeFrom As SqlParameter
            paramAgeFrom = New SqlParameter("@AgeFrom", SqlDbType.VarChar, 50)
            paramAgeFrom.Value = AgeFrom.ToString
            objCmd.Parameters.Add(paramAgeFrom)

            Dim paramAgeTo As SqlParameter
            paramAgeTo = New SqlParameter("@AgeTo", SqlDbType.VarChar, 50)
            paramAgeTo.Value = AgeTo.ToString
            objCmd.Parameters.Add(paramAgeTo)

        End If

        Dim dataSet As New DataSet()

        dataAdapter.Fill(dataSet)
        lblRecordCount.Text = CStr(dataSet.Tables(0).Rows.Count)
        dataSet = Nothing
        dataSet = New DataSet()

        dataAdapter.Fill(dataSet, CInt(lblCurrentIndex.Text), CInt(lblPageSize.Text), "Customers")
        DataList1.DataSource = dataSet.Tables("Customers").DefaultView
        DataList1.DataBind()
        objConn.Close()
        ShowCounts()
    End Sub
Avatar billede fun22 Nybegynder
25. maj 2008 - 17:50 #1
lukker..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester