Néhány észrevétel
1: Ha van rá lehetőség használj normális adatbázis kezelőt ami képes a sql-re és tranzakciókezelésre. Ha később bővíted a programot, esetleg hálózatos verzió is lesz belőle, jól fog jönni.
2: Bár a kódot nem néztem, de ha jól vettem észre a számlaszámot már előre kiosztod a számlának. Ez nem a legcélszerűbb mivel, ha hiba történik az adatok rögzítésénél akkor a számlaszám már felhasználásra kerül és mivel nincs tranzakció kezelésed nem tudod visszagörgetni. Pl. hozzáadsz egy tételt a számlához, de nem a készre nyomsz, hanem kilépsz a programból, a számla meg ottmarad.
3: Általában a bruttó egységárat szokták beírni, persze ha van rá lehetőség inkább mindkettő kellene.
4: Az adatbázisod nincs optimalizálva, a számla fejléc adatait inkább külön táblában kellene tárolnod a tétel adatoktól és a tétel rekordok hivatkozzanak a fejléc adatokra.