Разработка специализированного программного продукта по работе со счетами-фактуры

Анализ документов, регулирующих применение счетов-фактур. Сущность понятия реляционная модель, теоретическая основа. Характеристика программы Visual FoxPro 5.0. Особенности техники безопасности при работе с ЭВМ. Виды деятельности ОАО "СаратовОблГаз".

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 22.05.2012
Размер файла 710,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

** Code for adding record

this.Parent.OldAlias = ALIAS() &&save alias in case reverting

this.Parent.oldrec = RECNO() &&save record in case reverting

IF CURSORGETPROP("SourceType")#3 AND ;

!CURSORGETPROP("offline") AND ;

!CURSORGETPROP("SendUpdates")

=MESSAGEBOX(C_NOUPDATE_LOC)

RETURN

ENDIF

APPEND BLANK

OTHERWISE

** Code for adding record

this.Parent.OldAlias = ALIAS() &&save alias in case reverting

this.Parent.oldrec = RECNO() &&save record in case reverting

lPrimeKey = .F. &&is child key primary index

IF !EMPTY(THIS.Parent.oDataRelation)

oRel = EVAL(THIS.Parent.oDataRelation)

ENDIF

DO CASE

CASE TYPE("m.oRel") = "O" &&data environment

WITH oRel

cPapaAlias = .ParentAlias

cPapaKey = .RelationalExpr

cChildAlias = .ChildAlias

cChildKey = .ChildOrder

ENDWITH

oRel = .NULL. &&reset

CASE !EMPTY(THIS.Parent.viewkey) &&using views

cPapaAlias = ALIAS()

cPapaKey = THIS.Parent.ParentKey

cChildAlias = THIS.Parent.GridAlias

cChildKey = THIS.Parent.viewkey

* Need to check if Key field is updatable

IF CURSORGETPROP("SourceType",m.cChildAlias)#3 AND !CURSORGETPROP("offline",m.cChildAlias) AND ;

ATC(","+m.cChildKey+",",","+CURSORGETPROP("UpdatableFieldList",m.cChildAlias)+",")=0

lBadViewKey = .T.

ENDIF

OTHERWISE

cPapaAlias = ALIAS()

cPapaKey = RELATION(1)

cChildAlias = THIS.Parent.GridAlias

cChildKey = ORDER(m.cChildAlias)

ENDCASE

* Test to see if both keys are of the same data type

SELECT (THIS.Parent.GridAlias)

cGridKeyType = ""

IF EMPTY(THIS.Parent.viewkey) AND !EMPTY(m.cChildKey) &&regular table used

* Get the Child Key field since only index tag is here

* if these is an expression, then default to blank.

cTagName = ""

FOR i = 1 TO TagCount("")

IF UPPER(TAG(m.i)) == UPPER(m.cChildKey)

cTagName = KEY(m.i)

lPrimeKey = PRIMARY(m.i)

EXIT

ENDIF

ENDFOR

* Check if we have an index expression here.

IF ATC("(",m.cTagName)#0 OR ATC("+",m.cTagName)#0

cChildKey = ""

ELSE

cChildKey = m.cTagName

cGridKeyType = TYPE(m.cChildKey)

ENDIF

ENDIF

IF CURSORGETPROP("SourceType",m.cPapaAlias)#3 AND !CURSORGETPROP("offline",m.cPapaAlias) AND ;

!CURSORGETPROP("SendUpdates",m.cPapaAlias)

lNoSendParentUpdates = .T.

ENDIF

IF CURSORGETPROP("SourceType",m.cChildAlias)#3 AND !CURSORGETPROP("offline",m.cChildAlias) AND ;

!CURSORGETPROP("SendUpdates",m.cChildAlias)

lNoSendChildUpdates = .T.

ENDIF

* Check if have two views and both do not send updates

IF m.lNoSendParentUpdates AND m.lNoSendChildUpdates

=MESSAGEBOX(C_NOUPDATE_LOC)

RETURN

ENDIF

SELECT (THIS.Parent.OldAlias )

IF !EMPTY(m.cGridKeyType) AND m.cGridKeyType # TYPE(m.cPapaKey)

lBadChildKey = .T.

ENDIF

DO CASE

CASE m.lNoSendParentUpdates AND (m.lBadViewKey OR m.lBadChildKey)

=MESSAGEBOX(C_NOUPDATE_LOC)

RETURN

CASE m.lPrimeKey AND m.lNoSendParentUpdates

=MESSAGEBOX(C_NOUPDATE2_LOC)

RETURN

CASE m.lNoSendChildUpdates &&child view does not send updates

IF MESSAGEBOX(C_NOCHILDUPDATE_LOC,MB_Q_YESNO) # MB_A_YES

RETURN

ENDIF

APPEND BLANK

CASE m.lBadViewKey &&view key in not updatable

IF MESSAGEBOX(C_KEYFLDNOUPDATE_LOC,MB_Q_YESNO) # MB_A_YES

RETURN

ENDIF

APPEND BLANK

CASE m.lBadChildKey &&bad child key -- different data type from parent

IF MESSAGEBOX(C_BADCHILDKEY_LOC,MB_Q_YESNO) # MB_A_YES

RETURN

ENDIF

APPEND BLANK

OTHERWISE

* Need to check if Key field is updatable

lUpdatableParentKey = .T.

IF CURSORGETPROP("SourceType",m.cPapaAlias)#3 AND !CURSORGETPROP("offline",m.cPapaAlias) AND;

ATC(","+m.cPapaKey+",",","+CURSORGETPROP("UpdatableFieldList",m.cPapaAlias)+",")=0

* cPapaKey = ""

lUpdatableParentKey = .F.

ENDIF

* Check for expression in cPapaKey if so, then do not update record with keyvalue

IF ATC("(",m.cPapaKey)#0 OR ATC("+",m.cPapaKey)#0

cPapaKey = ""

ENDIF

nSaveSess = SET("DATASESSION")

oAddRec = CREATE("GridAddRec")

IF TYPE("m.oAddRec") # "O"

=MESSAGEBOX(C_NOOBJ_LOC)

RETURN

ENDIF

oAddRec.ChildPrimaryKey = m.lPrimeKey

oAddRec.UpdatableParentKey = m.lUpdatableParentKey

oAddRec.NoSendUpdates = m.lNoSendParentUpdates

oAddRec.KeyField = m.cPapaKey

oAddRec.KeyValue = IIF(!EMPTY(m.cPapaKey),EVAL(m.cPapaKey),"")

oAddRec.runaddform()

IF oAddRec.AddOption = OPT_CANCEL

RETURN

ENDIF

SET DATASESSION TO nSaveSess

SELECT (THIS.Parent.OldAlias)

IF TYPE("oAddRec.KeyValue") = "C"

oAddRec.KeyValue = TRIM(oAddRec.KeyValue)

ENDIF

* Add record to parent table

nSaveRec = RECNO()

IF INLIST(oAddRec.AddOption,OPT_ADD_PARENT,OPT_ADD_BOTH)

IF EMPTY(m.cPapaKey)

APPEND BLANK IN (m.cPapaAlias)

ELSE

INSERT INTO (m.cPapaAlias) ((oAddRec.KeyField)) VALUES(oAddRec.KeyValue)

ENDIF

ENDIF

nSaveRec2 = RECNO()

* Add child record

IF INLIST(oAddRec.AddOption,OPT_ADD_CHILD,OPT_ADD_BOTH)

* Need to check

GO m.nSaveRec

IF EMPTY(m.cChildKey) OR TYPE("m.cChildKey")#TYPE('oAddRec.KeyValue')

APPEND BLANK IN (m.cChildAlias)

ELSE

INSERT INTO (m.cChildAlias) ((m.cChildKey)) VALUES(oAddRec.KeyValue)

ENDIF

GO m.nSaveRec2

ENDIF

ENDCASE

ENDCASE

this.Parent.EditMode = !THIS.Parent.EditMode

this.Parent.AddMode = THIS.Parent.EditMode

this.Parent.topfile = .F.

thisform.LockScreen = .T.

this.Parent.ButtonRefresh()

this.Parent.NavRefresh()

thisform.LockScreen = .F.

ENDPROC

PROCEDURE Error

LPARAMETERS nError, cMethod, nLine

this.parent.error(m.nError, m.cMethod, m.nLine)

ENDPROC

PROCEDURE Click

#DEFINE MSGBOX_YES 6

#DEFINE C_MSGBOX1 36

#DEFINE C_DELETE_LOC "Aы oотите удалить yту запись?"

#DEFINE C_NOLOCK_LOC "Запись не может быть удалена, так как используется."

* Note: Cascading deletes should be handled via RI triggers in DBC!

IF DELETED()

RECALL

ELSE

IF MESSAGEBOX(C_DELETE_LOC,C_MSGBOX1) = MSGBOX_YES

Delete

IF THIS.Parent.UpdateRows() &&success

* Success

IF !EOF()

Skip 1

ENDIF

IF EOF() AND !BOF()

Skip -1

ENDIF

ENDIF

thisform.LockScreen = .T.

this.Parent.ButtonRefresh()

this.Parent.NavRefresh()

thisform.LockScreen = .F.

ENDIF

ENDIF

IF THISFORM.ShowWindow = 2

Activate Window (THISFORM.Name)

ENDIF

ENDPROC

PROCEDURE Error

LPARAMETERS nError, cMethod, nLine

this.parent.error(m.nError, m.cMethod, m.nLine)

ENDPROC

PROCEDURE Click

#DEFINE C_NOUPDATE_LOC "You cannot edit because the view(s) selected does not send updates."

LOCAL lNoSendParentUpdates,lNoSendChildUpdates

LOCAL aTablesUsed,nTablesUsed,i

** Reverting record

IF THIS.Parent.EditMode

IF THIS.Parent.usedataenv

SELECT (THIS.Parent.OldAlias)

IF CURSORGETPROP("Buffering")>1

=TableRevert(.T.)

ENDIF

IF !EMPTY(THIS.Parent.GridAlias)

SELECT (THIS.Parent.GridAlias)

IF CURSORGETPROP("Buffering")>1

=TableRevert(.T.)

ENDIF

ENDIF

ELSE

DIMENSION aTablesUsed[1]

m.nTablesUsed = AUSED(aTablesUsed)

FOR i = 1 TO m.nTablesUsed

IF CURSORGETPROP("Buffering",aTablesUsed[m.i,1])>1

=TableRevert(.T.,aTablesUsed[m.i,1])

ENDIF

ENDFOR

ENDIF

* Go back to original place

SELECT (THIS.Parent.OldAlias)

IF RECCOUNT() < THIS.Parent.oldrec &&added record at EOF()

GO TOP

ELSE

GO THIS.Parent.oldrec

ENDIF

ELSE

* Check to see if view allows updates

IF CURSORGETPROP("SourceType")#3 AND !CURSORGETPROP("offline") AND;

!CURSORGETPROP("SendUpdates")

lNoSendParentUpdates = .T.

ENDIF

IF !EMPTY(THIS.Parent.GridAlias) AND ;

CURSORGETPROP("SourceType",THIS.Parent.GridAlias)#3 AND ;

!CURSORGETPROP("offline",THIS.Parent.GridAlias) AND ;

!CURSORGETPROP("SendUpdates",THIS.Parent.GridAlias)

lNoSendChildUpdates= .T.

ENDIF

IF (m.lNoSendChildUpdates AND m.lNoSendParentUpdates) OR;

(EMPTY(THIS.Parent.GridAlias) AND m.lNoSendParentUpdates)

=MESSAGEBOX(C_NOUPDATE_LOC)

RETURN

ENDIF

this.Parent.OldAlias = ALIAS() &&save alias in case reverting

this.Parent.oldrec = RECNO() &&save record in case reverting

ENDIF

** Editing record

this.Parent.EditMode = !THIS.Parent.EditMode

this.Parent.AddMode = .F.

thisform.LockScreen = .T.

this.Parent.ButtonRefresh()

this.Parent.NavRefresh()

thisform.LockScreen = .F.

ENDPROC

PROCEDURE Error

LPARAMETERS nError, cMethod, nLine

this.parent.error(m.nError, m.cMethod, m.nLine)

ENDPROC

Размещено на Allbest.ru


Подобные документы

  • Анализ использования автоматизированной системы управления материально-техническим снабжением и средств программирования. Разработка программы на языке Visual FoxPro, процесс ее работы и отладки. Мероприятия по технике безопасности при работе на ЭВМ.

    дипломная работа [1,0 M], добавлен 29.06.2012

  • Этапы разработки программы "Информационная система ГИБДД". Характеристика понятия и видов интерфейса программного продукта. Анализ и экономическое обоснование разрабатываемой программы. Изучение общих требований по технике безопасности при работе на ПК.

    дипломная работа [3,9 M], добавлен 27.02.2010

  • Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.

    курсовая работа [585,5 K], добавлен 24.03.2009

  • Общая характеристика деятельности Калининградского филиала федерального государственного бюджетного учреждения "Центр системы мониторинга рыболовства и связи". Инструктаж на рабочем месте. Анализ базы данных предприятия с помощью программы Visual FoxPro.

    отчет по практике [18,7 K], добавлен 10.02.2014

  • Теоретические основы создания баз данных в Visual Foxpro 9.0. Описание программы, использование ее команд. Создание табличной базы данных, отношений между таблицами в многотабличной базе данных больных в больнице. Редактирование табличного отчета.

    курсовая работа [681,2 K], добавлен 19.12.2013

  • Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.

    дипломная работа [1008,9 K], добавлен 13.10.2013

  • Особенности алгоритмов, критерии качества. Создание и применение программного продукта на языке Delphi. Тип операционной системы. Внутренняя структура программного продукта. Руководство пользователя и программиста, расчет себестоимости и цены программы.

    дипломная работа [1,5 M], добавлен 12.06.2009

  • Разработка программного продукта "ИС Автотранспорт". Автоматизация функционирования автопарка и временного склада товаров, учета заявок клиентов и заполнения путевых листов. Реляционная модель базы данных. Описание функционирования программного продукта.

    дипломная работа [1,8 M], добавлен 14.03.2017

  • Обзор возможностей, базовых классов и элементов управления Microsoft Visual Foxpro, описание функций и возможностей языка SQL. Постановка задачи, руководство пользователя и листинг программы. Компоненты информационной системы, основные функции СУБД.

    курсовая работа [360,1 K], добавлен 12.06.2010

  • Статус, структура и система управления функциональных подразделений и служб предприятия. Правила и нормы охраны труда, техники безопасности при работе с вычислительной техникой. Тестирование программного продукта. Составление руководства пользователя.

    отчет по практике [4,8 M], добавлен 31.03.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.