If you're not selecting from the database, but adding like this, then you have to use RowFilter and Select. RowFilter to exclude those rows that don't have balance like this:
yourTable.RowFilter = "balance > 0"
You then use yourTable.DefaultView to get only filtered rows.
As for select: before creating / adding new row, do the following:
Dim rows() as DataRow = obj.Tables("BAL_REG").Select("accno = " + facno, "")
if rows.Lenght > 0
end if
Also, in your code above, you're always creating new dataset which should have empty tables so how can you have duplicates?
If this helps please take time to accept the solution. Thank you.