Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Договор - документ Word
 
 автор: час   (01.04.2007 в 13:45)   личное сообщение
 
 

Поделитеся кто как выходит из положения.
На основе данных базы создаются и заключаются договора...
Если сделать в виде отчета, то пользователю исправить текст договора это проблема...
Если сделать в WORD то там нужно вставить метки и по этим меткам вставлять нужные значения.
Юзер может редактировать содержимое, но так же может удалять метки
(случайно)
А как лучшее? Какие ещё есть варьянты???

  Ответить  
 
 автор: Explorer   (01.04.2007 в 13:55)   личное сообщение
 
 

я, например, не вывожу договор в редактируемый файл - если позволить пользователю редактировать содержимое договора за пределами БазыДанных - теряется смысл самой БД - накапливаются разночтения в тексте, если такую БД и удастся использовать то только как справочник по типовым формулировкам а не как БД договоров.

мои договоры печатаются прямо из БД на ПДФ принтер - если нужно что-то менять, меняем в БД.

в общем случае, нужно выводить текст документа в шаблон Word, который, в свою очередь, и сам хранится в БД.

  Ответить  
 
 автор: час   (01.04.2007 в 14:10)   личное сообщение
 
 

Интересно, а как это всё.....
Где ба почерпнуть чего нибудь.
Я чета пока не въезжаю.

  Ответить  
 
 автор: ДрЮня   (01.04.2007 в 13:57)   личное сообщение
 
 

я стараюсь оформлять любой документ ввиде таблицы (набора таблиц): в определенную ячейку заносится нужная информация

  Ответить  
 
 автор: час   (01.04.2007 в 14:11)   личное сообщение
 
 

А можно образец такого договора посмотреть?

  Ответить  
 
 автор: ДрЮня   (01.04.2007 в 15:46)   личное сообщение
40 Кб.
 
 

типового договора у меня нет, к сожалению. в прикрепленном файле стандариный "счет"

  Ответить  
 
 автор: Explorer   (01.04.2007 в 15:54)   личное сообщение
 
 

тут кроме автора документа и компании чтот ничего не читаеццо :)))

  Ответить  
 
 автор: ДрЮня   (01.04.2007 в 18:15)   личное сообщение
 
 

это ж шаблон - остальное вставляется при генерации нового документа на основе сего шаблона. данные из БД.

  Ответить  
 
 автор: Explorer   (01.04.2007 в 18:19)   личное сообщение
14 Кб.
 
 

я не о том :))) проехали

  Ответить  
 
 автор: час   (02.04.2007 в 10:53)   личное сообщение
 
 

А как юриты смотрят на такую форму договора - Дают добро?

  Ответить  
 
 автор: Explorer   (03.04.2007 в 09:59)   личное сообщение
 
 



а что по твоему такое "форма договора" - кирпич бумаги на котором он напечатан и буквы и полосочки? или ты видишь претензии именно к "форме договора"...

на рисуке приведен скриншот с сеткой таблицы для примера, естественно на самом договоре ее нет - а если бы и была это никак не изменило бы собственно "формы договора"

  Ответить  
 
 автор: час   (03.04.2007 в 20:12)   личное сообщение
 
 

Понятно...
просто выглядит необычно.

  Ответить  
 
 автор: час   (02.04.2007 в 10:52)   личное сообщение
 
 

извините а в каком это формате?
Что-то абра кадабра тока и всё...

  Ответить  
 
 автор: Explorer   (03.04.2007 в 09:55)   личное сообщение
 
 

попробуй сохранить и открыть... вероятно IE не понимает расширения dot и открывает как текст

  Ответить  
 
 автор: час   (03.04.2007 в 20:05)   личное сообщение
 
 

Спасибо попробую.
попробовал сохранил как dot
и просто сохранил
абра кадабра.

  Ответить  
 
 автор: osmor   (01.04.2007 в 20:34)   личное сообщение
 
 

http://hiprog.com/index.php?option=com_content&task=view&id=379&Itemid=35

  Ответить  
 
 автор: час   (02.04.2007 в 10:49)   личное сообщение
 
 

Спасибо пойду почитаю...
http://hiprog.com/index.php?option=com_content&task=view&id=379&Itemid=35
ААААААА эт я читал Спасибо.

  Ответить  
 
 автор: Егор   (04.04.2007 в 12:11)   личное сообщение
 
 

e Word.application есть класное свойство Protect(защита )-попробуй

  Ответить  
 
 автор: час   (06.04.2007 в 11:36)   личное сообщение
 
 

Это для того, чтобы не поправили часть текста?

  Ответить  
 
 автор: егор   (10.04.2007 в 11:01)   личное сообщение
 
 

Это чтобы весь тект не правили.

  Ответить  
 
 автор: palarm   (10.04.2007 в 11:26)   личное сообщение
 
 

А зачем тогда в Word выводить? Ведь для того и выводят, чтобы правили. А иначе делай обычный отчет Access.
Вообще, чего вы тут намудрили, только заморочили человека... Все просто: делаешь документ в Worde, втыкаешь метки посреди текста (обзываешь их также, как и соответвующие параметры в нижепреведенной процедуре) и созраняешь как Dot. Потом создаешь процедуру типа такой:

Function ВыводПоШаблону(ПутьШаблона As String, ПутьДокумента As String, ИмяШаблона As String) As Boolean
On Error GoTo 999
Dim app As Word.Application
Dim strDOC As String, strDOT As String, DateFormatLong As String
Dim DlgUser As Integer
Dim ИтДопОткос, ИтКомплОткос, ИтогоОткосы, ВсегоПоЗаказу As Double
    DateFormatLong = FormatDateTime(Date, vbLongDate)
    strDOT = ПутьШаблона
    strDOC = ПутьДокумента & [НомЗаказа] & [КодФирмача] & ".doc"
    If Dir(strDOC) <> "" Then
        DlgUser = MsgBox("Документ с таким именем ранее уже был создан. Заменить его?", vbYesNo, NomWers)
        If DlgUser = vbNo Then
            Set app = CreateObject("Word.Application")
            With app
                .Visible = True
                .Documents.Open strDOC
            End With
            Set app = Nothing
        Else
            GoTo nn
        End If
    Else
nn:
        ИтДопОткос = Nz(DLookup("СумЦена", "СправДоб", "[КодЗаказа]=" & Me.КодЗаказа & " and [Параметр]=" & "'" & "откосы" & "'"), 0)
        ИтКомплОткос = Nz(DLookup("СумЦена", "СправКомпл", "[КодЗаказа]=" & Me.КодЗаказа & " and [Параметр]=" & "'" & "откосы" & "'"), 0)
        ИтогоОткосы = ИтДопОткос + ИтКомплОткос + Nz(Forms!Заказы!Панели, 0) + Nz(Forms!Заказы!ВнутрОбналичка, 0) + Nz(Forms!Заказы!ЦенаПорога, 0)
        ВсегоПоЗаказу = Forms!Заказы!Итог - (Nz(Forms!Заказы!Скидка, 1) * Forms!Заказы!Итог) + ИтогоОткосы - Nz(Forms!Заказы!СкидкаОткосы, 0) * ИтогоОткосы
        Set app = New Word.Application
        app.Visible = True
        app.Documents.Add strDOT
        With app.ActiveDocument
            If ИмяШаблона = "АктПриемки" Then
                .Bookmarks.Item("Заказчик").Range.Text = "" & [Заказчик]
                .Bookmarks.Item("НомЗакКодЗак").Range.Text = "" & [НомЗаказа] & "" & [КодФирмача] & " от " & "" & [ДатаЗаказа]
                .Bookmarks.Item("НомЗакКодЗак1").Range.Text = "" & [НомЗаказа] & "" & [КодФирмача] & " от " & "" & [ДатаЗаказа]
            ElseIf ИмяШаблона = "Договор" Or ИмяШаблона = "ДоговорВремянка" Then
                .Bookmarks.Item("НомЗакКодзак2").Range.Text = "" & [НомЗаказа] & "" & [КодФирмача]
                .Bookmarks.Item("ТекДата").Range.Text = Date
                .Bookmarks.Item("ТекДата1").Range.Text = Date + 2 & "г."
                .Bookmarks.Item("СумПроп").Range.Text = Num2Str(ВсегоПоЗаказу)
                .Bookmarks.Item("Текст1").Range.Text = [Заказчик] & ", " & IIf(Forms!Заказы!КодФирмача = "н", "действующее на основании устава", "действующий(ая) на основании " & [Паспорт]) & ", " & IIf(Forms!Заказы!КодФирмача = "н", "именуемое в дальнейшем Заказчик и ", "именуемый(ая) в дальнейшем Заказчик и ") & ДанныеОрг.Form!Исполнитель & " " & ДанныеОрг.Form!Ини & IIf(ДанныеОрг.Form!Исполнитель = "предприниматель", ", действующий на основании свидетельства индивидуального предпринимателя, именуемый ", ", действующее на основании устава, именуемое ") & "в дальнейшем Исполнитель, заключили настоящий договор о нижеследующем."
                .Bookmarks.Item("Текст2").Range.Text = IIf([КодФирмача] = "н", "Срок выполнения работ с " & DateFormatLong & " до ______  _______________ " & Year(Date) & "г. при условии поступления денежных средств на расчетный счет Исполнителя не позднее______ _______________" & Year(Date) & "г.  Исполнитель имеет право выполнить работы досрочно.", "Срок выполнения работ с " & Date & " до______  _______________" & Year(Date) & "г. Исполнитель имеет право выполнить работы досрочно.")
                .Bookmarks.Item("Текст3").Range.Text = IIf([КодФирмача] = "н", "Оплата заказчиком услуг осуществляется путем перечисления средств на расчетный счет Исполнителя, указанный в настоящем договоре.", "Оплата Заказчиком услуг осуществляется путем внесения наличными в кассу Исполнителя 70% при заключении договора и 30% при подписании акта приемки - передачи в момент окончания работ на месте монтажа.")
                .Bookmarks.Item("Исполнитель").Range.Text = ДанныеОрг.Form!Исполнитель & " " & ДанныеОрг.Form!Ини
                .Bookmarks.Item("АдресФирмы").Range.Text = "Адрес: " & ДанныеОрг.Form!АдресФирмы
                .Bookmarks.Item("ИНН").Range.Text = "ИНН " & ДанныеОрг.Form!ИНН
                .Bookmarks.Item("Банк").Range.Text = "" & ДанныеОрг.Form!Банк
                .Bookmarks.Item("РС").Range.Text = "Р/с " & ДанныеОрг.Form!РС
                .Bookmarks.Item("КС").Range.Text = "К/с " & ДанныеОрг.Form!КС
                .Bookmarks.Item("БИК").Range.Text = "БИК " & ДанныеОрг.Form!БИК
                .Bookmarks.Item("Телефон").Range.Text = "Телефон: " & ДанныеОрг.Form!Телефон
                .Bookmarks.Item("ДопТелефон").Range.Text = "                 " & ДанныеОрг.Form!ДопТелефон
                .Bookmarks.Item("Заказчик").Range.Text = Nz(Forms!Заказы!Заказчик, "")
                .Bookmarks.Item("Паспорт").Range.Text = IIf(IsNull(ИНН), Nz(Forms!Заказы!Паспорт, ""), "ИНН " & ИНН)
                .Bookmarks.Item("ВыданПаспорт").Range.Text = IIf(IsNull(Банк), "выдан " & Nz(Forms!Заказы!ВыданПаспорт.Column(1), ""), Банк)
                .Bookmarks.Item("АдресЖит").Range.Text = IIf(Not IsNull(АдресЖит), "Адрес: " & Forms!Заказы!АдресЖит, "")
                .Bookmarks.Item("ТелЗаказчика").Range.Text = IIf(Not IsNull(Телефон), "Телефон: " & Forms!Заказы!Телефон, "")
                .Bookmarks.Item("ДопТелЗаказчика").Range.Text = IIf(Not IsNull(Сотовый), "Доп. телефон: " & Forms!Заказы!Сотовый, "")
                .Bookmarks.Item("РСЗак").Range.Text = IIf(Not IsNull(РС), "Р/с " & Forms!Заказы!РС, "")
                .Bookmarks.Item("КСЗак").Range.Text = IIf(Not IsNull(КС), "К/с " & Forms!Заказы!КС, "")
                .Bookmarks.Item("БИКЗак").Range.Text = IIf(Not IsNull(БИК), "БИК " & Forms!Заказы!БИК, "")
                .Bookmarks.Item("ПримЗак").Range.Text = IIf(Not IsNull(ПримОргЗаказчика), Forms!Заказы!ПримОргЗаказчика, "")
            End If
            .SaveAs strDOC
        End With
        Set app = Nothing
    End If
    ВыводПоШаблону = True
Exit_:
    Exit Function
999:
    ВыводПоШаблону = False
    MsgBox Err.Description
    Err.Clear
    app.Quit
    Resume Exit_
End Function

я кинул как есть, не стал там ничего править - думаю разберешься.
Это конечно самый простой вариант, можно и поумнее: хранить параметры в таблице и дергать их оттуда через DLookup.
Вот еще вдогонку, чтобы писало не фераПя, а февраля
Function StringMonth(dateData As Date, strTip As String) As String
  If Month(dateData) = 2 Then
     StringMonth = Replace(Format(dateData, strTip), "п", "л")
  Else
     StringMonth = Format(dateData, strTip)
  End If
End Function

  Ответить  
 
 автор: palarm   (10.04.2007 в 11:33)   личное сообщение
 
 

Блин.... как топик раздуло... не расчитал...

  Ответить  
 
 автор: час   (10.04.2007 в 15:26)   личное сообщение
 
 

Спасибо большое.
Я имею ввиду, что при правке договора юзеры могут метки постирать нафиг, а кто им потом с теми же названиями и в нужном месте метки проставит...

  Ответить  
 
 автор: palarm   (10.04.2007 в 15:32)   личное сообщение
 
 

Так они же "постирают" метки в документе WORD, а не в шаблоне DOT. Ведь в процедуре создается НОВЫЙ документ .doc на основе шаблона. И пускай себе стирают...

  Ответить  
 
 автор: час   (10.04.2007 в 15:34)   личное сообщение
 
 

АААААААААААААААААА
Извините не внимателен был...

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList