The problem definitely seems to be the dataset. I've checked the configuration and it seems to be OK, using the connection string in the webconfig that all the other datasets use. The SQL is:
SELECT tblstudent.FirstName, tblstudent.Surname, tblincident.Incident_ID, tblincident.Student_Id, tblincident.Min_late, tblincident.Min_early, tblincident.Mob, tblincident.mus, tblincident.hw, tblincident.prep, tblincident.interr, tblincident.disrupt, tblincident.behav, tblincident.Incidentdate
FROM (tblstudent INNER JOIN tblincident ON tblstudent.StudentID = tblincident.Student_Id)
WHERE tblincident.Student_Id = Parastudent
Where the parameter Parastudent is equal to the student ID passed on a query string. The parameter does not use the @ notation because this is an Access database. This form of parameter naming works everywhere else I've used it, so I don't think that's the issue. The problem is, that as the student name is coming from the student table, and all other data from the incident table, if there is no data on the incident table, there should at least be the student name returned. This simply is not happening when I test it. Even for students who have incidents recorded, it seems somewhat random as to whether or not the query returns any data.