Рейтинг:
10
OriginalGriff
Используйте базу данных для хранения деталей счета-фактуры и установите столбец номер счета-фактуры в качестве поля идентификации: таким образом, БД автоматически назначит вам следующее значение, и вы не сможете изменить или дублировать его (оба из которых важны для счетов-фактур, поскольку налоговый инспектор будет очень, очень заинтересован, если вы это сделаете, а ваш серьезно этого не хочет).
Настройте две таблицы, счета-фактуры и линии счетов-фактур.
Счета-фактуры содержат номер счета-фактуры, дату и сведения о клиенте.
InvoiceLines имеет идентификатор, столбец внешнего ключа для номера счета-фактуры и сведения об одной строке (или номенклатуре) в счете-фактуре.
Таким образом, у вас есть одна строка счета-фактуры и куча строк счетов-фактур, которые ссылаются на нее. Оттуда вы можете генерировать всю необходимую информацию и иметь гибкое выставление счетов.
Не пытайтесь самостоятельно генерировать последовательные номера: это работает только тогда, когда есть один пользователь / один экземпляр приложения, и это маловероятно для системы выставления счетов. Ручная генерация вызывает огромные проблемы, потому что дубликаты будут происходить, и сортировка полученного беспорядка-Это ужасная ручная задача.
Himanshu Nanikwal
Большое вам спасибо за руководство!!
Не могли бы вы сказать мне еще кое-что?. как получить последнюю введенную запись из БД в приложении c# windows form?
OriginalGriff
Это зависит от того, что вы пытаетесь сделать, но вы, вероятно, не имеете в виду "последнюю введенную запись" просто потому, что в большинстве случаев база данных используется в многопользовательской среде - и если вы извлекаете фактическую "последнюю введенную" запись, которая могла быть сделана другим пользователем!
Если вы пытаетесь получить значение идентификатора, то выполните операцию вставки и следуйте за ней с помощью SELECT SCOPE_IDENTITY() на том же объекте соединения, и он вернет последний созданный объект. (Есть и другие способы получить значения идентичности, но это, вероятно, тот, который вы хотите большую часть времени.)
Himanshu Nanikwal
строка sql = "вставить в tbl_Maintenance(Name, PhoneNo ,HouseType, Block, HouseNo, MDate, MCharges, PCharges, Total, PaymentMode)" +
"Ценности (@имя, @PhoneNo, @HouseType, @заблокировать, @HouseNo, @MDate, @MCharges, @PCharges, @Итого @paymentmode значение)" +
"Выберите @@IDENTITY в качестве значения identityvalue ";
Я написал этот код на кнопке, теперь как сохранить identityvalue в локальной переменной ..?
Я попробовал этот путь..
инт накладной ;
SqlDataReader reader = cmd.Метода executereader();
в то время как (читатель.читать())
{
счет-фактура = считыватель.GetInt32(0);
Ящик для сообщений.Показать(счет-фактура.Метод toString());
}
читатель.Закрывать();
но я получил ошибку "указанный бросок не действителен"