Well, it's a little difficult to tell since you didn't tell us what line was causing the errors. I would guess from the error message that it was
rpt.Subreports.Item("persoRpt").SetDataSource(ds)
For one thing, you should really try to isolate your Try/Catch blocks more. Only put the items that you think could throw an error. For instance, none of this:
Dim rpt As New CrystalReport1()
Dim da As New SQLiteDataAdapter
Dim ds As New presbydbDataSet
Dim cmd As New SQLiteCommand("SELECT * FROM personal_details WHERE personal_details.staff_ID='" + detailsFrm.Label13.Text + "'", conn)
should ever throw an error...unless you remove the references to them.
Put
cmd.ExecuteNonQuery()
in its own Try/Catch.
Put
da.Fill(ds, "personal_details")
in its own Try/Catch.
Put
rpt.Subreports.Item("persoRpt").SetDataSource(ds)
in its own Try/Catch.
You get the idea.
Anyway, are you sure that you're using the SetDataSource correctly and that it will take a DataSet? Everything I've seen requires that a DataTable be passed in to SetDataSource. If it does take a DataSource, can you verify that the Fill works correctly and that there is something in the DataSource?