Я довольно новичок в Visual Studio (в частности, в Visual Basic .NET), но довольно давно программирую.
Здесь, в моей компании, у нас есть приложение Access, которое позволяет пользователям создавать документы на основе счетов-фактур в Great Plains, бухгалтерской программе. Документы, такие как счета, упаковочные листы, экспортная документация и т. Д. И т. Д.
Это приложение очень старое и очень сложное в обслуживании, поэтому мы переписываем его, и я выбрал этот проект в качестве своего первого проекта Visual Basic .NET.
По сути, приложение собирается разрешить пользователям делать следующее:
- Подтвердите информацию о счете, а затем добавьте дополнительную информацию, такую как комментарии и т.п.
- Выберите, какие документы они хотят распечатать
- Откройте документы и затем разрешите пользователю редактировать документы
Последняя часть - хитрая. Пользователи прямо сейчас создают эти документы из Access и распечатывают в PDF, а затем редактируют PDF с комментариями, которые могут быть специфическими для документа и клиента. Если они не должны были этого делать, то я мог бы просто использовать консервированные отчеты или что-то в этом роде.
Я собираюсь создать шаблоны Word с текстовыми полями и внутри этих текстовых полей, добавляя адресуемые закладки. Когда пользователь отправляется на печать документов, откройте Word, заполните закладки из базы данных (SQL Server), и тогда они смогут рисовать текстовые поля и заполнять их чем угодно, прежде чем печатать документы, и затем они могут их сохранять.
Вот код, который я разработал для этого (конечно, конечный результат будет гораздо более сложным):
Public Const wdPageBreak = 7
Dim oWord As Word.Application
Dim oDoc As Word.Document
'Open recordset for rsInvoice
oWord = CreateObject("Word.Application")
oDoc = oWord.Documents.Add()
oDoc.Application.Selection.Range.InsertFile("C:\document-c.dotx")
oDoc.Application.Selection.Range.InsertBreak(wdPageBreak)
oDoc.Application.Selection.Range.InsertFile("C:\document-b.dotx")
oDoc.Application.Selection.Range.InsertBreak(wdPageBreak)
oDoc.Application.Selection.Range.InsertFile("C:\document-a.dotx")
oDoc.Bookmarks("document_a_invoice_number").Range.Text = rsInvoice("invoice_number")
oDoc.Bookmarks("document_a_customer_number").Range.Text = rsInvoice("customer_number")
...
etc.
etc.
...
oWord.Visible = True
Так что я думаю, у меня вопрос, является ли это наиболее подходящим способом подойти к этому проекту или есть программный или сторонний инструмент, о котором я не знаю, который будет проще и эффективнее?
Заранее спасибо.