Himanshu Nanikwal Ответов: 1

Как сгенерировать счет-фактуру нет


Всем Привет,
Я создаю настольное приложение для обслуживания общества в приложении c# windows form,
Я хочу автоматически сгенерировать номер счета, и в новом году он должен быть автоматически сброшен.
Кто-нибудь может мне помочь с этим, пожалуйста?

Или есть какой-нибудь способ получить последний введенный идентификатор в приложении c# windows form..?

Что я уже пробовал:

публичный динамический GetLastInsertId ();

MadMyche

Вы собираетесь сохранять данные счетов-фактур в базе данных?

Himanshu Nanikwal

да я храню эти данные в БД

Tomas Takac

Как насчёт

Guid.NewGuid().ToString("N")
или
DateTime.UtcNow.ToString("yyyyMMddHHmmss")
если вы хотите сгенерировать "уникальный" идентификатор.

1 Ответов

Рейтинг:
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());
}

читатель.Закрывать();

но я получил ошибку "указанный бросок не действителен"