Solved

Error binding Access table to dropdown box in ASP.Net

Posted on 2009-04-01
10
572 Views
Last Modified: 2012-05-06
I get this error even though there is a column "Employees_Name"
System.Web.HttpException: DataBinding: 'System.Data.Common.DataRecordInternal' does not contain a property with the name 'Employees_Name'.

Is there something wrong with my code?
// Code on Button

    <asp:DropDownList ID="ddFacilitator" AppendDataBoundItems = "true" runat="server">

    </asp:DropDownList>
 

//Code Behind

        Dim strQuerydd As String = "SELECT Employees_Name FROM Empname"

        Dim cmdSearchdd As New OleDbDataAdapter(strQuerydd, dbConn)
 

        Dim readerdd As OleDbDataReader
 

        Try

            'dbConn.Open()

            readerdd = cmdSearch.SelectCommand.ExecuteReader()
 
 

            ddFacilitator.DataSource = readerdd

            ddFacilitator.DataTextField = "EmpName"

            ddFacilitator.DataValueField = "Employees_Name"

            ddFacilitator.DataBind()
 
 

        Catch exdd As Exception

            Response.Write(exdd)

        End Try

        readerdd.Close()

        dbConn.Close()

Open in new window

0
Comment
Question by:ITHelper80
  • 6
  • 4
10 Comments
 
LVL 8

Expert Comment

by:JRockFL
ID: 24045879
This looks incorrect
ddFacilitator.DataTextField = "EmpName"

That is your table name.
Try
ddFacilitator.DataTextField = " Employees_Name"
0
 
LVL 6

Author Comment

by:ITHelper80
ID: 24045892
Hey JRock....Its been a while..what 3 hours? lol

I should just send you the questions directly.

I tired that and got a different error message
System.Web.HttpException: DataBinding: 'System.Data.Common.DataRecordInternal' does not contain a property with the name 'Employees_Name'. at System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName) at System.Web.UI.DataBinder.GetPropertyValue(Object container, String propName, String format) at System.Web.UI.WebControls.ListControl.PerformDataBinding(IEnumerable dataSource) at System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e) at System.Web.UI.WebControls.ListControl.PerformSelect() at System.Web.UI.WebControls.BaseDataBoundControl.DataBind() at Facilitator.btnSearch_Click(Object sender, EventArgs e) in H:\Work Web Dev\Visions\Facilitator.aspx.vb:line 72 

Open in new window

0
 
LVL 8

Expert Comment

by:JRockFL
ID: 24045894
The other thing that catches my eye might be

readerdd = cmdSearch.SelectCommand.ExecuteReader()

Try
readerdd = cmdSearch.ExecuteReader()
0
 
LVL 6

Author Comment

by:ITHelper80
ID: 24045905
ASP.Net 3.5 wont let me do that.

It says ExecuteReader is not a member of OLEDBDataAdapter

The error goes away with the SelectCommand
0
 
LVL 8

Expert Comment

by:JRockFL
ID: 24045934
Sorry, I have not used OleDbDataAdapter in 3.5

Hmmmm
You are positive Employees_Name is the correct column name?

Maybe an alias would work

Dim strQuerydd As String = "SELECT Employees_Name As Name FROM Empname"
            ddFacilitator.DataTextField = "Name"
            ddFacilitator.DataValueField = "Name"
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 8

Expert Comment

by:JRockFL
ID: 24045941
'dbConn.Open()

The connection is closed?
dbConn.Open()
0
 
LVL 8

Expert Comment

by:JRockFL
ID: 24045955
Even though using a reader is a good choice, so can be a datatable.

    Private Sub LoadDropDowns()

        Dim dbConn As OleDbConnection

        Dim strQuerydd As String = "SELECT Employees_Name FROM Empname"

        Dim command As New OleDbCommand(strQuerydd, dbConn)

        Dim da As New OleDbDataAdapter(command)

        Dim dt As New DataTable()
 

        Try
 

            cmdSearchdd.Fill(dt)
 

            ddFacilitator.DataSource = dt

            ddFacilitator.DataTextField = "Employees_Name"

            ddFacilitator.DataValueField = "Employees_Name"

            ddFacilitator.DataBind()
 
 

        Catch exdd As Exception

            Response.Write(exdd)

        End Try
 

    End Sub

Open in new window

0
 
LVL 6

Author Comment

by:ITHelper80
ID: 24045979
The ddConn.Open() is commented out. Here is my complete code behind

Also there is my DB...just in case i may be missing something
Imports System.Data.OleDb

Partial Class Facilitator

    Inherits System.Web.UI.Page

    Private dbConn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Visions_DB.mdb;Persist Security Info=False;")
 
 

    Protected Sub btnSearch_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSearch.Click
 
 

        Dim strQuery As String = "SELECT Vis_Num,Status,Employee,Present_Method,Proposed_Method,Validator,Notes,ValDate FROM Data WHERE Vis_Num = ?"

        Dim cmdSearch As New OleDbDataAdapter(strQuery, dbConn)
 

        'cmdSearch.SelectCommand.Parameters.AddWithValue("Vis_Num", "%" & txtSearch.Text.ToString & "%")

        cmdSearch.SelectCommand.Parameters.AddWithValue("Vis_Num", CInt(txtSearch.Text))

        Dim reader As OleDbDataReader
 

        Try

            dbConn.Open()

            reader = cmdSearch.SelectCommand.ExecuteReader()
 

            If IsNothing(reader) = False Then
 

                txtError.Visible = True

                txtVisNum.Text = ""

                txtName.Text = ""

                txtName.Text = ""

                txtPresent.Text = ""

                txtProposed.Text = ""

                ddstatus.SelectedValue = ""
 

            End If
 

            While reader.Read()
 

                If Not reader("Vis_Num") Is DBNull.Value Then

                    txtVisNum.Text = reader("Vis_Num").ToString()

                    txtName.Text = reader("Employee").ToString()

                    txtPresent.Text = reader("Present_Method").ToString()

                    txtProposed.Text = reader("Proposed_Method").ToString()

                    'ddstatus.DataSource = reader

                    'ddstatus.DataValueField = "Status"

                    'ddstatus.DataTextField = "Data"

                    'ddstatus.Items.Insert(0, New ListItem("-- Status --"))

                    'ddstatus.DataBind()
 

                    txtError.Visible = False

                End If
 

            End While
 

        Catch ex As Exception
 

            Response.Write(ex)
 

        End Try
 

        reader.Close()
 

        Dim strQuerydd As String = "SELECT Employees_Name as Name FROM Empname"

        Dim cmdSearchdd As New OleDbDataAdapter(strQuerydd, dbConn)
 

        Dim readerdd As OleDbDataReader
 

        Try

            'dbConn.Open()

            readerdd = cmdSearch.SelectCommand.ExecuteReader()
 
 

            ddFacilitator.DataSource = readerdd

            ddFacilitator.DataTextField = "Name"

            ddFacilitator.DataValueField = "Name"

            ddFacilitator.DataBind()
 
 

        Catch exdd As Exception

            Response.Write(exdd)

        End Try

        readerdd.Close()

        dbConn.Close()

    End Sub

End Class

Open in new window

Visions-DB.mdb
0
 
LVL 8

Accepted Solution

by:
JRockFL earned 500 total points
ID: 24046039
This part looks incorrect
readerdd = cmdSearch.SelectCommand.ExecuteReader()
That is the commmand that is higher up in the code

i think you want the cmdSearchdd command
readerdd = cmdSearchdd.SelectCommand.ExecuteReader()

I hope that does it....my benadryl is starting to kick in.
if not i will be back in the am
0
 
LVL 6

Author Comment

by:ITHelper80
ID: 24046081
Sweet, once again you come to the rescue.

Thanks, Im sure we will speak tomorrow ;)
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

When you are entering numbers in a speadsheet, and don't remember what 6×7 is, you just type “=6*7" instead. It works in every cell! This is not so in Access. To enter the elusive 42 in a text box, you have to find a calculator, and then copy the re…
In a multiple monitor setup, if you don't want to use AutoCenter to position your popup forms, you have a problem: where will they appear?  Sometimes you may have an additional problem: where the devil did they go?  If you last had a popup form open…
Basics of query design. Shows you how to construct a simple query by adding tables, perform joins, defining output columns, perform sorting, and apply criteria.
In Microsoft Access, when working with VBA, learn some techniques for writing readable and easily maintained code.

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now