I got rid of the MissingSchemaAction part of the code and left the
FillSchema.
Then i set the Primary Key by going:
objAbsentNumberDA.FillSchema(objDS, SchemaType.Source, "NEWB")
objAbsentNumberDA.Fill(objDS, "NEWB")
objDS.Tables("NEWB").PrimaryKey = New DataColumn()
{objDS.Tables("NEWB").Columns("StudentID")}
But then I keep getting the "Object reference not set to an instance
of an object." error in relation to the following line of code:
StudentName = objRow2.Item("Student") - from FillNamesNeeded()
I've been messing with this all morning - any ideas as to what's
wrong???
Thanks
On Feb 25, 7:51 am, Cerebrus <[email protected]> wrote:
> Some OleDbDataAdapter datasources do not return Primary Key
> information along with the returned data. Since you are using an mdb
> (MS Access), it should return the Primary key when you set the
> MissingSchemaAction or call the FillSchema method explicitly.
> Therefore, I am unsure as to why this doesn't work, but there may be a
> couple of things you can look into:
>
> 1. Try using only one of the two calls - set the MissingSchemaAction
> OR call the FillSchema method. Not both.
> 2. Confirm that your Access database has a column configured as the
> Primary key within the table "NEWB".
> 3. If nothing works, try setting the Primary key explicitly to the
> appropriate column in the following way:
>
> ---
> Dim newB as DataTable = objDS.Tables("NEWB")
> newB.PrimaryKey = new DataColumn() { newB.Columns("MyPrimaryColumn") }
> ---
>
> On Feb 23, 11:29 pm, Laura <[email protected]> wrote:
>
>
>
> > Hi,
>
> > I have a database query that I am reading data from into a form. I can
> > read one column into a listbox without any problems.
> > Where I get into difficulty is when I try to use the data read into
> > the listbox to get the related rows.
>
> > I keep getting the following error:
>
> > "Missing PrimaryKey Was Unhanled Exception"
> > "Table doesn't have a primary key"
>
> > The query has four fields and one of them is a primary key. Is reading
> > from queries very different to reading from tables??
>
> > Here is the code I have;
>
> > Dim objConnection As New OleDb.OleDbConnection( _
> > "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= FYP.mdb")
> > Dim objAbsentNumberDA As New OleDb.OleDbDataAdapter("Select * from
> > NEWB", objConnection)
> > Dim objAbsentNumberCB As New OleDb.OleDbCommandBuilder
> > (objAbsentNumberDA)
> > Dim strNumber As String
> > Dim StudentName As String
> > Dim ClassName As String
>
> > then under the form load;
>
> > objAbsentNumberDA.MissingSchemaAction = MissingSchemaAction.AddWithKey
> > objDS.Clear()
> > objAbsentNumberDA.FillSchema(objDS, SchemaType.Source, "NEWB")
> > objAbsentNumberDA.Fill(objDS, "NEWB")
>
> > lstNumberAbsent.Items.Clear()
> > FillNumberAbsent()
> > FillNamesNeeded()
>
> > Private Sub FillNumberAbsent()
> > Dim i As Integer
> > For i = 1 To objDS.Tables("NEWB").Rows.Count
> > strNumber = objDS.Tables("NEWB").Rows(i - 1).Item
> > ("Absent")
> > lstNumberAbsent.Items.Add(strNumber)
> > Next
> > End Sub
>
> > Private Sub FillNamesNeeded()
> > Dim objRow2 As DataRow
> > objRow2 = objDS.Tables("NEWB").Rows.Find(strNumber)
> > StudentName = objRow2.Item("Student")
>
> > FillNumberAbsent() works fine. It's in FillNamesNeeded() that I get
> > the error at the line: objRow2 = objDS.Tables("NEWB").Rows.Find
> > (strNumber)
>
> > Am I doing something wrong, or has it something to do with the fact
> > that I'm using queries?
>
> > Thanks- Hide quoted text -
>
> - Show quoted text -