Initial commit - tasks v1.1.14
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
18
.gitignore
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
# Subversion metadata (SVN rămâne activ în paralel)
|
||||
.svn/
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
||||
*.bat
|
||||
|
||||
# Visual FoxPro compiled/generated files
|
||||
*.exe
|
||||
*.fxp
|
||||
*.bak
|
||||
*.err
|
||||
|
||||
# Local configuration with secrets
|
||||
settings.ini
|
||||
|
||||
# Logs
|
||||
LOG.txt
|
||||
84
CLAUDE.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
Visual FoxPro 9.0 desktop application for task/project management and software distribution tracking. The app manages work assignments (tasks/lucrări), client software versions, and generates ROA update XML files for client auto-update mechanisms. Backend is Oracle via ODBC. Language of code and comments is Romanian.
|
||||
|
||||
## Building & Running
|
||||
|
||||
There is no command-line build system. Compilation happens inside the Visual FoxPro 9.0 IDE:
|
||||
|
||||
- **Build executable:** Open `tasks.pjx` in VFP IDE → Project → Build Executable → produces `tasks.exe`
|
||||
- **Run interactively:** `tasks.exe` (GUI mode)
|
||||
- **Run silently with auto XML generation:** `tasks.exe "s" "xml_roa_auto"`
|
||||
|
||||
No test framework and no linter exist for this project.
|
||||
|
||||
## Configuration
|
||||
|
||||
`settings.ini` (at project root) is the primary configuration file. Key sections:
|
||||
|
||||
- `[connection]` — Oracle ODBC credentials for `CENTRAL`, `CONTAFIN_ORACLE`, `SOFT_SERII` schemas
|
||||
- `[folder]` — Output paths for ROA XML, SQL scripts, and Contafin exports
|
||||
- `[script]` — SQL script filename prefixes per module
|
||||
- `[wrap]` — Executable wrapping/encryption settings
|
||||
|
||||
A template lives at `settings.ini.tmpl`.
|
||||
|
||||
## Architecture
|
||||
|
||||
### Entry Point & Initialization
|
||||
|
||||
`programe/main.prg` is the startup module. It sets global variables, loads class libraries, configures paths from `settings.ini`, establishes the Oracle connection (via `conecteaza()` in `programe/proceduri_sql.prg`), and opens the main menu/form.
|
||||
|
||||
Key globals set in `main.prg`: `gnHandle` (DB connection), `gcAppPath`, `gcDataPath`, `gcTempPath`, `gnIdUtilizator`, `gnIdClient`, `gnIdProgram`, `gcProgrameChangeLogsFile`.
|
||||
|
||||
### File Types
|
||||
|
||||
| Extension | Purpose |
|
||||
|-----------|---------|
|
||||
| `.prg` | Source procedures/functions |
|
||||
| `.scx/.sct` | Form definition + code |
|
||||
| `.vcx/.vct` | Class library definition + code |
|
||||
| `.frx/.frt` | Report definition + code |
|
||||
| `.mnx/.mnt/.mpr` | Menu definition |
|
||||
| `.fxp` | Compiled program (auto-generated) |
|
||||
| `.pjx/.pjt` | VFP project file |
|
||||
|
||||
### Core Modules
|
||||
|
||||
**`programe/proceduri_sql.prg`** — Database layer. `conecteaza(host, user, pass)` opens ODBC connection into `gnHandle`. `executaSql(cSql)` runs queries.
|
||||
|
||||
**`programe/oproceduri_comune.prg`** — Defines `oexecutor` class: the main SQL execution object with properties `nHandle`, `cSql`, `cCursor`, `nSucces`, `cEroare`, `lReconnect`. `oExecute()` runs queries and populates cursors, handles reconnection.
|
||||
|
||||
**`programe/proceduri.prg`** — Business logic: `EditTask()`, `EditLucrare()`, `genereaza_xml_roa()`, `genereaza_xml_roa_tot()`. The XML generation queries `VSC_PROGRAME_CLIENTI` and writes `ROASTART_<client>.xml` to the configured output folder.
|
||||
|
||||
**`programe/actualizare_roa.prg` / `clase/actualizareroa.vcx`** — ROA update generation workflow.
|
||||
|
||||
**`programe/generare_script.prg` / `clase/generare_script.vcx`** — SQL migration script generation.
|
||||
|
||||
**`clase/execute_script.vcx`** — Applies SQL scripts to target databases with progress tracking, logging, and rollback on error. Output goes to timestamped folders under `roa_central/`.
|
||||
|
||||
**`programe/rapoarte.prg`** — Report runner using `utile/foxypreviewer.app` for PDF/RTF/HTML output. Report templates are `.frx` files in `rapoarte/`.
|
||||
|
||||
### UI Layer
|
||||
|
||||
Forms are in `ferestre/` (`.scx` files). All inherit from `clase/_frm_base.vcx`. Grids inherit from `clase/_grd_base.vcx`. The main tasks form is `ferestre/frm_tasks.scx`.
|
||||
|
||||
### Data Flow
|
||||
|
||||
```
|
||||
settings.ini → conecteaza() → gnHandle (Oracle ODBC)
|
||||
↓
|
||||
oexecutor.oExecute(cSql) → cursor
|
||||
↓
|
||||
Business logic (proceduri.prg, *.vcx classes)
|
||||
↓
|
||||
Forms (ferestre/*.scx) / Reports (rapoarte/*.frx) / XML output
|
||||
```
|
||||
|
||||
### Version History
|
||||
|
||||
`changelog_tasks.txt` contains the full version history in Romanian. Current version: **1.1.14** (January 2021). `programe_changelogs.xml` tracks program-level change metadata for the ROA distribution system.
|
||||
82
ROASTART_.xml
Normal file
@@ -0,0 +1,82 @@
|
||||
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
|
||||
<VFPData>
|
||||
<xsd:schema id="VFPData" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="VFPData" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="crsxmloutnews" minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="item" minOccurs="0">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="30"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="version" minOccurs="0">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="30"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="fileurl" minOccurs="0">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="105"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="usermsg">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="1"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
<xsd:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<crsxmloutnews>
|
||||
<item>COMUNROA</item>
|
||||
<version>1.0.30</version>
|
||||
<fileurl>\_ARHIVE\COMUNROA\COMUNROA-1.0.30.ZIP</fileurl>
|
||||
<usermsg/>
|
||||
</crsxmloutnews>
|
||||
<crsxmloutnews>
|
||||
<item>DEV_USERREPORTS</item>
|
||||
<version>20161020</version>
|
||||
<fileurl>\_ARHIVE\USERREPORTS\DEV_USERREPORTS-20161020.ZIP</fileurl>
|
||||
<usermsg/>
|
||||
</crsxmloutnews>
|
||||
<crsxmloutnews>
|
||||
<item>ROAPRINT</item>
|
||||
<version>3.0.3</version>
|
||||
<fileurl>\_ARHIVE\ROAPRINT\ROAPRINT-3.0.3.ZIP</fileurl>
|
||||
<usermsg/>
|
||||
</crsxmloutnews>
|
||||
<crsxmloutnews>
|
||||
<item>ROASTART</item>
|
||||
<version>2.2.9</version>
|
||||
<fileurl>\_ARHIVE\ROASTART\ROASTART-2.2.9.ZIP</fileurl>
|
||||
<usermsg/>
|
||||
</crsxmloutnews>
|
||||
<crsxmloutnews>
|
||||
<item>ROMFAST_USERREPORTS</item>
|
||||
<version>20131203</version>
|
||||
<fileurl>\_ARHIVE\USERREPORTS\ROMFAST_USERREPORTS-20131203.ZIP</fileurl>
|
||||
<usermsg/>
|
||||
</crsxmloutnews>
|
||||
<crsxmloutnews>
|
||||
<item>WERT_USERREPORTS</item>
|
||||
<version>20161019</version>
|
||||
<fileurl>\_ARHIVE\USERREPORTS\WERT_USERREPORTS-20161019.ZIP</fileurl>
|
||||
<usermsg/>
|
||||
</crsxmloutnews>
|
||||
</VFPData>
|
||||
53
SETTINGS.XML
Normal file
@@ -0,0 +1,53 @@
|
||||
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
|
||||
<VFPData>
|
||||
<xsd:schema id="VFPData" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="VFPData" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="settings" minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="host">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="100"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="schema">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="100"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="parola">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="100"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="idutilizator" minOccurs="0">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:decimal">
|
||||
<xsd:totalDigits value="10"/>
|
||||
<xsd:fractionDigits value="0"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
<xsd:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<settings>
|
||||
<host>ROA_ROMFAST</host>
|
||||
<schema>SOFT</schema>
|
||||
<parola>SOFT</parola>
|
||||
<idutilizator>5</idutilizator>
|
||||
</settings>
|
||||
</VFPData>
|
||||
BIN
backup/APPWIZ.VCT
Normal file
52
backup/SETTINGS.XML.TMPL
Normal file
@@ -0,0 +1,52 @@
|
||||
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
|
||||
<VFPData>
|
||||
<xsd:schema id="VFPData" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="VFPData" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="settings" minOccurs="0" maxOccurs="unbounded">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="host">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="100"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="schema">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="100"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="parola">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:string">
|
||||
<xsd:maxLength value="100"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
<xsd:element name="idutilizator" minOccurs="0">
|
||||
<xsd:simpleType>
|
||||
<xsd:restriction base="xsd:decimal">
|
||||
<xsd:totalDigits value="10"/>
|
||||
<xsd:fractionDigits value="0"/>
|
||||
</xsd:restriction>
|
||||
</xsd:simpleType>
|
||||
</xsd:element>
|
||||
</xsd:sequence>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
<xsd:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="lax"/>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<settings>
|
||||
<host>ROA_ROMFAST</host>
|
||||
<schema>SOFT</schema>
|
||||
<parola>SOFT</parola>
|
||||
</settings>
|
||||
</VFPData>
|
||||
BIN
backup/appwiz.vcx
Normal file
33
backup/exemplu.prg
Normal file
@@ -0,0 +1,33 @@
|
||||
LOCAL lnHandle
|
||||
lnHandle=SQLCONNECT([jcsserver],[soft],[123])
|
||||
lcSql=[select * from vtasks]
|
||||
lnSucces = SQLEXEC(lnHandle,lcSql,[cursorprg])
|
||||
IF lnSucces < 0
|
||||
MESSAGEBOX("Eroare la select")
|
||||
ELSE
|
||||
SELECT cursorprg
|
||||
BROWSE
|
||||
ENDIF
|
||||
|
||||
*!* lcDescriere=[descriere]
|
||||
*!* lcData = TTOC(DATEtime(),1)
|
||||
*!* lnEstimareInitiala = 5
|
||||
*!* lcSql=[insert into tasks(descriere,dataora_inceput,estimare_initiala) values(']+lcDescriere+[',to_date(']+lcData+[','YYYYMMDDHH24miss'),] + ALLTRIM(STR(lnEstimareInitiala)) + [)]
|
||||
*!* lnSucces = SQLEXEC(lnHandle,lcSql)
|
||||
*!* IF lnSucces < 0
|
||||
*!* MESSAGEBOX("Eroare la insert")
|
||||
*!* ELSE
|
||||
*!* MESSAGEBOX("A fost adaugata inregistrarea!")
|
||||
*!* ENDIF
|
||||
|
||||
lcDescriere2=[descriere modificata]
|
||||
lnIdTask = 1
|
||||
lnEstimareCurenta = 5.15
|
||||
lcSql = [update tasks set descriere = '] + lcDescriere2 + [',estimare_curenta =] + ALLTRIM(STR(lnEstimareCurenta,14,2)) + [ where id_task = ] + ALLTRIM(STR(lnIdTask))
|
||||
lnSucces = SQLEXEC(lnHandle,lcSql)
|
||||
IF lnSucces < 0
|
||||
MESSAGEBOX("Eroare la update")
|
||||
ELSE
|
||||
MESSAGEBOX("A fost modificata inregistrarea!")
|
||||
ENDIF
|
||||
SQLDISCONNECT(lnHandle)
|
||||
BIN
backup/frm_adaugare_task.SCT
Normal file
BIN
backup/frm_adaugare_task.scx
Normal file
BIN
backup/frm_connect.SCT
Normal file
BIN
backup/frm_connect.scx
Normal file
BIN
backup/frm_lucrare_noua.SCT
Normal file
BIN
backup/frm_lucrare_noua.scx
Normal file
BIN
backup/frm_setari.SCT
Normal file
BIN
backup/frm_setari.scx
Normal file
BIN
backup/frm_tasks.SCT
Normal file
BIN
backup/frm_tasks.scx
Normal file
BIN
backup/frm_viz_lucrari.SCT
Normal file
BIN
backup/frm_viz_lucrari.scx
Normal file
297
backup/main.prg
Normal file
@@ -0,0 +1,297 @@
|
||||
Set Talk Off
|
||||
Set Deleted On
|
||||
Set Century On
|
||||
Set Date Dmy SHORT
|
||||
Set Safety Off
|
||||
Set Console Off
|
||||
Set Seconds Off
|
||||
Set Exclusive Off
|
||||
Set Status Off
|
||||
Set Status Bar Off
|
||||
Set Hours To 24
|
||||
Set Exact On
|
||||
Set Ansi On
|
||||
_Screen.WindowState= 2
|
||||
Set NullDisplay To ""
|
||||
*!* =================================================================
|
||||
Public gnConnHandle, gnIdProgram, gnIdUtilizator, ;
|
||||
gnIdClient, gbSpecial, gdData, gcAppName, gcAppPath, gcDataPath
|
||||
Local lcPath
|
||||
|
||||
|
||||
gnConnHandle = -1
|
||||
gnIdUtilizator = 0
|
||||
gnIdProgram = 0
|
||||
gnIdClient = 0
|
||||
gbSpecial = .F.
|
||||
gdData = Date()
|
||||
|
||||
|
||||
gcAppPath = Addbs(Justpath(Sys(16,0)))
|
||||
gcAppName = Juststem(Sys(16,0))
|
||||
Set Default To (gcAppPath)
|
||||
|
||||
gcDataPath = Addbs(gcAppPath) + [test.vcx]
|
||||
Set Classlib To (gcDataPath)
|
||||
|
||||
|
||||
|
||||
|
||||
*!* PUSH MENU _MSYSMENU
|
||||
lcOnShutdown="ShutDown()"
|
||||
On Shutdown &lcOnShutdown
|
||||
On Error ErrorHandler(Error(),Program(),Lineno())
|
||||
|
||||
Push Menu _Msysmenu
|
||||
|
||||
|
||||
*!* SETARI
|
||||
gcSettingsFile = gcAppPath + 'settings.xml'
|
||||
If !File(gcSettingsFile)
|
||||
Messagebox('Nu exista fisierul ' + gcSettingsFile + '!',0+16,'Setari')
|
||||
Shutdown()
|
||||
Return
|
||||
Endif
|
||||
|
||||
Xmltocursor(gcSettingsFile,"settings",512)
|
||||
*!* SETARI ^
|
||||
|
||||
*!* PROGRAME_CHANGELOGS
|
||||
gcProgrameChangeLogsFile = gcAppPath + 'programe_changelogs.xml'
|
||||
If !File(gcProgrameChangeLogsFile)
|
||||
Create Cursor programe_changelogs (id_program i, Program v(100), changelog v(200))
|
||||
Else
|
||||
Xmltocursor(gcProgrameChangeLogsFile,"programe_changelogs",512)
|
||||
Endif
|
||||
|
||||
|
||||
*!* PROGRAME_CHANGELOGS ^
|
||||
|
||||
Private goApp
|
||||
goApp=Createobject("custom")
|
||||
goApp.AddProperty("idutilizator",settings.idutilizator)
|
||||
|
||||
goExecutant = Createobject("Executor")
|
||||
|
||||
Do (gcAppPath + "meniu.mpr")
|
||||
|
||||
Do Form (gcAppPath + "frm_connect.scx")
|
||||
|
||||
If gnConnHandle<0
|
||||
Shutdown()
|
||||
Return
|
||||
Endif
|
||||
|
||||
|
||||
Set Procedure To proceduri.prg Additive && tasks, soft clienti
|
||||
SET PROCEDURE TO proceduri_sql.prg ADDITIVE
|
||||
SET PROCEDURE TO utile.prg ADDITIVE
|
||||
SET PROCEDURE TO rapoarte.prg ADDITIVE
|
||||
|
||||
gcAppPath=Addbs(Justpath(Sys(16,0)))
|
||||
gcAppName=Juststem(Sys(16,0))
|
||||
Set Default To (gcAppPath)
|
||||
lcPath = gcAppPath + "ferestre;" + ;
|
||||
gcAppPath + "clase;" + ;
|
||||
gcAppPath + "programe;" + ;
|
||||
gcAppPath + "meniuri;" + ;
|
||||
gcAppPath + "grafice;" + ;
|
||||
gcAppPath + "date"
|
||||
|
||||
Set Path To (lcPath) Additive
|
||||
|
||||
Set Classlib To appwiz Additive && generare script
|
||||
Set Classlib To comun Additive
|
||||
Set Classlib To utility Additive
|
||||
Set Classlib To Start Additive
|
||||
Set Classlib To gen_script Additive
|
||||
Set Classlib To execute_script Additive
|
||||
Set Classlib To frm_script_aplicat Additive
|
||||
|
||||
Set Procedure To oproceduri_comune.prg Additive
|
||||
Set Procedure To oinit_optiuni.prg Additive
|
||||
Set Procedure To ini.prg Additive
|
||||
Set Procedure To proceduri_genscript.prg Additive
|
||||
|
||||
lnSucces=editLucrare()&&in proceduri.prg
|
||||
Read Events
|
||||
|
||||
*!* =================================================================
|
||||
|
||||
|
||||
*!* =================================================================
|
||||
*!* Release goApp
|
||||
*!* _Screen.MaxButton=.T.
|
||||
*!* _Screen.BorderStyle= 3
|
||||
*!* _Screen.WindowState= 2
|
||||
*!* Pop Menu _Msysmenu
|
||||
|
||||
*!* On Error
|
||||
*!* On Shutdown
|
||||
*!* =================================================================
|
||||
|
||||
|
||||
*!* =================================================================
|
||||
Function ErrorHandler(nError,cMethod,nLine)
|
||||
Local lcErrorMsg,lcCodeLineMsg
|
||||
|
||||
Wait Clear
|
||||
lcErrorMsg=Message()+Chr(13)+Chr(13)
|
||||
lcErrorMsg=lcErrorMsg+"Method: "+cMethod
|
||||
lcCodeLineMsg=Message(1)
|
||||
If Between(nLine,1,10000) And Not lcCodeLineMsg="..."
|
||||
lcErrorMsg=lcErrorMsg+Chr(13)+"Line: "+Alltrim(Str(nLine))
|
||||
If Not Empty(lcCodeLineMsg)
|
||||
lcErrorMsg=lcErrorMsg+Chr(13)+Chr(13)+lcCodeLineMsg
|
||||
Endif
|
||||
Endif
|
||||
If Messagebox(lcErrorMsg,17,_Screen.Caption)#1
|
||||
On Error
|
||||
Return .F.
|
||||
Endif
|
||||
Endfunc
|
||||
|
||||
|
||||
**=============================================
|
||||
Function Shutdown
|
||||
*!* If Type("goApp")=="O" And Not Isnull(goApp)
|
||||
*!* Return goApp.OnShutDown()
|
||||
*!* Endif
|
||||
Do salveazaSetari
|
||||
*DO inchide
|
||||
Do deconectare
|
||||
Cleanup()
|
||||
Pop Menu _Msysmenu
|
||||
*!* If _vfp.StartMode !=0
|
||||
*!* Quit
|
||||
*!* Endif
|
||||
Endfunc
|
||||
**=============================================
|
||||
|
||||
Function Cleanup
|
||||
|
||||
If Cntbar("_msysmenu")=7
|
||||
Return
|
||||
Endif
|
||||
On Error
|
||||
On Shutdown
|
||||
Set Classlib To
|
||||
Set Path To
|
||||
Clear All
|
||||
*Close All
|
||||
Pop Menu _Msysmenu
|
||||
Clear Events
|
||||
Return
|
||||
Endfunc
|
||||
|
||||
**=============================================
|
||||
|
||||
Procedure deconectare
|
||||
Local lcCaption, lnSucces
|
||||
|
||||
lnSucces = -1
|
||||
|
||||
If gnConnHandle > 0
|
||||
lnSucces = SQLDisconnect(gnConnHandle)
|
||||
Endif
|
||||
|
||||
Return lnSucces
|
||||
Endproc && deconectare
|
||||
|
||||
**=============================================
|
||||
|
||||
Procedure conectare
|
||||
Parameters tcHost, tcUser, tcPassword
|
||||
|
||||
gnConnHandle = SQLConnect(tcHost, tcUser, tcPassword)
|
||||
If gnConnHandle < 0
|
||||
Aerror(laEroare)
|
||||
Messagebox(laEroare(2))
|
||||
Endif
|
||||
|
||||
Return gnConnHandle
|
||||
Endproc && conectare
|
||||
|
||||
***=====================================================
|
||||
Define Class Executor As Relation
|
||||
cEroare = []
|
||||
|
||||
Procedure executaSql
|
||||
Lparameters cmdsql,crsName, tlDontShowError
|
||||
Local lnSucces
|
||||
|
||||
lnSucces = -1
|
||||
|
||||
If Pcount()<2
|
||||
crsName=""
|
||||
Endif
|
||||
*LPARAMETERS cmdsql, crsname
|
||||
If gnConnHandle > 0
|
||||
lnSucces=SQLExec(gnConnHandle,cmdsql,crsName)
|
||||
|
||||
If lnSucces < 0
|
||||
Aerror(laEroare)
|
||||
This.cEroare = laEroare(2)
|
||||
If !m.tlDontShowError
|
||||
Messagebox(This.cEroare)
|
||||
Endif
|
||||
Endif
|
||||
Endif
|
||||
|
||||
|
||||
Return lnSucces
|
||||
Endproc
|
||||
Enddefine && Executor
|
||||
|
||||
**======================================
|
||||
|
||||
Procedure salveazaSetari
|
||||
|
||||
If Used('settings')
|
||||
Replace settings.idutilizator With goApp.idutilizator In settings
|
||||
Cursortoxml("SETTINGS",gcSettingsFile,1,512,0,"1")
|
||||
Endif
|
||||
If Used('programe_changelogs')
|
||||
Cursortoxml("programe_changelogs", gcProgrameChangeLogsFile,1,512,0,"1")
|
||||
Endif
|
||||
Endproc
|
||||
|
||||
**======================================
|
||||
** actualizeaza programe_changelogs cu calea catre fisierul changelog pentru un id_program
|
||||
Procedure UpdateProgrameChangeLogs
|
||||
Lparameters tnIdProgram, tcProgram, tcChangeLog
|
||||
|
||||
Local lcSelect
|
||||
lcSelect = Select()
|
||||
|
||||
If Used('programe_changelogs') And !Empty(tcChangeLog)
|
||||
Select programe_changelogs
|
||||
Locate For id_program = tnIdProgram
|
||||
If Found()
|
||||
Replace changelog With Alltrim(tcChangeLog)
|
||||
Else
|
||||
Insert Into programe_changelogs(id_program, Program, changelog) Values (tnIdProgram, Alltrim(tcProgram), Alltrim(tcChangeLog))
|
||||
Endif
|
||||
Endif
|
||||
Select (lcSelect)
|
||||
Endproc
|
||||
|
||||
**======================================
|
||||
** intoarce calea catre fisierul changelog in functie de id_program
|
||||
Function GetChangeLogByIdProgram
|
||||
Lparameters tnIdProgram
|
||||
Local lcSelect, lcChangelog
|
||||
lcSelect = Select()
|
||||
lcChangelog = ""
|
||||
|
||||
If Used('programe_changelogs')
|
||||
Select programe_changelogs
|
||||
Locate For id_program = tnIdProgram
|
||||
If Found()
|
||||
lcChangelog = Alltrim(changelog)
|
||||
Endif
|
||||
Endif
|
||||
|
||||
Select (lcSelect)
|
||||
Return lcChangelog
|
||||
Endfunc
|
||||
BIN
backup/meniu.MNT
Normal file
BIN
backup/meniu.mnx
Normal file
37
backup/proceduri.prg
Normal file
@@ -0,0 +1,37 @@
|
||||
Procedure EditTask
|
||||
parameters tnId
|
||||
|
||||
private poRec
|
||||
lcSql = [select * from tasks where ]+Iif(!Empty(tnId),[ id = ?tnId] , [1=2])
|
||||
lcCursor = Sys(2015)
|
||||
lnSucces = goExecutant.executasql(lcSql,lcCursor)
|
||||
If lnSucces > 0
|
||||
Select (lcCursor)
|
||||
Scatter Name poRec Memo
|
||||
Do Form frm_adaugare_task
|
||||
Endif
|
||||
|
||||
|
||||
Return lnSucces
|
||||
Endproc
|
||||
|
||||
*****==============================================================
|
||||
Procedure EditLucrare
|
||||
parameters tnId
|
||||
|
||||
private poRec
|
||||
*!* IF EMPTY(tnid)
|
||||
|
||||
*!* endif
|
||||
lcSql = [select * from luc_vlucrari_tot where ]+Iif(!Empty(tnId),[ id = ?tnId], [1=2])
|
||||
lcCursor = Sys(2015)
|
||||
lnSucces = goExecutant.executasql(lcSql,lcCursor)
|
||||
If lnSucces > 0
|
||||
Select (lcCursor)
|
||||
Scatter Name poRec Memo
|
||||
poRec.datal = TTOD(poRec.datal)
|
||||
Do Form frm_lucrare_noua
|
||||
Endif
|
||||
Return lnSucces
|
||||
Endproc
|
||||
**************************
|
||||
65
backup/proceduri_sql.prg
Normal file
@@ -0,0 +1,65 @@
|
||||
************************ inceput conecteaza ***************************
|
||||
Procedure conecteaza
|
||||
Lparameters tcHost, tcUser, tcPassword
|
||||
|
||||
gnConnHandle = SQLConnect(tcHost, tcUser, tcPassword)
|
||||
If gnConnHandle < 1
|
||||
Aerror(laEroare)
|
||||
Messagebox(laEroare(2))
|
||||
Endif
|
||||
|
||||
Return gnConnHandle
|
||||
Endproc
|
||||
|
||||
**************************** inceput executaSql ***************************
|
||||
Function executaSql
|
||||
Lparameters cmdSql, crsName, tlShowErr
|
||||
Local lnSucces
|
||||
|
||||
lnSucces = -1
|
||||
|
||||
If Pcount() < 2 And !m.tlShowErr
|
||||
crsName=""
|
||||
Endif
|
||||
|
||||
If gnConnHandle > 0
|
||||
lnSucces=SQLExec(gnConnHandle,cmdSql,crsName)
|
||||
|
||||
If lnSucces < 0 And m.tlShowErr
|
||||
Aerror(laEroare)
|
||||
eroaresql(@laEroare,cmdSql)
|
||||
Endif
|
||||
Endif
|
||||
|
||||
Return lnSucces
|
||||
Endfunc
|
||||
|
||||
************************* inceput deconecteaza ************************
|
||||
Function deconecteaza
|
||||
*Lparameters lnConn
|
||||
Local lnSucces
|
||||
|
||||
lnSucces = -1
|
||||
If lnConn > 0
|
||||
lnSucces = SQLDisconnect(gnConnHandle)
|
||||
Endif
|
||||
|
||||
Return lnSucces
|
||||
Endfunc
|
||||
|
||||
******************************* inceput eroareSql **********************************
|
||||
Procedure eroaresql
|
||||
Lparameters laErr, lcsql
|
||||
|
||||
EXTERNAL ARRAY laErr
|
||||
|
||||
Local lcMesaj
|
||||
|
||||
lcMesaj = [Eroare # : ] + Alltrim(Str(laErr(1))) + crlf + ;
|
||||
[Mesajul : ] + laErr(2) + ;
|
||||
IIF(!Empty(laErr(3)), [Eroare OLE : ] + laErr(3) ,[]) + ;
|
||||
[Aplicatie : ] + laErr(4) + ;
|
||||
IIF(Pcount() = 2, crlf + lcsql, [])
|
||||
Messagebox(lcMesaj,0+16)
|
||||
|
||||
Endproc
|
||||
BIN
backup/sc_form_main.SCT
Normal file
BIN
backup/sc_form_main.scx
Normal file
122
backup/soft_clienti.prg
Normal file
@@ -0,0 +1,122 @@
|
||||
_Screen.WindowState= 2 &&Specifies properties and methods for the main Visual FoxPro window
|
||||
&& 0-normal/1-minimized (minimized to an icon)/2-maximized (enlarged to fill the screen)
|
||||
Set Deleted On &&ignore records that are marked for deletion.
|
||||
Set Century On &&Specifies a four-digit year in a format that includes 10 characters (including date delimiters).
|
||||
Set Date Dmy &&Date/Mounth/Year
|
||||
Set Safety Off &&Determines whether Visual FoxPro displays a dialog box before overwriting an existing file, or whether table or field rules, default values, and error messages are evaluated when changes are made in the Table Designer or with ALTER TABLE
|
||||
Set Console Off &&Suppresses output to the main Visual FoxPro window or to the active user-defined window
|
||||
Set NullDisplay To '*' &&Specifies the text displayed for null values.
|
||||
Set Seconds Off &&Specifies that seconds are not displayed in DateTime values
|
||||
Set Hours To 24
|
||||
Set Exclusive Off &&Allows a table opened on a network to be shared and modified by any user on the network.
|
||||
Set Ansi On &&'Tommy' = 'Tom' is false (.F.)
|
||||
Set Exact On &&Specifies the rules Visual FoxPro uses when comparing two strings of different lengths
|
||||
|
||||
|
||||
Local lcMainClassLib
|
||||
Local lcLastSetTalk, lcLastSetPath, lcLastSetClassLib, lcOnShutdown, lcPath
|
||||
|
||||
*-- Save and configure environment.
|
||||
lcLastSetTalk=Set("TALK")
|
||||
Set Talk Off
|
||||
|
||||
lcLastSetPath=Set("PATH")
|
||||
Public gcAppDir, gcDatePath, gcDataPath, buton, gcTempPath, recordNumber, gnConnHandle
|
||||
Store 2 To buton
|
||||
Store 0 To recordNumeber
|
||||
gnConnHandle = 0
|
||||
|
||||
&&declarare variabile pt. nr crt
|
||||
&& in programul principal
|
||||
Public m.nrord
|
||||
Private nror
|
||||
Declare nror[65000]
|
||||
|
||||
*!* lcOnShutdown = "inchide()"
|
||||
*!* On Shutdown &lcOnShutdown
|
||||
On Error ErrorHandler(Error(),Program(),Lineno())
|
||||
|
||||
gcAppDir=Addbs(Justpath(Sys(16,0)))
|
||||
*gcAppDir=SYS(5)+ SYS(2003)+"\"
|
||||
gcAppDir = Strtran(gcAppDir, 'PROGRAME\','')
|
||||
gpos = Rat('\',gcAppDir,2)
|
||||
gcDatePath = Left(gcAppDir,gpos) + 'date_aplicatii\'
|
||||
|
||||
|
||||
If Not Directory(gcDatePath)
|
||||
Md (gcDatePath)
|
||||
Endif
|
||||
|
||||
gcDataPath = gcAppDir + "date\"
|
||||
gcTempPath = "c:\temp\"
|
||||
If Not Directory(gcTempPath)
|
||||
Md (gcTempPath)
|
||||
Endif
|
||||
|
||||
Cd (gcAppDir) && init: CD "\soft_clienti\"
|
||||
|
||||
|
||||
lcclase = gcAppDir + [clase]
|
||||
lcLastSetClassLib=Set("CLASSLIB")
|
||||
|
||||
Set Procedure To proceduri_sql Additive
|
||||
*!* Set Procedure To proceduri_start Additive
|
||||
*!* Set Procedure To proceduri_soft_clienti Additive
|
||||
|
||||
|
||||
*gnConnHandle = conecteaza([jcsServer],[soft],[soft])
|
||||
gnConnHandle = conecteaza([ROA_ROMFAST2],[soft],[soft])
|
||||
Do Form sc_form_main
|
||||
|
||||
******************* inceput ErrorHandler *******************************************
|
||||
Function ErrorHandler(nError,cMethod,nLine)
|
||||
Local lcErrorMsg,lcCodeLineMsg
|
||||
|
||||
Wait Clear
|
||||
lcErrorMsg = Message()+Chr(13)+Chr(13)
|
||||
lcErrorMsg = lcErrorMsg + "Method: " + cMethod
|
||||
lcCodeLineMsg = Message(1)
|
||||
If Between(nLine,1,10000) And Not lcCodeLineMsg="..."
|
||||
lcErrorMsg = lcErrorMsg + Chr(13) + "Line: "+Alltrim(Str(nLine))
|
||||
If Not Empty(lcCodeLineMsg)
|
||||
lcErrorMsg = lcErrorMsg + Chr(13) + Chr(13) + lcCodeLineMsg
|
||||
Endif
|
||||
Endif
|
||||
If Messagebox(lcErrorMsg,17,_Screen.Caption) # 1
|
||||
On Error
|
||||
Return .F.
|
||||
Endif
|
||||
Endfunc
|
||||
|
||||
|
||||
**************************************** inceput Shutdown ************************************
|
||||
Function inchide()
|
||||
|
||||
If Type("goApp")=="O" And Not Isnull(goApp)
|
||||
Return goApp.OnShutDown()
|
||||
Endif
|
||||
Cleanup()
|
||||
If _vfp.StartMode = 4
|
||||
Quit
|
||||
Endif
|
||||
|
||||
*!* If gnConnHandle > 0
|
||||
*!* deconecteaza(gnConnHandle)
|
||||
*!* Endif
|
||||
Endfunc
|
||||
|
||||
**************************************** inceput Cleanup *************************************
|
||||
Function Cleanup
|
||||
|
||||
If Cntbar("_msysmenu")=7
|
||||
Return
|
||||
Endif
|
||||
On Error
|
||||
On Shutdown
|
||||
Set Classlib To
|
||||
Set Path To
|
||||
Clear All
|
||||
Close All
|
||||
Pop Menu _Msysmenu
|
||||
Return
|
||||
Endfunc
|
||||
BIN
backup/start.VCT
Normal file
BIN
backup/start.vcx
Normal file
BIN
backup/tasks_ref.CDX
Normal file
BIN
backup/tasks_ref.DBF
Normal file
BIN
backup/tasks_ref.FPT
Normal file
BIN
backup/test.VCT
Normal file
BIN
backup/test.vcx
Normal file
85
backup/utile.prg
Normal file
@@ -0,0 +1,85 @@
|
||||
*-------------------------------------------
|
||||
* Function...: Xmenu
|
||||
* Author.....: MARTIN
|
||||
* Date.......: 04/06/1997
|
||||
* Notes......: Based on an idea from Steve Zimmelman for FoxPro 2.x
|
||||
* Parameters.: tcItems = Semicolon-separated String with the various options
|
||||
* ...........: tnBar = Initially selected item (default=1)
|
||||
* Returns....: Selected item number
|
||||
* See Also...: PROMPT() [FoxPro Native]
|
||||
* lnOption = xmenu('\<Listare1;L\<istare2;Li\<stare3')
|
||||
PROCEDURE XMENU
|
||||
LPARAMETERS TCITEMS, TNBAR
|
||||
|
||||
LOCAL NITEMCOUNT, AITEMS, X, NROW, NCOL, CTITLE, NLASTPOS, CCOLOR, AITEMS
|
||||
|
||||
PRIVATE CPOPMENU, NSELECT && They flow into the GetChoice internal procedure
|
||||
|
||||
IF PCOUNT() < 2
|
||||
TNBAR = 1
|
||||
ENDIF
|
||||
|
||||
ACTIVATE SCREEN
|
||||
|
||||
* Parse every item
|
||||
m.NITEMCOUNT = OCCURS( ';', TCITEMS ) + 1
|
||||
DIMEN AITEMS[ m.nItemCount ]
|
||||
m.NLASTPOS = 1
|
||||
|
||||
FOR m.X = 1 TO m.NITEMCOUNT
|
||||
|
||||
IF m.X < m.NITEMCOUNT
|
||||
|
||||
AITEMS[ m.x ] = SUBS( m.TCITEMS, m.NLASTPOS, ;
|
||||
( AT( ';', m.TCITEMS, m.X ) - 1 ) - m.NLASTPOS + 1 )
|
||||
ELSE
|
||||
AITEMS[ m.x ] = SUBS( m.TCITEMS, m.NLASTPOS, ;
|
||||
( LEN( m.TCITEMS ) - m.NLASTPOS ) + 1 )
|
||||
ENDIF
|
||||
|
||||
IF AITEMS[ m.x ] # "\-"
|
||||
|
||||
AITEMS[ m.x ] = ALLT( AITEMS[ m.x ] )
|
||||
ENDIF
|
||||
|
||||
m.NLASTPOS=AT( ';', m.TCITEMS, m.X ) + 1
|
||||
NEXT
|
||||
|
||||
* Calculates the mouse pointer position
|
||||
m.NROW = IIF( MROW() + m.NITEMCOUNT < SROW(), MROW() - 1, SROW() - m.NITEMCOUNT )
|
||||
m.NCOL = IIF( MCOL() + 10 < SCOL(), MCOL() - 3, MCOL() - 13 )
|
||||
|
||||
* Gets an unique name for the pop-up
|
||||
m.CPOPMENU = 'M' + SYS(3) + "_"
|
||||
|
||||
DEFINE POPUP ( m.CPOPMENU ) SHORTCUT RELATIVE FROM NROW, NCOL
|
||||
|
||||
FOR m.X = 1 TO m.NITEMCOUNT
|
||||
|
||||
DEFINE BAR m.X OF ( m.CPOPMENU ) PROMPT AITEMS[ m.x ]
|
||||
NEXT
|
||||
|
||||
m.CANS = ""
|
||||
m.NSELECT = 0
|
||||
CLEAR TYPE
|
||||
|
||||
ON SELECTION POPUP ( m.CPOPMENU ) DO GETCHOICE
|
||||
|
||||
ACTIVATE POPUP ( m.CPOPMENU ) BAR TNBAR
|
||||
|
||||
POP KEY
|
||||
RELEASE POPUP ( m.CPOPMENU )
|
||||
|
||||
RETURN IIF( LASTKEY()=27, 0, m.NSELECT )
|
||||
|
||||
ENDPROC && XMENU
|
||||
|
||||
*--------------------
|
||||
PROCEDURE GETCHOICE
|
||||
|
||||
m.NSELECT = BAR()
|
||||
|
||||
DEACTIVATE POPUP ( m.CPOPMENU )
|
||||
|
||||
ENDPROC
|
||||
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& MENIU &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
|
||||
BIN
biblioteci/vfpcompression.fll
Normal file
485
changelog_tasks.txt
Normal file
@@ -0,0 +1,485 @@
|
||||
<!--
|
||||
22/01/2021
|
||||
TASKS - 1.1.14
|
||||
:modificare:
|
||||
S-au adaugat 2 parametri: rulare silentioasa si comanda de executat automat.
|
||||
ex: tasks.exe "s xm_roa_auto" genereaza automat xml cu programe pentru clientii ROA
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
14/07/2020
|
||||
TASKS - 1.1.13
|
||||
:modificare:
|
||||
S-a adaugat stampila si semnatura pe rapoarte clienti.
|
||||
-->
|
||||
|
||||
<!--
|
||||
09/07/2020
|
||||
TASKS - 1.1.12
|
||||
:modificare:
|
||||
La actualizare scheme se folosesc scripturile din directorul SCRIPTURI_CLAR in loc de SCRIPTURI.
|
||||
-->
|
||||
|
||||
<!--
|
||||
09/07/2020
|
||||
TASKS - 1.1.11
|
||||
:modificare:
|
||||
Se folosesc scripturile clar pentru generare arhiva scripturi pentru ROAUPDATE in loc de scripturi criptate.
|
||||
-->
|
||||
|
||||
<!--
|
||||
10/06/2013
|
||||
TASKS - 1.1.10
|
||||
:modificare:
|
||||
Aplicare scripturi prefix RIS_ pentru ACN. Se citeste prefixul din CONTAFIN_ORACLE.SERVER_INFO.NAME=PREFIX_SCRIPT_ACN
|
||||
-->
|
||||
|
||||
<!--
|
||||
10/06/2013
|
||||
TASKS - 1.1.0
|
||||
:nou:
|
||||
Introducere instructiuni migrare baza date.
|
||||
Import si export instructiuni migrare din scripturi stil vechi.
|
||||
Generare arhive cu instructiuni pentru migrare automata.
|
||||
-->
|
||||
|
||||
<!--
|
||||
03/04/2013
|
||||
TASKS - 1.0.47
|
||||
|
||||
Directorul de baza pentru crearea xml-urilor cu scripturi este "folder > roa_output" in loc de "folder > actualizare". "roa_output" se poate configura din aplicatie.
|
||||
-->
|
||||
|
||||
<!--
|
||||
11/03/2013
|
||||
TASKS - 1.0.46
|
||||
|
||||
:nou:
|
||||
La Actualizare ROA, se genereaza si script_masa.sql pentru aplicarea imediata.
|
||||
-->
|
||||
|
||||
<!--
|
||||
04/03/2013
|
||||
TASKS - 1.0.45
|
||||
:modificare:
|
||||
Se retin numele xml-urilor pentru clientii roa in settings.ini in sectiunea [folder].
|
||||
-->
|
||||
|
||||
<!--
|
||||
20/07/2012
|
||||
TASKS - 1.0.44
|
||||
|
||||
:modificare:
|
||||
A fost modificata generarea fisierului XML pentru USERREPORTS.
|
||||
Astfel, campul "item" va contine :
|
||||
- USERREPORTS, daca numele programului nu contine "-"
|
||||
- valoarea pana la "-", daca numele programului contine "-"
|
||||
Directorul din "fileurl" va fi "\_ARHIVE\USERREPORTS\...".
|
||||
|
||||
:eroare:
|
||||
A fost corectata eroarea de la generarea rapida a fisierului XML pentru programele ROA.
|
||||
-->
|
||||
|
||||
<!--
|
||||
17/07/2012
|
||||
TASKS - 1.0.43
|
||||
|
||||
:nou:
|
||||
Se genereaza fisierul xml cu versiunile programelor Contafin. Anterior, fisierul era generat de appupdatexml.exe.
|
||||
-->
|
||||
|
||||
<!--
|
||||
05/07/2012
|
||||
TASKS - 1.0.42
|
||||
|
||||
:eroare:
|
||||
Pentru programele Contafin, dupa crearea arhivei nu se deschidea automat directorul in care se afla fisierul.
|
||||
-->
|
||||
|
||||
<!--
|
||||
05/07/2012
|
||||
TASKS - 1.0.41
|
||||
|
||||
:modificare:
|
||||
Au fost aduse urmatoarele modificari la salvarea lucrarilor :
|
||||
- in mesajul transmis in SVN au fost adaugate si numele programului si versiunea.
|
||||
- daca in directorul pentru output nu exista directorul programului, atunci este creat
|
||||
- inainte de copierea fisierului versiune_db.txt se verifica daca acesta exista pentru proiectul respectiv
|
||||
- arhivele si changelogul pentru programele Contafin nu se mai copiaza in {Arhive}\{NumeProgram}, ci direct in {Arhive}
|
||||
-->
|
||||
|
||||
<!--
|
||||
04/07/2012
|
||||
TASKS - 1.0.40
|
||||
|
||||
:modificare:
|
||||
Pentru programele Contafin, se copiaza si changelog-ul in directorul cu arhive.
|
||||
-->
|
||||
|
||||
<!--
|
||||
04/07/2012
|
||||
TASKS - 1.0.39
|
||||
|
||||
:nou:
|
||||
La "Setari", au fost adaugate urmatoarele optiuni :
|
||||
- director configurari criptare executabil
|
||||
- in directorul proiectului
|
||||
- in directorul ales de utilizator
|
||||
- director proiecte ROA
|
||||
- director output ROA
|
||||
- director arhive ROA
|
||||
- director proiecte Contafin
|
||||
- director output Contafin
|
||||
- director arhive Contafin
|
||||
|
||||
:nou:
|
||||
La adaugarea/modificarea unei lucrari, au fost adaugate urmatoarele optiuni :
|
||||
- se completeaza changelog
|
||||
- in directorul implicit
|
||||
- in directorul ales de utilizator
|
||||
- se transmit modificarile in SVN
|
||||
- se cripteaza executabilul
|
||||
- se copiaza si alte fisiere in afara de changelog, executabil si versiune_db
|
||||
- se copiaza fisierele si se creeaza arhiva
|
||||
|
||||
:modificare:
|
||||
Arhivele cu programele ROA nu mai au extensia 'exe', ci 'zip'.
|
||||
|
||||
:eroare:
|
||||
La adaugarea consecutiva de lucrari, daca cea anterioara era bifata ca finalizata, nu mai ramane casuta bifata pentru urmatoarea.
|
||||
-->
|
||||
|
||||
<!--
|
||||
23/05/2012
|
||||
TASKS - 1.0.38
|
||||
|
||||
:modificare:
|
||||
La "Soft clienti > Adauga > Raport", nu mai arata versiunile de program egale cu versiunea de la client ( apareau in cazurile in care ultima versiune de program de la client fusese actualizata chiar in ziua in care fusese facuta ).
|
||||
-->
|
||||
|
||||
<!--
|
||||
17/06/2011
|
||||
TASKS - 1.0.37
|
||||
|
||||
:modificare:
|
||||
La "Soft clienti > Genereaza XML" se genereaza 2 XML-uri : ROASTART_<client>.xml si <client>.xml. Fisierele contin doar programele ROA.
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
25/01/2011
|
||||
TASKS - 1.0.35
|
||||
|
||||
:modificare:
|
||||
Datele de conectare la schema "soft_serii" se pot completa in settings.ini
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
30/08/2010
|
||||
TASKS - 1.0.34
|
||||
|
||||
:nou:
|
||||
Raportul "Adaugare programe pe un client > Rapoarte > Buletin informativ":
|
||||
- se poate lista de la o data initiala la o data finala sau de la ultima versiune instalata pana la versiunea maxima;
|
||||
- se poate personaliza titlul raportului;
|
||||
- se poate salva raportul in format electronic (pdf, rtf etc.)
|
||||
-->
|
||||
|
||||
<!--
|
||||
20/07/2010
|
||||
TASKS - 1.0.33
|
||||
|
||||
:nou:
|
||||
La adaugarea unei lucrari noi, se completeaza automat versiunea urmatoare.
|
||||
-->
|
||||
|
||||
<!--
|
||||
02/07/2010
|
||||
TASKS - 1.0.32
|
||||
|
||||
:nou:
|
||||
La generarea xml-ului cu versiuni diferite de programe pentru actualizare, se afiseaza un mesaj cu programele care nu exista fizic pe disc.
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
02/07/2010
|
||||
TASKS - 1.0.31
|
||||
|
||||
:nou:
|
||||
Click dreapta pe formularul "soft la clienti" se poate genera un fisier text pentru copierea programelor alese in alt director (copierea facila a ultimelor versiuni la clienti).
|
||||
-->
|
||||
|
||||
<!--
|
||||
26/03/2010
|
||||
TASKS - 1.0.30
|
||||
|
||||
Am corectat version si calea pentru fisierele userreports din roastart.xml (Actualizare ROA).
|
||||
-->
|
||||
|
||||
<!--
|
||||
10/02/2010
|
||||
TASKS - 1.0.28
|
||||
|
||||
Fisierele userreports din roastart.xml (Actualizare ROA) au datele corecte in xml (version, item).
|
||||
-->
|
||||
|
||||
<!--
|
||||
09/12/2009
|
||||
TASKS - 1.0.25
|
||||
|
||||
:nou:
|
||||
Se genereaza fisierul roastart.xml pentru actualizarea automata.
|
||||
Se tine cont de calea fisierelor "userreports" pe serverul FTP.
|
||||
-->
|
||||
|
||||
<!--
|
||||
17/11/2009
|
||||
TASKS - 1.0.24
|
||||
|
||||
:modificare:
|
||||
Generarea scripturilor pentru actualizarea automata, scripturile se selecteaza ordonat dupa data scriptului.
|
||||
-->
|
||||
|
||||
<!--
|
||||
13/10/2009
|
||||
TASKS - 1.0.23
|
||||
|
||||
:modificare:
|
||||
Vizualizarea lucrarilor nu mai este filtrata initial dupa utilizator.
|
||||
-->
|
||||
|
||||
<!--
|
||||
30/09/2009
|
||||
TASKS - 1.0.22
|
||||
|
||||
:modificare:
|
||||
S-a adaugat tag-ul <guid> la xml-urile cu noutati si s-au separat template-urile pentru contafin/roa.
|
||||
-->
|
||||
|
||||
<!--
|
||||
17/09/2009
|
||||
TASKS - 1.0.21
|
||||
|
||||
:modificare:
|
||||
La crearea paginilor web cu noutati nu se mai iau in considerare lucrarile speciale pentru clienti.
|
||||
-->
|
||||
|
||||
<!--
|
||||
16/09/2009
|
||||
TASKS - 1.0.20
|
||||
|
||||
:nou:
|
||||
Se genereaza contafin-noutati.xml si roa-noutati.xml RSS 1.0.
|
||||
-->
|
||||
|
||||
<!--
|
||||
01/09/2009
|
||||
TASKS - 1.0.18
|
||||
|
||||
:nou:
|
||||
Se poate modifica grupul programelor in editarea programelor din "Soft Clienti".
|
||||
|
||||
:modificare:
|
||||
Actualizare ROA > Generare XML Aplicatii - include aplicatiile cu licenta pentru clientii de tip ROA in loc sa ia aplicatiile din grupul ROA.
|
||||
-->
|
||||
|
||||
<!--
|
||||
12/08/2009
|
||||
TASKS - 1.0.17
|
||||
|
||||
:nou:
|
||||
S-au adaugat coloanele "AppUpdate" (0/1) si "CustomerId" in editarea programelor.
|
||||
|
||||
AppUpdate - daca programul intra in componenta fisierelor CONTAFIN.XML generate de APPUPDATEXML.
|
||||
|
||||
CustomerId - id-ul clientului pentru programele speciale pentru acel client - pentru generarea fisierelor CONTAFIN_CUSTOMERID.XML generate de APPUPDATEXML.
|
||||
-->
|
||||
|
||||
<!--
|
||||
30/07/2009
|
||||
TASKS - 1.0.16
|
||||
|
||||
:modificare:
|
||||
S-a corectat generarea de scripturi neaplicate si aplicatii noi.
|
||||
-->
|
||||
|
||||
<!--
|
||||
28/07/2009
|
||||
TASKS - 1.0.15
|
||||
|
||||
:modificare:
|
||||
A fost formularul de programe sa apara corect bifele pe coloanele "Comun" si "Nou"
|
||||
-->
|
||||
|
||||
<!--
|
||||
27/07/2009
|
||||
TASKS - 1.0.14
|
||||
|
||||
:modificare:
|
||||
S-a corectat o eroare la stergerea programelor trimise la clienti - stergea prima inregistrare intotdeauna.
|
||||
-->
|
||||
|
||||
<!--
|
||||
24/07/2009
|
||||
TASKS - 1.0.13
|
||||
|
||||
:nou:
|
||||
La adaugarea unei lucrari se modifica automat si versiunea maxima a programului (dupa acceptul utilizatorului).
|
||||
-->
|
||||
|
||||
<!--
|
||||
23/07/2009
|
||||
TASKS - 1.0.12
|
||||
|
||||
Am adaugat proprietatile COMUN, NOUTATI_EXPORT, NOUTATI_ORDINE legate de programe - pentru exportul in pagina www.romfast.ro
|
||||
|
||||
Proprietatile se editeaza in formularul "modificare program".
|
||||
-->
|
||||
|
||||
<!--
|
||||
20/07/2009
|
||||
TASKS - 1.0.11
|
||||
|
||||
:nou:
|
||||
Se genereaza contafin-noutati.html si roa-noutati.html din formularul principal.
|
||||
-->
|
||||
<!--
|
||||
15/05/2009
|
||||
TASKS - 1.0.10
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
22/04/2009
|
||||
TASKS - 1.0.8
|
||||
|
||||
S-a marit campul pentru numele fisierelor *.sql in Actualizare ROA.
|
||||
-->
|
||||
|
||||
<!--
|
||||
20/03/2009
|
||||
TASKS - 1.0.7
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
19/03/2009
|
||||
TASKS - 1.0.7
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
23/02/2009
|
||||
TASKS - 1.0.6
|
||||
|
||||
S-a introdus posibilitatea de minimizare in tray. In "Soft clienti > Programe > Modifica" s-a introdus optiunea "Nou".
|
||||
-->
|
||||
|
||||
<!--
|
||||
20/02/2009
|
||||
TASKS - 1.0.5
|
||||
|
||||
La generare xml se mai genereaza un xml, cel vechi fiind redenumit ".old.xml". La setari a aparut o noua setare, pentru directorul in care se vor salva aceste doua xml-uri. La adaugare lucrare se salveaza in tabela luc_lucrari si versiunea, care va fi folosita intr-un nou raport ("Soft clienti > Adaugare versiune instalata la client > Raport") , raport care listeaza toate modificarile aparute la programele instalate la clientii care nu au suport tehnic de la ultima lor versiune.
|
||||
-->
|
||||
|
||||
<!--
|
||||
19/02/2009
|
||||
TASKS - 1.0.4
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
17/02/2009
|
||||
TASKS -
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
13/02/2009
|
||||
BAZA DATE -
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
13/02/2009
|
||||
TASKS -
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
12/02/2009
|
||||
ALTELE -
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
09/02/2009
|
||||
BAZA DATE -
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
11/02/2009
|
||||
GENERARE SCRIPT -
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
04/02/2009
|
||||
TASKS -
|
||||
|
||||
:modificare:
|
||||
Generare xml, cautare programe, clienti
|
||||
-->
|
||||
|
||||
<!--
|
||||
03/02/2009
|
||||
TASKS - 1.0.3
|
||||
|
||||
:modificare:
|
||||
Generare xml, cautare programe, client
|
||||
-->
|
||||
|
||||
<!--
|
||||
02/02/2009
|
||||
TASKS -
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
30/01/2009
|
||||
ALTELE - 1.0.3
|
||||
|
||||
:nou:
|
||||
S-au adaugat rapoartele, generare xml, s-au corectat erorile
|
||||
-->
|
||||
|
||||
<!--
|
||||
29/01/2009
|
||||
ALTELE - 1.0.3
|
||||
|
||||
:nou:
|
||||
S-a adaugat soft_clienti in tasks
|
||||
-->
|
||||
|
||||
<!--
|
||||
12/01/2009
|
||||
CONGEST -
|
||||
|
||||
:nou:
|
||||
creere nume nou import
|
||||
-->
|
||||
|
||||
BIN
clase/APPWIZ.VCT
Normal file
BIN
clase/GridExtras/adauga.png
Normal file
|
After Width: | Height: | Size: 613 B |
BIN
clase/GridExtras/add16.png
Normal file
|
After Width: | Height: | Size: 613 B |
BIN
clase/GridExtras/addfilter16.bmp
Normal file
|
After Width: | Height: | Size: 824 B |
BIN
clase/GridExtras/ascendingsort12.bmp
Normal file
|
After Width: | Height: | Size: 632 B |
BIN
clase/GridExtras/cauta.png
Normal file
|
After Width: | Height: | Size: 824 B |
BIN
clase/GridExtras/clearfilter16.bmp
Normal file
|
After Width: | Height: | Size: 824 B |
BIN
clase/GridExtras/close16.bmp
Normal file
|
After Width: | Height: | Size: 824 B |
1
clase/GridExtras/config.fpw
Normal file
@@ -0,0 +1 @@
|
||||
RESOURCE=OFF
|
||||
BIN
clase/GridExtras/delete16.png
Normal file
|
After Width: | Height: | Size: 792 B |
BIN
clase/GridExtras/descendingsort12.bmp
Normal file
|
After Width: | Height: | Size: 632 B |
BIN
clase/GridExtras/excel.jpg
Normal file
|
After Width: | Height: | Size: 441 B |
BIN
clase/GridExtras/excel24.jpg
Normal file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
clase/GridExtras/exit.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
clase/GridExtras/filter12.bmp
Normal file
|
After Width: | Height: | Size: 488 B |
BIN
clase/GridExtras/find.BMP
Normal file
|
After Width: | Height: | Size: 246 B |
BIN
clase/GridExtras/gridextras.CDX
Normal file
BIN
clase/GridExtras/gridextras.FPT
Normal file
BIN
clase/GridExtras/gridextras.VCT
Normal file
BIN
clase/GridExtras/gridextras.dbf
Normal file
BIN
clase/GridExtras/gridextras.vcx
Normal file
712
clase/GridExtras/gridextrasprocs.prg
Normal file
@@ -0,0 +1,712 @@
|
||||
********************************
|
||||
*!* Simple Sample Usage
|
||||
********************************
|
||||
*!* DIMENSION aWrkSht(1), aCols(1)
|
||||
*!* m.lcXlsFile = GETFILE("Excel:XLS,XLSX,XLSB,XLSM")
|
||||
*!* IF FILE(m.lcXlsFile)
|
||||
*!* CLEAR
|
||||
*!* ?AWorkSheets(@aWrkSht,m.lcXlsFile,.T.)
|
||||
*!* ?AWorkSheetColumns(@aCols,m.lcXlsFile,"Sheet1")
|
||||
*!* AppendFromExcel(m.lcXlsFile, "Sheet1", "MyTable", "column1,column2,column3", "Recnum Is Not Null", "field1,field2,field3", "field1 > 14000")
|
||||
*!* SELECT MyTable
|
||||
*!* GO TOP IN "MyTable"
|
||||
*!* BROWSE LAST NOWAIT
|
||||
*!* ENDIF
|
||||
*!* CopyToExcel("C:\Test.xlsx", "Sheet1", "MyTable") && try xls, xlsb, and xlsm as well
|
||||
|
||||
**********************************
|
||||
FUNCTION AppendFromExcel(tcXLSFile, tcSheet, tvWorkarea, tcExcelFieldList, tcExcelWhereExpr, tcTableFieldList, tcTableForExpr, tlNoHeaderRow)
|
||||
**********************************
|
||||
* PARAMETER Information
|
||||
* tcXLSFile := a string specifying an excel file (*.xls, *.xlsx, *.xlsm, *.xlsb) on disk
|
||||
* tcSheet := a string specifying the name of a worksheet within the excel workbook (can also be a range Sheet1$A1:C20 for instance)
|
||||
* tvWorkarea [optional] := the Alias, Work Area, or File Name of the table you want the worksheet result set appended to (default is currently selected Alias)
|
||||
* tcExcelFieldList [optional] := a comma delimited list of columns you want from the worksheet (default is '*' - all columns)
|
||||
* tcExcelWhereExpr [optional] := a valid SQL Where clause to be used when querying the worksheet (default is '1=1')
|
||||
* tcTableFieldList [optional] := a comma delimited list of fields you want the worksheet result set inserted into (default is '*' - all fields)
|
||||
* tcTableForExpr [optional] := a valid VFP Where clause to be used when querying the worksheet result set (cursor) (default is '.T.')
|
||||
* tlNoHeaderRow [optional] := pass .T. if the worksheet does not contain a header row, .F. is the default which specifies that a header row does exist
|
||||
*
|
||||
* RETURN Information
|
||||
* returns numeric, the number of records inserted into tvWorkArea
|
||||
*
|
||||
* Provider Information
|
||||
* the default provider being used in the SQLStringConnect function can be downloaded and installed from:
|
||||
* http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en
|
||||
**********************************
|
||||
LOCAL lnSelect, laErr[1], laTableFields[1], laExcelFields[1], lnFieldCounter, ;
|
||||
lcSQLAlias, lnResult, lcInsertValues, lcFieldList, lcNvlFieldList, ;
|
||||
lcFieldType, lcExcelFieldType, lcNvlFieldName, lcTempAlias, loExc, lnReturn, ;
|
||||
lcHeaderRow, llOpenedtvWorkArea
|
||||
m.lnSelect = SELECT(0)
|
||||
m.lnReturn = 0
|
||||
IF NOT FILE(m.tcXLSFile)
|
||||
ERROR 1, m.tcXLSFile
|
||||
ENDIF
|
||||
|
||||
IF !USED(m.tvWorkarea) AND TYPE("m.tvWorkArea") = "C" AND FILE(DEFAULTEXT(m.tvWorkarea,"DBF"))
|
||||
SELECT 0
|
||||
USE (DEFAULTEXT(m.tvWorkarea,"DBF")) SHARED AGAIN
|
||||
m.tvWorkarea = ALIAS()
|
||||
m.llOpenedtvWorkArea = .T.
|
||||
ELSE
|
||||
IF !USED(m.tvWorkarea)
|
||||
m.tvWorkarea = ALIAS()
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF TYPE("m.tvWorkArea") = "N"
|
||||
m.tvWorkArea = ALIAS(m.tvWorkArea)
|
||||
ENDIF
|
||||
|
||||
m.tcSheet = ALLTRIM(EVL(m.tcSheet,"Sheet1$"))
|
||||
IF AT("$",m.tcSheet) = 0
|
||||
m.tcSheet = m.tcSheet + "$"
|
||||
ENDIF
|
||||
m.tcExcelFieldList = EVL(m.tcExcelFieldList,"*")
|
||||
m.tcExcelWhereExpr = EVL(m.tcExcelWhereExpr,"1=1")
|
||||
m.tcTableFieldList = EVL(m.tcTableFieldList,"*")
|
||||
m.tcTableForExpr = EVL(m.tcTableForExpr,".T.")
|
||||
m.lcSQLAlias = SYS(2015)
|
||||
m.lcTempAlias = SYS(2015)
|
||||
m.lnSQL = 0
|
||||
m.lcHeaderRow = IIF(EMPTY(m.tlNoHeaderRow), "Yes", "No")
|
||||
TRY
|
||||
SELECT (m.tvWorkarea)
|
||||
|
||||
m.lnSQL = SQLSTRINGCONNECT([Provider=Microsoft.ACE.OLEDB.12.0;Data Source="] + m.tcXLSFile + [";Extended Properties="Excel 12.0 Xml;HDR=] + m.lcHeaderRow + [;";])
|
||||
|
||||
*!* Alternate using DSN that comes with Office install (MSDASQL = OLEDB wrapper for ODBC)
|
||||
*!* m.lnSQL = SQLSTRINGCONNECT("Provider=MSDASQL.1;" ;
|
||||
*!* +"Persist Security Info=False;" ;
|
||||
*!* +"DSN=Excel Files;" ;
|
||||
*!* +"DBQ="+FULLPATH(m.tcXLSFile)+";" ;
|
||||
*!* +"DriverId=790;" ;
|
||||
*!* +"MaxBufferSize=2048;" ;
|
||||
*!* +"PageTimeout=5;")
|
||||
|
||||
*!* Try a few other drivers that may be on the user's machine
|
||||
IF m.lnSQL < 0
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" ;
|
||||
+ "DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
IF m.lnSQL < 0 AND UPPER(ALLTRIM(JUSTEXT(m.tcXLSFile))) == "XLS" && can we try using the older driver?
|
||||
IF m.lnSQL < 0
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls)};" ;
|
||||
+ "DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF m.lnSQL < 0
|
||||
AERROR(m.laErr)
|
||||
ERROR m.laErr[2]
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
m.lnResult = SQLEXEC(m.lnSQL,[SELECT ] + m.tcExcelFieldList + [ FROM "] + m.tcSheet + [" Where ] + m.tcExcelWhereExpr, m.lcSQLAlias)
|
||||
IF m.lnResult < 0
|
||||
AERROR(m.laErr)
|
||||
ERROR m.laErr[2]
|
||||
ENDIF
|
||||
|
||||
IF USED(m.lcSQLAlias)
|
||||
m.lcFieldList = ""
|
||||
m.lcNvlFieldList = ""
|
||||
m.lnTotalExcelFields = AFIELDS(m.laExcelFields, m.lcSQLAlias)
|
||||
SELECT &tcTableFieldList FROM (m.tvWorkarea) WHERE .F. INTO CURSOR (m.lcTempAlias)
|
||||
FOR m.lnFieldCounter = 1 TO MIN(AFIELDS(m.laTableFields, m.lcTempAlias), m.lnTotalExcelFields)
|
||||
m.lcFieldList = m.lcFieldList + IIF(!EMPTY(m.lcFieldList),",","")+m.laTableFields[m.lnFieldCounter,1]
|
||||
m.lcFieldType = CHRTRAN(m.laTableFields[m.lnFieldCounter,2],"NIFYD","BBBBT")
|
||||
m.lcExcelFieldType = CHRTRAN(m.laExcelFields[m.lnFieldCounter,2],"CVNIFYD","MMBBBBT")
|
||||
m.lcNvlFieldName = m.laExcelFields[m.lnFieldCounter,1]
|
||||
IF !m.laTableFields[m.lnFieldCounter,5]
|
||||
m.lcNvlFieldName = [NVL(]+m.lcNvlFieldName+[,]+;
|
||||
ICASE(m.lcExcelFieldType="B", "0", ;
|
||||
m.lcExcelFieldType="M", "''", ;
|
||||
m.lcExcelFieldType="T", "{//}", ;
|
||||
m.lcExcelFieldType="L", ".F.", ;
|
||||
"''")+[)]
|
||||
ENDIF
|
||||
IF INLIST(m.lcFieldType, "C", "V")
|
||||
m.lcNvlFieldName = [CAST(]+m.lcNvlFieldName+[ AS ]+m.lcFieldType+[(] + TRANSFORM(m.laTableFields[m.lnFieldCounter,3]) + [))]
|
||||
ELSE
|
||||
m.lcNvlFieldName = [CAST(]+m.lcNvlFieldName+[ AS ]+m.lcFieldType+[)]
|
||||
ENDIF
|
||||
m.lcNvlFieldList = m.lcNvlFieldList + IIF(!EMPTY(m.lcNvlFieldList),",","") + m.lcNvlFieldName
|
||||
ENDFOR
|
||||
INSERT INTO (m.tvWorkarea) (&lcFieldList) SELECT &lcNvlFieldList FROM (m.lcSQLAlias) WHERE &tcTableForExpr
|
||||
m.lnReturn = _TALLY
|
||||
ENDIF
|
||||
|
||||
CATCH TO m.loExc
|
||||
*!* MESSAGEBOX(m.loExc.MESSAGE + " : " + TRANSFORM(m.loExc.LINENO))
|
||||
FINALLY
|
||||
IF m.llOpenedtvWorkArea
|
||||
USE IN SELECT(m.tvWorkArea)
|
||||
ENDIF
|
||||
IF m.lnSQL > 0
|
||||
SQLDISCONNECT(m.lnSQL)
|
||||
ENDIF
|
||||
USE IN SELECT(m.lcTempAlias)
|
||||
USE IN SELECT(m.lcSQLAlias)
|
||||
SELECT (m.lnSelect)
|
||||
ENDTRY
|
||||
RETURN m.lnReturn
|
||||
ENDFUNC
|
||||
|
||||
**********************************
|
||||
FUNCTION AWorkSheets(taArray, tcXLSFile, tlAllTables)
|
||||
**********************************
|
||||
* PARAMETER Information
|
||||
* taArray := an array sent in by reference to fill with Worksheet/Table information
|
||||
* tcXLSFile := a string specifying an excel file (*.xls, *.xlsx, *.xlsm, *.xlsb) on disk
|
||||
* tlAllTables := if .T., array will contain information regarding all tables in workbook; .F. returns only worksheets
|
||||
*
|
||||
* RETURN Information
|
||||
* returns numeric, the number of tables found in the workbook
|
||||
**********************************
|
||||
|
||||
LOCAL lnSQL, laErr[1], lcSQLAlias, lnResult, lnReturn, loExc
|
||||
m.lnReturn = 0
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" ;
|
||||
+"DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
|
||||
*!* Alternate using DSN that comes with Office install (MSDASQL = OLEDB wrapper for ODBC)
|
||||
*!* m.lnSQL = SQLSTRINGCONNECT("Provider=MSDASQL.1;" ;
|
||||
*!* +"Persist Security Info=False;" ;
|
||||
*!* +"DSN=Excel Files;" ;
|
||||
*!* +"DBQ="+FULLPATH(m.tcXLSFile)+";" ;
|
||||
*!* +"DriverId=790;" ;
|
||||
*!* +"MaxBufferSize=2048;" ;
|
||||
*!* +"PageTimeout=5;")
|
||||
|
||||
*!* Try a few other drivers that may be on the user's machine
|
||||
IF m.lnSQL < 0
|
||||
IF UPPER(ALLTRIM(JUSTEXT(m.tcXLSFile))) == "XLS" && can we try using the older driver?
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" ;
|
||||
+ "DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
IF m.lnSQL < 0
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls)};" ;
|
||||
+ "DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
ENDIF
|
||||
ELSE
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" ;
|
||||
+ "DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
ENDIF
|
||||
IF m.lnSQL < 0
|
||||
AERROR(m.laErr)
|
||||
ERROR m.laErr[2]
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
m.lcSQLAlias = SYS(2015)
|
||||
m.lnResult = SQLTABLES(m.lnSQL,"VIEW,TABLE,SYSTEM TABLE",m.lcSQLAlias)
|
||||
|
||||
IF m.lnSQL > 0
|
||||
SQLDISCONNECT(m.lnSQL)
|
||||
ENDIF
|
||||
|
||||
IF m.lnResult < 0
|
||||
AERROR(m.laErr)
|
||||
ERROR m.laErr[2]
|
||||
ENDIF
|
||||
|
||||
IF USED(m.lcSQLAlias)
|
||||
TRY
|
||||
IF tlAllTables
|
||||
SELECT CAST(ALLTRIM(table_name) AS V(100)), ;
|
||||
CAST(ALLTRIM(table_type) AS V(12)) ;
|
||||
FROM (m.lcSQLAlias) ;
|
||||
INTO ARRAY taArray
|
||||
ELSE
|
||||
SELECT CAST(ALLTRIM(table_name) AS V(100)), ;
|
||||
CAST(ALLTRIM(table_type) AS V(12)) ;
|
||||
FROM (m.lcSQLAlias) ;
|
||||
WHERE table_type = "SYSTEM TABLE" ;
|
||||
INTO ARRAY taArray
|
||||
ENDIF
|
||||
m.lnReturn = _TALLY
|
||||
CATCH TO m.loExc
|
||||
THROW
|
||||
FINALLY
|
||||
*!* USE IN SELECT(m.lcSQLAlias)
|
||||
ENDTRY
|
||||
ENDIF
|
||||
|
||||
RETURN m.lnReturn
|
||||
ENDFUNC
|
||||
|
||||
**********************************
|
||||
FUNCTION AWorkSheetColumns(taArray, tcXLSFile, tcSheet)
|
||||
**********************************
|
||||
* PARAMETER Information
|
||||
* taArray := an array sent in by reference to fill with the specified worksheet's column information
|
||||
* tcXLSFile := a string specifying an excel file (*.xls, *.xlsx, *.xlsm, *.xlsb) on disk
|
||||
* tcSheet := a string specifying the worksheet or table to use when retrieving column information
|
||||
*
|
||||
* RETURN Information
|
||||
* returns numeric, the number of columns found in the worksheet/table
|
||||
**********************************
|
||||
LOCAL lnSQL, laErr[1], lnResult, lnReturn, lcSQLAlias, loExc
|
||||
m.lnReturn = 0
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" ;
|
||||
+"DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
*!* Alternate using DSN that comes with Office install (MSDASQL = OLEDB wrapper for ODBC)
|
||||
*!* m.lnSQL = SQLSTRINGCONNECT("Provider=MSDASQL.1;" ;
|
||||
*!* +"Persist Security Info=False;" ;
|
||||
*!* +"DSN=Excel Files;" ;
|
||||
*!* +"DBQ="+FULLPATH(m.tcXLSFile)+";" ;
|
||||
*!* +"DriverId=790;" ;
|
||||
*!* +"MaxBufferSize=2048;" ;
|
||||
*!* +"PageTimeout=5;")
|
||||
|
||||
*!* Try a few other drivers that may be on the user's machine
|
||||
IF m.lnSQL < 0
|
||||
IF UPPER(ALLTRIM(JUSTEXT(m.tcXLSFile))) == "XLS" && can we try using the older driver?
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" ;
|
||||
+ "DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
IF m.lnSQL < 0
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls)};" ;
|
||||
+ "DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
ENDIF
|
||||
ELSE
|
||||
m.lnSQL = SQLSTRINGCONNECT("Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" ;
|
||||
+ "DBQ="+FULLPATH(m.tcXLSFile)+";")
|
||||
ENDIF
|
||||
IF m.lnSQL < 0
|
||||
AERROR(m.laErr)
|
||||
ERROR m.laErr[2]
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
m.lcSQLAlias = SYS(2015)
|
||||
m.lnResult = SQLEXEC(m.lnSQL,[SELECT * FROM "] + m.tcSheet + [$" Where 1=0], m.lcSQLAlias)
|
||||
|
||||
IF m.lnSQL > 0
|
||||
SQLDISCONNECT(m.lnSQL)
|
||||
ENDIF
|
||||
|
||||
IF m.lnResult < 0
|
||||
AERROR(m.laErr)
|
||||
ERROR m.laErr[2]
|
||||
ENDIF
|
||||
|
||||
IF USED(m.lcSQLAlias)
|
||||
TRY
|
||||
m.lnReturn = AFIELDS(m.taArray, m.lcSQLAlias)
|
||||
CATCH TO m.loExc
|
||||
THROW
|
||||
FINALLY
|
||||
USE IN SELECT(m.lcSQLAlias)
|
||||
ENDTRY
|
||||
ENDIF
|
||||
|
||||
RETURN m.lnReturn
|
||||
ENDFUNC
|
||||
|
||||
***********************************
|
||||
FUNCTION CopyToExcel(tcXLSFile, tcSheet, tvWorkArea, tcExcelFieldList, tcTableFieldList, tcTableForExpr)
|
||||
***********************************
|
||||
* PARAMETER Information
|
||||
* tcXLSFile := a string specifying an excel file (*.xls, *.xlsx, *.xlsm, *.xlsb) on disk
|
||||
* tcSheet := a string specifying the name of the worksheet to create within the excel workbook
|
||||
* tvWorkarea [optional] := the Alias, Work Area, or File Name of the table you want to be copied to the worksheet (default is currently selected Alias)
|
||||
* tcExcelFieldList [optional] := a comma delimited list of columns you want to create in the worksheet (default is '*' - columns will match table field list)
|
||||
* tcTableFieldList [optional] := a comma delimited list of fields you want this function to copy from tvWorkArea
|
||||
* tcTableForExpr [optional] := a valid VFP Where/For clause to be used when querying tvWorkArea for data to be copied to the worksheet
|
||||
*
|
||||
* RETURN Information
|
||||
* returns numeric, the number of records inserted into the worksheet
|
||||
*
|
||||
* Provider Information
|
||||
* the default provider being used in the SQLStringConnect function can be downloaded and installed from:
|
||||
* http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en
|
||||
**********************************
|
||||
#DEFINE adOpenStatic 3
|
||||
#DEFINE adOpenKeyset 1
|
||||
#DEFINE adLockOptimistic 3
|
||||
#DEFINE adUseClient 3
|
||||
#DEFINE adUseServer 2
|
||||
#DEFINE adCmdText 0x0001
|
||||
LOCAL loConnection as ADODB.Connection, lcCreateTableCommand, llOpenedtvWorkArea, loExc as Exception, ;
|
||||
lnReturn, lnResult, lnFieldCounter, lnSQL, loCursorAdapter as CursorAdapter, ;
|
||||
lcFieldName, lcFieldType, lcSelectFields, lcUpdateNameListFields, lcUpdatableFieldList, ;
|
||||
loRecordSet as ADODB.Recordset, lcConversionFunc, lcVFPFieldName, laTableFields[1], laErr[1]
|
||||
|
||||
m.lnSelect = SELECT(0)
|
||||
m.lnReturn = 0
|
||||
|
||||
m.llOpenedtvWorkArea = .F.
|
||||
IF !USED(m.tvWorkarea) AND TYPE("m.tvWorkArea") = "C" AND FILE(DEFAULTEXT(m.tvWorkarea,"DBF"))
|
||||
SELECT 0
|
||||
USE (DEFAULTEXT(m.tvWorkarea,"DBF")) SHARED AGAIN
|
||||
m.tvWorkarea = ALIAS()
|
||||
m.llOpenedtvWorkArea = .T.
|
||||
ELSE
|
||||
IF !USED(m.tvWorkarea)
|
||||
m.tvWorkarea = ALIAS()
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF TYPE("m.tvWorkArea") = "N"
|
||||
m.tvWorkArea = ALIAS(m.tvWorkArea)
|
||||
ENDIF
|
||||
|
||||
m.tcSheet = ALLTRIM(EVL(m.tcSheet,"Sheet1$"))
|
||||
IF AT("$",m.tcSheet) = 0
|
||||
m.tcSheet = m.tcSheet + "$"
|
||||
ENDIF
|
||||
m.tcExcelFieldList = EVL(m.tcExcelFieldList,"")
|
||||
m.tcTableFieldList = EVL(m.tcTableFieldList,"*")
|
||||
m.tcTableForExpr = EVL(m.tcTableForExpr,".T.")
|
||||
m.lnSQL = 0
|
||||
m.lcTempAlias = SYS(2015)
|
||||
|
||||
TRY
|
||||
CreateExcelTemplate(m.tcXLSFile)
|
||||
IF !FILE(m.tcXLSFile)
|
||||
m.lnReturn
|
||||
ENDIF
|
||||
m.loConnection = CreateObject ( "ADODB.Connection")
|
||||
*!* This is the only provider/driver that appears to work without showing Select Data Source dialog
|
||||
*!* or throwing a weird error about the excel Database being readonly.
|
||||
m.loConnection.ConnectionString = [Provider=Microsoft.ACE.OLEDB.12.0;Data Source="] + m.tcXLSFile + [";Extended Properties="Excel 12.0 Xml;HDR=Yes;";]
|
||||
m.loConnection.Open()
|
||||
m.loConnection.Execute("DROP TABLE [Sheet1$]")
|
||||
SELECT &tcTableFieldList FROM (m.tvWorkarea) WHERE &tcTableForExpr INTO CURSOR (m.lcTempAlias) NOFILTER
|
||||
GO TOP IN (m.lcTempAlias)
|
||||
m.lnReturn = RECCOUNT(m.lcTempAlias)
|
||||
m.lcCreateTableCommand = ""
|
||||
m.lcSelectFields = ""
|
||||
m.lcUpdateNameListFields = ""
|
||||
m.lcUpdatableFieldList = ""
|
||||
m.lcConversionFunc = ""
|
||||
FOR m.lnFieldCounter = 1 TO AFIELDS(m.laTableFields, m.lcTempAlias)
|
||||
m.lcVFPFieldName = m.laTableFields(m.lnFieldCounter, 1)
|
||||
m.lcFieldName = ALLTRIM(GETWORDNUM(m.tcExcelFieldList, m.lnFieldCounter, ","))
|
||||
IF EMPTY(m.lcFieldName)
|
||||
m.lcFieldName = m.laTableFields(m.lnFieldCounter, 1)
|
||||
ENDIF
|
||||
m.lcSelectFields = m.lcSelectFields + "[" + m.lcFieldName + "] " + " AS " + m.lcVFPFieldName
|
||||
m.lcUpdateNameListFields = m.lcUpdateNameListFields + m.lcVFPFieldName + " [" + m.tcSheet + "].[" + m.lcFieldName + "]"
|
||||
m.lcUpdatableFieldList = m.lcUpdatableFieldList + m.lcVFPFieldName
|
||||
m.lcCreateTableCommand = m.lcCreateTableCommand + "[" + m.lcFieldName + "] "
|
||||
m.lcFieldType = m.laTableFields(m.lnFieldCounter, 2)
|
||||
m.lcCreateTableCommand = m.lcCreateTableCommand + ;
|
||||
ICASE(m.lcFieldType = 'C', 'Char(' + TRANSFORM(m.laTableFields(m.lnFieldCounter, 3)) + ')', ;
|
||||
m.lcFieldType = 'Y', 'Currency', ;
|
||||
m.lcFieldType = 'D', 'Date', ;
|
||||
m.lcFieldType = 'T', 'DateTime', ;
|
||||
m.lcFieldType = 'B', 'Double', ;
|
||||
m.lcFieldType = 'F', 'Double', ;
|
||||
m.lcFieldType = 'G', 'Binary', ;
|
||||
m.lcFieldType = 'I', 'Integer', ;
|
||||
m.lcFieldType = 'L', 'Logical', ;
|
||||
m.lcFieldType = 'M', 'Text', ;
|
||||
m.lcFieldType = 'N', 'Numeric(' + TRANSFORM(m.laTableFields(m.lnFieldCounter, 3)) + ',' + TRANSFORM(m.laTableFields(m.lnFieldCounter, 4)) + ')', ;
|
||||
m.lcFieldType = 'Q', 'Binary', ;
|
||||
m.lcFieldType = 'V', 'VarChar(' + TRANSFORM(m.laTableFields(m.lnFieldCounter, 3)) + ')', ;
|
||||
m.lcFieldType = 'W', 'Blob', ;
|
||||
'Char(' + TRANSFORM(m.laTableFields(m.lnFieldCounter, 3)) + ')')
|
||||
IF INLIST(m.lcFieldType,"T","D")
|
||||
m.lcConversionFunc = m.lcConversionFunc + IIF(!EMPTY(m.lcConversionFunc), ", ", "") + m.lcVFPFieldName + " EmptyFieldToNull"
|
||||
ENDIF
|
||||
IF m.lnFieldCounter != ALEN(m.laTableFields,1)
|
||||
m.lcCreateTableCommand = m.lcCreateTableCommand + ','
|
||||
m.lcSelectFields = m.lcSelectFields + ','
|
||||
m.lcUpdateNameListFields = m.lcUpdateNameListFields + ','
|
||||
m.lcUpdatableFieldList = m.lcUpdatableFieldList + ','
|
||||
ENDIF
|
||||
ENDFOR
|
||||
IF !EMPTY(m.lcCreateTableCommand)
|
||||
IF m.tcSheet != [Sheet1$]
|
||||
m.tcSheet = STRTRAN(m.tcSheet,"$","")
|
||||
ENDIF
|
||||
m.lcCreateTableCommand = "CREATE TABLE [" + m.tcSheet + "](" + m.lcCreateTableCommand + ")"
|
||||
m.loConnection.Errors.Clear()
|
||||
m.loConnection.Execute(m.lcCreateTableCommand)
|
||||
IF m.loConnection.Errors.Count>0
|
||||
ERROR m.loConnection.Errors(0).Description
|
||||
ENDIF
|
||||
m.loRecordSet = CreateObject("ADODB.Recordset")
|
||||
With m.loRecordSet
|
||||
.ActiveConnection = m.loConnection
|
||||
.CursorLocation = adUseClient
|
||||
.CursorType = adOpenStatic
|
||||
.LockType = adLockOptimistic
|
||||
ENDWITH
|
||||
m.loCursorAdapter = CREATEOBJECT("CursorAdapter")
|
||||
m.loCursorAdapter.Alias = SYS(2015)
|
||||
m.loCursorAdapter.DataSourceType = "ADO"
|
||||
m.loCursorAdapter.DataSource = m.loRecordSet
|
||||
m.loCursorAdapter.SelectCmd = "Select " + m.lcSelectFields + " From [" + m.tcSheet + "]"
|
||||
IF m.loCursorAdapter.CursorFill(.F.,.T.)
|
||||
m.loCursorAdapter.Tables = "[" + m.tcSheet + "]"
|
||||
m.loCursorAdapter.BufferModeOverride = 3 && faster than 5 when dealing with larger record sets
|
||||
m.loCursorAdapter.UpdateNameList = m.lcUpdateNameListFields
|
||||
m.loCursorAdapter.UpdatableFieldList = m.lcUpdatableFieldList
|
||||
IF !EMPTY(m.lcConversionFunc)
|
||||
m.loCursorAdapter.ConversionFunc = m.lcConversionFunc
|
||||
ENDIF
|
||||
INSERT INTO (m.loCursorAdapter.Alias) SELECT * FROM (m.lcTempAlias)
|
||||
m.lnReturn = TABLEUPDATE(.T.,.T.,m.loCursorAdapter.Alias)
|
||||
ELSE
|
||||
AERROR(m.laErr)
|
||||
ERROR m.laErr(2)
|
||||
ENDIF
|
||||
ENDIF
|
||||
m.loConnection.Close()
|
||||
CATCH TO m.loExc
|
||||
SET STEP ON
|
||||
m.lnReturn = 0
|
||||
FINALLY
|
||||
m.loCursorAdapter = Null
|
||||
m.loConnection = Null
|
||||
RELEASE loCursorAdapter, loConnection
|
||||
IF m.llOpenedtvWorkArea
|
||||
USE IN SELECT(m.tvWorkarea)
|
||||
ENDIF
|
||||
USE IN SELECT(m.lcTempAlias)
|
||||
SELECT (m.lnSelect)
|
||||
ENDTRY
|
||||
RETURN m.lnReturn
|
||||
ENDFUNC
|
||||
|
||||
***********************************
|
||||
FUNCTION CopyToExcelSimple(tcXLSFile, tcSheet, tvWorkArea, tcExcelFieldList, tcTableFieldList, tcTableForExpr)
|
||||
***********************************
|
||||
* PARAMETER Information
|
||||
* tcXLSFile := a string specifying an excel file (*.xls, *.xlsx, *.xlsm, *.xlsb) on disk
|
||||
* tcSheet := a string specifying the name of the worksheet to create within the excel workbook
|
||||
* tvWorkarea [optional] := the Alias, Work Area, or File Name of the table you want to be copied to the worksheet (default is currently selected Alias)
|
||||
* tcExcelFieldList [optional] := a comma delimited list of columns you want to create in the worksheet (default is '*' - columns will match table field list)
|
||||
* tcTableFieldList [optional] := a comma delimited list of fields you want this function to copy from tvWorkArea
|
||||
* tcTableForExpr [optional] := a valid VFP Where/For clause to be used when querying tvWorkArea for data to be copied to the worksheet
|
||||
*
|
||||
* RETURN Information
|
||||
* returns numeric, the number of records inserted into the worksheet
|
||||
*
|
||||
**********************************
|
||||
|
||||
LOCAL llOpenedtvWorkArea, loExc as Exception, ;
|
||||
lnReturn, lnResult, lnFieldCounter, lnSQL, ;
|
||||
lcFieldName, lcFieldType, lcSelectFields, ;
|
||||
laErr[1]
|
||||
|
||||
m.lnSelect = SELECT(0)
|
||||
m.lnReturn = 0
|
||||
|
||||
m.llOpenedtvWorkArea = .F.
|
||||
IF !USED(m.tvWorkarea) AND TYPE("m.tvWorkArea") = "C" AND FILE(DEFAULTEXT(m.tvWorkarea,"DBF"))
|
||||
SELECT 0
|
||||
USE (DEFAULTEXT(m.tvWorkarea,"DBF")) SHARED AGAIN
|
||||
m.tvWorkarea = ALIAS()
|
||||
m.llOpenedtvWorkArea = .T.
|
||||
ELSE
|
||||
IF !USED(m.tvWorkarea)
|
||||
m.tvWorkarea = ALIAS()
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF TYPE("m.tvWorkArea") = "N"
|
||||
m.tvWorkArea = ALIAS(m.tvWorkArea)
|
||||
ENDIF
|
||||
|
||||
m.tcSheet = ALLTRIM(EVL(m.tcSheet,"Sheet1$"))
|
||||
IF AT("$",m.tcSheet) = 0
|
||||
m.tcSheet = m.tcSheet + "$"
|
||||
ENDIF
|
||||
m.tcExcelFieldList = EVL(m.tcExcelFieldList,"")
|
||||
m.tcTableFieldList = EVL(m.tcTableFieldList,"*")
|
||||
m.tcTableForExpr = EVL(m.tcTableForExpr,".T.")
|
||||
m.lnSQL = 0
|
||||
m.lcTempAlias = SYS(2015)
|
||||
|
||||
TRY
|
||||
SELECT &tcTableFieldList FROM (m.tvWorkarea) WHERE &tcTableForExpr INTO CURSOR (m.lcTempAlias) NOFILTER
|
||||
COPY TO (m.tcXLSFile) TYPE XL5
|
||||
CATCH TO m.loExc
|
||||
SET STEP ON
|
||||
m.lnReturn = 0
|
||||
FINALLY
|
||||
IF m.llOpenedtvWorkArea
|
||||
USE IN SELECT(m.tvWorkarea)
|
||||
ENDIF
|
||||
USE IN SELECT(m.lcTempAlias)
|
||||
SELECT (m.lnSelect)
|
||||
ENDTRY
|
||||
RETURN m.lnReturn
|
||||
ENDFUNC
|
||||
|
||||
|
||||
*******************
|
||||
FUNCTION EmptyFieldToNull(tdFieldValue)
|
||||
*******************
|
||||
RETURN EVL(m.tdFieldValue,NULL)
|
||||
ENDFUNC
|
||||
|
||||
*******************
|
||||
FUNCTION CreateExcelTemplate(tcExcelFile)
|
||||
*******************
|
||||
LOCAL lcExcelFileExtension, lcFileBinary
|
||||
m.llReturn = .F.
|
||||
IF FILE(m.tcExcelFile)
|
||||
m.llReturn = .T.
|
||||
ELSE
|
||||
m.lcExcelFileExtension = UPPER(JUSTEXT(m.tcExcelFile))
|
||||
DO case
|
||||
CASE m.lcExcelFileExtension = "XLSX"
|
||||
m.lcFileBinary = 0h504B030414000600080000002100CC7EE6A14E010000080400001300DF015B436F6E74656E745F54797065735D2E786D6C20A2DB0128A00002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000AC93CB4EC3301045F748FC83E52D8ADDB2400835ED82C712BA281F60EC4963D52F79DCD2FE3D938422814A455536B1226BEE9D39733D996DBD631BC86863A8F9588C3883A0A3B16159F3D7C55375CB1916158C723140CD77807C36BDBC982C7609905175C09AB7A5A43B2951B7E0158A9820D04D13B357857EF35226A5576A09F27A34BA913A8602A154A5D3E0D3C90B3590AD013657B93C2B4F3E72EB64213518BE63417A9CDD0F859D77CD554ACE6A55A873B909E6876B159BC66A3051AF3D79895EECAA5391BF1A62D939C0B3AD306550065B80E29D1844F7CE0FD0A8B52BEC714B0406E8191C9E36DA274C
|
||||
m.lcFileBinary = m.lcFileBinary + 0h4195FDF8D8DA84471C8EB33BCEE43DE6D55B8CABFFA6D2D1115ED9B0EFFB5008687BF31C134ADAF5D90D4087DC80A91249422E16BE981DF2A60076B3F76B44D91FE7A7F07B34BEF4FFC440C70CA743D867A5AB3E30B9ECDFF1F4030000FFFF0300504B030414000600080000002100B5553023F50000004C0200000B00CE015F72656C732F2E72656C7320A2CA0128A0000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C92CF4EC3300CC6EF48BC43E4FBEA6E4808A1A5BB4C48BB21541EC024EE1FB58DA32440F7F68403824A63DBD1F6E7CF3F5BDEEEE669541F1C622F4EC3BA2841B133627BD76A78AD9F560FA06222676914C71A8E1C6157DDDE6C5F78A4949B62D7FBA8B28B8B1ABA94FC2362341D4F140BF1EC72A5913051CA6168D19319A865DC94E53D86BF1E502D3CD5C16A08077B07AA3EFA3CF9B2B7344D6F782FE67D62974E8C409E
|
||||
m.lcFileBinary = m.lcFileBinary + 0h133BCB76E543660BA9CFDBA89A42CB498315F39CD311C9FB2263039E26DA5C4FF4FFB63871224B89D048E0F33CDF8A7340EBEB812E9F68A9F8BDCE3CE2A784E14D64F861C1C50F545F000000FFFF0300504B0304140006000800000021008D87DA70E00000002D0200001A000801786C2F5F72656C732F776F726B626F6F6B2E786D6C2E72656C7320A2040128A00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AC91CB6AC3301045F785FE83987D3D760AA594C8D99442B6C5FD00218F1FC496846692D67F5FE182DD404836D908AE06DD73246D773FE3A04E14B9F74E4391E5A0C8595FF7AED5F0557D3CBD826231AE368377A46122865DF9F8B0FDA4C1483AC45D1F58A516C71A3A91F086C8B6
|
||||
m.lcFileBinary = m.lcFileBinary + 0hA3D170E603B934697C1C8DA4185B0CC61E4C4BB8C9F3178CFF3BA03CEB54FB5A43DCD7CFA0AA2924F2ED6EDF34BDA5776F8F2339B98040966948175095892D8986BF9C2547C0CBF8CD3DF1929E8556FA1C715E8B6B0EC53D1DBE7D3C704724ABC7B2C5384F16193CFBE4F2170000FFFF0300504B030414000600080000002100A460FAFF52010000270200000F000000786C2F776F726B626F6F6B2E786D6C8C915D6FC2201486EF97EC3F10EE272DA9CE185B93655BE6CD6232A7D7AC9C5A228506A8D57FBF534CE776B72BCE073CE7BC2FCBD5B9D1E404CE2B6B729A4E124AC094562A73C8E9E7F6F5614E890FC248A1AD819C5EC0D355717FB7ECAD3B7E
|
||||
m.lcFileBinary = m.lcFileBinary + 0h597B2408303EA77508ED82315FD6D0083FB12D18EC54D6352260EA0ECCB70E84F435406834E34932638D50865E090BF71F86AD2A55C2B32DBB064CB8421C6811707D5FABD6D36259290DBBAB2222DAF65D34B8F75953A2850F2F52059039CD30B53DFC29B8AE7DEA941EBAD3644A59F12372E3085203B88D5327515ED0294A2454A2D3618B82C77958E719E7B3E1ED60CE4E41EF6F982125E7BD32D2F639E5199A7D19B31427923EB6F64A861A51D9FC567B0375A8434EE7499A0C74F60B1F2DC531F12426EAFD186CC625636D8D9230760B85815BCB3412C667A5D0250A1C8E78914F1F7954CFC63F2EBE010000FFFF0300504B0304140006000800000021
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00A083C4AEA3010000640300000D000000786C2F7374796C65732E786D6CA453C16ADC3010BD17F20F42F746BB0B0D6DB19D436121909440B6D0AB6CC95EC16864A4F1B2EED767643BDEDD530EBD584F4F336F9E66E4E2F1EC419C6C4C2E6029B7F71B292C36C138EC4AF9E7B0FFFA5D8A441A8D8680B694A34DF2B1BAFB52241AC1BE1DAD25C112984A7924EA7F2A959AA3F53ADD87DE229FB4217A4DBC8D9D4A7DB4DAA49CE441ED369B07E5B54359156D404AA2090312BB5888AA48FFC44903335BA9AAA20910A2209667231383DADB39E29706574797C35AED1D8C33BDCBC4E46889F30E43CCA4CA259725719203580DECB20126AAA2D74436E29E3762
|
||||
m.lcFileBinary = m.lcFileBinary + 0hC187B1E7F2C8DD9865A6B84FA2BBA8C7EDEEDB55829A0A56451DA2E1EE5F5F7DA6AA026C4B6C34BAEE98570A3D7FEB40143C03E37417500343F591B100BE4E6301DEF284FEB637DAE756E0E0F79E9E4C2979D6B9091F902FB2C0596FDE64FD6BB559FBBF65C5B9BDD567C52BDB37A6D7F222CFBB94BFF39302B94A887A70400E6F05A7EBB3A6395F5AB0C913205DF3CBCDCD59AB70278C6DF50074580F4B79C12FD6B8C1FF58A35EDD29D02451CA0B7ECE93DA3E4C534EEBEF51BD030000FFFF0300504B030414000600080000002100E9A625B882060000531B000013000000786C2F7468656D652F7468656D65312E786D6CEC594F6FDB3614BF0FD87720
|
||||
m.lcFileBinary = m.lcFileBinary + 0h746F6D27B61B07758AD8B19BAD4D1BC46E871E6999965853A240D2497D1BDAE38001C3BA619701BBED306C2BD002BB749F265B87AD03FA15F6484AB218CB4BD2061BD6D58744227F7CFFDFE32375F5DA8388A1432224E571DBAB5DAE7A88C43E1FD338687B7786FD4B1B1E920AC763CC784CDADE9C48EFDAD6FBEF5DC59B2A241141B03E969BB8ED854A259B958AF46118CBCB3C2131CC4DB888B082571154C6021F01DD8855D6AAD56625C234F6508C23207B7B32A13E41434DD2DBCA88F718BCC64AEA019F8981264D9C15063B9ED63442CE659709748859DB033E637E34240F948718960A26DA5ED5FCBCCAD6D50ADE4C1731B5626D615DDFFCD275E982
|
||||
m.lcFileBinary = m.lcFileBinary + 0hF174CDF014C128675AEBD75B577672FA06C0D432AED7EB757BB59C9E0160DF074DAD2C459AF5FE46AD93D12C80ECE332ED6EB551ADBBF802FDF525995B9D4EA7D14A65B1440DC83ED697F01BD5667D7BCDC11B90C53796F0F5CE76B7DB74F00664F1CD257CFF4AAB5977F10614321A4F97D0DAA1FD7E4A3D874C38DB2D856F007CA39AC2172888863CBA348B098FD5AA588BF07D2EFA00D04086158D919A2764827D88E22E8E468262CD006F125C98B143BE5C1AD2BC90F4054D54DBFB30C190110B7AAF9E7FFFEAF953F4EAF993E387CF8E1FFE74FCE8D1F1C31F2D2D67E12E8E83E2C297DF7EF6E7D71FA33F9E7EF3F2F117E57859C4FFFAC327BFFCFC79
|
||||
m.lcFileBinary = m.lcFileBinary + 0h3910326821D18B2F9FFCF6ECC98BAF3EFDFDBBC725F06D814745F8904644A25BE4081DF0087433867125272371BE15C3105367050E817609E99E0A1DE0AD396665B80E718D775740F128035E9FDD77641D8462A66809E71B61E400F738671D2E4A0D7043F32A5878388B8372E66256C41D607C58C6BB8B63C7B5BD590255330B4AC7F6DD903862EE331C2B1C909828A4E7F8949012EDEE51EAD8758FFA824B3E51E81E451D4C4B4D32A4232790168B7669047E9997E90CAE766CB3771775382BD37A871CBA484808CC4A841F12E698F13A9E291C95911CE288150D7E13ABB04CC8C15CF8455C4F2AF074401847BD3191B26CCD6D01FA169C7E0343BD2A75FB
|
||||
m.lcFileBinary = m.lcFileBinary + 0h1E9B472E52283A2DA37913735E44EEF06937C45152861DD0382C623F905308518CF6B92A83EF713743F43BF801C72BDD7D9712C7DDA717823B3470445A04889E9909ED4B28D44EFD8D68FC77C59851A8C63606DE15E3B6B70D5B53594AEC9E28C1AB70FFC1C2BB8367F13E81585FDE78DED5DD7775D77BEBEBEEAA5C3E6BB55D1458A8BDBA79B07DB1E992A3954DF28432365073466E4AD3274BD82CC67D18D4EBCC0191E487A62484C7B4B83BB84060B30609AE3EA22A1C8438811EBBE66922814C490712255CC2D9CE0C97D2D678E8D3953D1936F499C1D60389D51E1FDBE1753D9C1D0D723266CB09CCF93363B4AE099C95D9FA959428A8FD3ACC6A5AA8
|
||||
m.lcFileBinary = m.lcFileBinary + 0h3373AB19D14CA973B8E52A830F975583C1DC9AD08520E85DC0CA4D38A26BD67036C18C8CB5DDED069CB9C578E1225D24433C26A98FB4DECB3EAA192765B1622E0320764A7CA4CF79A758ADC0ADA5C9BE01B7B338A9C8AEBE825DE6BD37F15216C10B2FE9BC3D918E2C2E26278BD151DB6B35D61A1EF271D2F62670AC85C72801AF4BDDF86116C0DD90AF840DFB5393D964F9C29BAD4C3137096A705361EDBEA4B053071221D50E96A10D0D339586008B35272BFF5A03CC7A510AD8487F0D29D6372018FE3529C08EAE6BC964427C5574766144DBCEBEA6A594CF141183707C84466C260E30B85F872AE833A6126E274C45D02F7095A6AD6DA6DCE29C265DF1
|
||||
m.lcFileBinary = m.lcFileBinary + 0h02CBE0EC38664988D372AB5334CB640B37799CCB60DE0AE2816EA5B21BE5CEAF8A49F90B52A518C6FF3355F47E02D705EB63ED011F6E7205463A5FDB1E172AE450859290FA7D018D83A91D102D701D0BD31054709F6CFE0B72A8FFDB9CB3344C5AC3A94F1DD000090AFB910A0521FB50964CF49D42AC96EE5D96244B0999882A882B132BF6881C1236D435B0A9F7760F8510EAA69AA465C0E04EC69FFB9E66D028D04D4E31DF9C1A92EFBD3607FEE9CEC7263328E5D661D3D064F6CF452CD955ED7AB33CDB7B8B8AE889459B55CFB2029815B682569AF6AF29C239B75A5BB196345E6B64C28117973586C1BC214AE0D207E93FB0FF51E133FB71426FA8437E
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00B515C1B7064D0CC206A2FA926D3C902E907670048D931DB4C1A44959D3A6AD93B65AB6595F70A79BF33D616C2DD959FC7D4E63E7CD99CBCEC9C58B34766A61C7D6766CA5A9C1B32753148626D941C638C67CD52A7E78E2A3FBE0E81DB8E29F31254D30C1672581A1F51C983C80E4B71CCDD2ADBF000000FFFF0300504B030414000600080000002100075F38D31E010000C701000018000000786C2F776F726B7368656574732F7368656574312E786D6C8C514D6BC3300CBD0FF61F8CEE8BD38D6EA324298352B6C360ECEBEE2472626A5BC156D7EDDFCF496819F4B29B3EDE7BD2938AF5B7B3E20B4334E44B58643908F40DB5C677257CBC6FAFEE4144
|
||||
m.lcFileBinary = m.lcFileBinary + 0h56BE55963C96F08311D6D5E54571A0B08B3D228BA4E063093DF3B09232363D3A15331AD0A78EA6E014A73474320E01553B919C95D7797E2B9D321E668555F88F06696D1ADC50B377E87916096815A7FD636F860855D19AD41B0D8980BA848705C8AA98C67E1A3CC43FB16055BFA1C586B14DEE418CAE6AA2DD087C4AA57CA4CA33EE7672F512448B5AED2DBFD2E1114DD77312599EA66D14AB441F5487CF2A74C6476151274C9EDD8108337E8A9986A9BA04511333B963D6A783613A4C9EDD80D0447C4CC6B54E2FA87E010000FFFF0300504B030414000600080000002100A6A453EB3E0100005102000011000801646F6350726F70732F636F72652E786D
|
||||
m.lcFileBinary = m.lcFileBinary + 0h6C20A2040128A00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000007C92516BC3201485DF07FB0FC1F7449342DB4992C236FAB4C260191B7B13BD6D65D188BAA5FDF733499BA65006BE78CFB9DF3D5ECC57075547BF609D6C7481D284A008346F84D4BB02BD57EB788922E79916AC6E3414E8080EADCAFBBB9C1BCA1B0BAFB63160BD0417059276949B02EDBD371463C7F7A0984B82430771DB58C57CB8DA1D368C7FB31DE08C903956E099609EE10E189B91884E48C147A4F9B1750F101C430D0AB477384D527CF17AB0CADD6CE8958953497F34E14DA7B853B6E08338BA0F4E8EC6B66D9376D6C708F953FCB97979EB9F1A4BDDED8A032A73C129B7C07C63CB1C4F2F617135737E1376BC95201E8F41
|
||||
m.lcFileBinary = m.lcFileBinary + 0hBF5113BC8F3B40404421001DE29E958FD9D373B54665B7C3983CC4E9BC2284F6E7AB1B79D5DF051A0AEA34F87FE2B223924595113A5BD02C9B10CF8021F7F52728FF000000FFFF0300504B03041400060008000000210027388BC4880100001103000010000801646F6350726F70732F6170702E786D6C20A2040128A000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C92C16EDB300C86EF03F60E86EE8D9C601886405651A41D7AD8B00049BBB326D3B150591244D648F6F4A36DA471BA9DA613C99FF8F58994BA3D76BEE821A38BA112CB45290A0836D62E1C2AF1B4FF7AF345144826D4C6C7009538018A5BFDF183DAE6982093032CD82260255AA2B496126D0B9DC105CB819526E6CE10A7F9
|
||||
m.lcFileBinary = m.lcFileBinary + 0h2063D3380BF7D1BE761048AECAF2B3842341A8A1BE496F8662725CF7F4BFA675B4031F3EEF4F8981B5BA4BC93B6B885FA9BF3B9B23C6868A87A305AFE45C544CB703FB9A1D9D74A9E43C553B6B3C6CD85837C623287929A84730C3D0B6C665D4AAA7750F96622ED0FDE6B1AD44F1CB200C3895E84D762610630D6D5332C63E2165FD33E6176C010895E486A93886F3DE79EC3EE9E5D8C0C175E3603081B0708DB877E4017F345B93E91FC4CB39F1C830F14E38BB816FBA73CE373E996F7AE7BD895D32E1C4C25BF4CD85177C4AFB786F08CEE3BC2EAA5D6B32D4BC81B37E29A8479E64F683C9A635E100F5B9E76F6158FEF3F4C3F572B528F98C3B3FD794BC
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFC65FD070000FFFF0300504B01022D0014000600080000002100CC7EE6A14E010000080400001300000000000000000000000000000000005B436F6E74656E745F54797065735D2E786D6C504B01022D0014000600080000002100B5553023F50000004C0200000B000000000000000000000000005E0300005F72656C732F2E72656C73504B01022D00140006000800000021008D87DA70E00000002D0200001A000000000000000000000000004A060000786C2F5F72656C732F776F726B626F6F6B2E786D6C2E72656C73504B01022D0014000600080000002100A460FAFF52010000270200000F000000000000000000000000006A080000786C2F776F
|
||||
m.lcFileBinary = m.lcFileBinary + 0h726B626F6F6B2E786D6C504B01022D0014000600080000002100A083C4AEA3010000640300000D00000000000000000000000000E9090000786C2F7374796C65732E786D6C504B01022D0014000600080000002100E9A625B882060000531B00001300000000000000000000000000B70B0000786C2F7468656D652F7468656D65312E786D6C504B01022D0014000600080000002100075F38D31E010000C701000018000000000000000000000000006A120000786C2F776F726B7368656574732F7368656574312E786D6C504B01022D0014000600080000002100A6A453EB3E010000510200001100000000000000000000000000BE130000646F635072
|
||||
m.lcFileBinary = m.lcFileBinary + 0h6F70732F636F72652E786D6C504B01022D001400060008000000210027388BC48801000011030000100000000000000000000000000033160000646F6350726F70732F6170702E786D6C504B050600000000090009003E020000F11800000000
|
||||
CASE m.lcExcelFileExtension = "XLSB"
|
||||
m.lcFileBinary = 0h504B030414000600080000002100558086C16D010000020400001300DD015B436F6E74656E745F54797065735D2E786D6C20A2D90128A00002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000000000000000000000000A453CD4BC33014BF0BFE0F255769B2791091B53BE8042FBAC3C47396BEAE616912F2B2D9FEF7BEB6ACA0EC83E1A5A16D7E9F2F99CD9BDA247B08A89DCDD8944F580256B942DB4DC63E57AFE9234B304A5B48E32C64AC0564F3FCF666B66A3D6042688B19AB62F44F42A0AAA096C89D074B7F4A176A19E9356C84976A2B3720EE279307A19C8D60631A3B0E96CF5EA0943B139345439F07276B6D59F23CECEBA43226BD375AC94846C5DE16BCC6141A058663051039016468792D55700B2BD706688B241691CF3E2860D005244B19E2BBAC894D344644720BC373CAC9EF05C1DFA95257965A41E1D4AEA62CBC27BBEB
|
||||
m.lcFileBinary = m.lcFileBinary + 0h584E0B7EBBB0EDDDA2E89769E7FA82EA1873047702471A0B60F002D79F047E980927645F2B56DAE321C21185F3159D894E252D83F3286886FF2E1ABA435240917AA28410358C9E4FCC796C0EC5704ADE08DF5C553EE17AD0179E192FC6D6005E33D301718A72AC4DB900D7F776186F873E5296E86F70FE030000FFFF0300504B0304140006000800000021004382E3C5F70000004C0200000B00CE015F72656C732F2E72656C7320A2CA0128A000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C92CF4EC3300CC6EF48BC43E4FBEA6E4808A1B5BB20A4DD102A0FE0256E1BB58DA32440F7F66427A834B61DFDEFF3CF9FBCDDCDD3A8BE38442BAE8275518262A7C558D755F0D1BCAE9E40C544CED0288E2B3872845D7D7FB77DE791521E8ABDF5516515172BE853F2CF8851F73C512CC4B3CB9556C2442987A1434F7AA08E7153968F18FE6A40BD
|
||||
m.lcFileBinary = m.lcFileBinary + 0hD0547B5341D89B0750CDD1E7CDD7B5A56DADE617D19F13BB746605F29CD819362B1F325B48365FA31A0A1DA70A8CE8B79C8E48DE17191BF03CD1E676A2FFAFC58913194A845A025FE639755C025ADF0E74DDA265C7AF3BF388DF128683C8501CAC3B99838B1FA87F000000FFFF0300504B03041400060008000000210006332055E50000002D0200001A000801786C2F5F72656C732F776F726B626F6F6B2E62696E2E72656C7320A2040128A000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AC91C16AC3301044EF85FE83D87BBD760AA594C8B98442AEC1FD00555EDB22B624B4DB36FEFB0A97360DA4F4928B60B468DEEC68BD394EA37AA7C42E780D555182226F43EB7CAFE1A579BE7B04C562
|
||||
m.lcFileBinary = m.lcFileBinary + 0h7C6BC6E049C34C0C9BFAF666BDA7D1487EC4838BACB28B670D83487C42643BD064B808917C9E74214D46B24C3D46630FA6275C95E503A6DF1E509F79AA5DAB21EDDA7B50CD1C33F97FEFD075CED236D8B789BC5C4020CB3CE6055463524FA2E14B17AFCE035EC6AFAE89975C0B9DE88BC4E5AC8ADCD35F19AA6B66F808E9C003919C72FC5C312E93EABB103CFBE4FA130000FFFF0300504B030414000600080000002100A76734B792000000C00000000F000000786C2F776F726B626F6F6B2E62696E6A66646860346040034C407E05430E0323903681922C60B62983018329C34C461E0DA0B0D35390020686764686798CB21F80AC4C20BE6AC9C0E025CF
|
||||
m.lcFileBinary = m.lcFileBinary + 0hC0100132050A2A3A1819FA1919E630AA800440BA40C615317832A4301832B001D9C10C190CA9405802E44F606498CB2825FB9A11AC320528FB67E5C74BBE4901F6209D590CB31819196603710B2303000000FFFF0300504B030414000600080000002100F98F44D4E0000000CA0100000D000000786C2F7374796C65732E62696EA4904F4B424114C57FBEB9E8F6B9EB1BB410FF1104EE8C5CA608F60514438522100DFA16ADEAC3E52E15FCB3D255923CCFBC47E2D26860CE9C7BCF993B73EF7BC097590AC85D4E846F9E0690F127444146784B9B470674180AA7C6A7993CE46BDEE3AA1E89DC8D402B8EFE00F95A56EEFF569918B3A491C295CAA58E1F38
|
||||
m.lcFileBinary = m.lcFileBinary + 0h8FCD8D4D72BD189EB61086B03516BFDAB1AC88D796C62AD14A175ED36B515A6783670DEB291EDCDAF876E6D59DE3C7353DCB6ADF4BED68B00FB418F11AB3BAA2AE863CD6DD4AEC6A2A7A51B5D189EB4EB91E7DE5CA5CB3777C041C000000FFFF0300504B030414000600080000002100E9A625B882060000531B000013000000786C2F7468656D652F7468656D65312E786D6CEC594F6FDB3614BF0FD87720746F6D27B61B07758AD8B19BAD4D1BC46E871E6999965853A240D2497D1BDAE38001C3BA619701BBED306C2BD002BB749F265B87AD03FA15F6484AB218CB4BD2061BD6D58744227F7CFFDFE32375F5DA8388A1432224E571DBAB5DAE7A88C43E
|
||||
m.lcFileBinary = m.lcFileBinary + 0h1FD338687B7786FD4B1B1E920AC763CC784CDADE9C48EFDAD6FBEF5DC59B2A241141B03E969BB8ED854A259B958AF46118CBCB3C2131CC4DB888B082571154C6021F01DD8855D6AAD56625C234F6508C23207B7B32A13E41434DD2DBCA88F718BCC64AEA019F8981264D9C15063B9ED63442CE659709748859DB033E637E34240F948718960A26DA5ED5FCBCCAD6D50ADE4C1731B5626D615DDFFCD275E982F174CDF014C128675AEBD75B577672FA06C0D432AED7EB757BB59C9E0160DF074DAD2C459AF5FE46AD93D12C80ECE332ED6EB551ADBBF802FDF525995B9D4EA7D14A65B1440DC83ED697F01BD5667D7BCDC11B90C53796F0F5CE76B7DB74F006
|
||||
m.lcFileBinary = m.lcFileBinary + 0h64F1CD257CFF4AAB5977F10614321A4F97D0DAA1FD7E4A3D874C38DB2D856F007CA39AC2172888863CBA348B098FD5AA588BF07D2EFA00D04086158D919A2764827D88E22E8E468262CD006F125C98B143BE5C1AD2BC90F4054D54DBFB30C190110B7AAF9E7FFFEAF953F4EAF993E387CF8E1FFE74FCE8D1F1C31F2D2D67E12E8E83E2C297DF7EF6E7D71FA33F9E7EF3F2F117E57859C4FFFAC327BFFCFC793910326821D18B2F9FFCF6ECC98BAF3EFDFDBBC725F06D814745F8904644A25BE4081DF0087433867125272371BE15C3105367050E817609E99E0A1DE0AD396665B80E718D775740F128035E9FDD77641D8462A66809E71B61E400F738671D2E
|
||||
m.lcFileBinary = m.lcFileBinary + 0h4A0D7043F32A5878388B8372E66256C41D607C58C6BB8B63C7B5BD590255330B4AC7F6DD903862EE331C2B1C909828A4E7F8949012EDEE51EAD8758FFA824B3E51E81E451D4C4B4D32A4232790168B7669047E9997E90CAE766CB3771775382BD37A871CBA484808CC4A841F12E698F13A9E291C95911CE288150D7E13ABB04CC8C15CF8455C4F2AF074401847BD3191B26CCD6D01FA169C7E0343BD2A75FB1E9B472E52283A2DA37913735E44EEF06937C45152861DD0382C623F905308518CF6B92A83EF713743F43BF801C72BDD7D9712C7DDA717823B3470445A04889E9909ED4B28D44EFD8D68FC77C59851A8C63606DE15E3B6B70D5B53594AEC9E28
|
||||
m.lcFileBinary = m.lcFileBinary + 0hC1AB70FFC1C2BB8367F13E81585FDE78DED5DD7775D77BEBEBEEAA5C3E6BB55D1458A8BDBA79B07DB1E992A3954DF28432365073466E4AD3274BD82CC67D18D4EBCC0191E487A62484C7B4B83BB84060B30609AE3EA22A1C8438811EBBE66922814C490712255CC2D9CE0C97D2D678E8D3953D1936F499C1D60389D51E1FDBE1753D9C1D0D723266CB09CCF93363B4AE099C95D9FA959428A8FD3ACC6A5AA83373AB19D14CA973B8E52A830F975583C1DC9AD08520E85DC0CA4D38A26BD67036C18C8CB5DDED069CB9C578E1225D24433C26A98FB4DECB3EAA192765B1622E0320764A7CA4CF79A758ADC0ADA5C9BE01B7B338A9C8AEBE825DE6BD37F15216
|
||||
m.lcFileBinary = m.lcFileBinary + 0hC10B2FE9BC3D918E2C2E26278BD151DB6B35D61A1EF271D2F62670AC85C72801AF4BDDF86116C0DD90AF840DFB5393D964F9C29BAD4C3137096A705361EDBEA4B053071221D50E96A10D0D339586008B35272BFF5A03CC7A510AD8487F0D29D6372018FE3529C08EAE6BC964427C5574766144DBCEBEA6A594CF141183707C84466C260E30B85F872AE833A6126E274C45D02F7095A6AD6DA6DCE29C265DF102CBE0EC38664988D372AB5334CB640B37799CCB60DE0AE2816EA5B21BE5CEAF8A49F90B52A518C6FF3355F47E02D705EB63ED011F6E7205463A5FDB1E172AE450859290FA7D018D83A91D102D701D0BD31054709F6CFE0B72A8FFDB9CB3344C
|
||||
m.lcFileBinary = m.lcFileBinary + 0h5AC3A94F1DD000090AFB910A0521FB50964CF49D42AC96EE5D96244B0999882A882B132BF6881C1236D435B0A9F7760F8510EAA69AA465C0E04EC69FFB9E66D028D04D4E31DF9C1A92EFBD3607FEE9CEC7263328E5D661D3D064F6CF452CD955ED7AB33CDB7B8B8AE889459B55CFB2029815B682569AF6AF29C239B75A5BB196345E6B64C28117973586C1BC214AE0D207E93FB0FF51E133FB71426FA8437E00B515C1B7064D0CC206A2FA926D3C902E907670048D931DB4C1A44959D3A6AD93B65AB6595F70A79BF33D616C2DD959FC7D4E63E7CD99CBCEC9C58B34766A61C7D6766CA5A9C1B32753148626D941C638C67CD52A7E78E2A3FBE0E81DB8E29F
|
||||
m.lcFileBinary = m.lcFileBinary + 0h31254D30C1672581A1F51C983C80E4B71CCDD2ADBF000000FFFF0300504B030414000600080000002100A1512698C10000001C01000023000000786C2F776F726B7368656574732F5F72656C732F7368656574312E62696E2E72656C736CCFC16AC3300C06E0FBA0EF60745F9CF430C68853D861906BE91E40B395C434968D654AF2F6F56DEDD8F197F83FA1FEB48555DD288B8F6CA06B5A50C4363ACFB381EFCBD7EB3B2829C80ED7C864602781D37078E9CFB462A925597C12551516034B29E9436BB10B05942626E2BA99620E586ACCB34E68AF38933EB6ED9BCE8F060C4FA61A9D813CBA0ED4654FF5F21F3B789BA3C4A93436061DA7C9DBFF54BDAD9F
|
||||
m.lcFileBinary = m.lcFileBinary + 0h9E31EF233BDAAA8579A662E0E777D83535801E7AFDF4D370070000FFFF0300504B030414000600080000002100A273D38D810000001601000018000000786C2F776F726B7368656574732F7368656574312E62696E6A646498CC287E928589C181010CFE430188338551002C8644B432327432CADD61461202EB4C411298C1A882220F946244928631BB1819DA18199E32F3806CE460D001AB99C8C8308991613A8B134415480C9B5E9819301A5D0D887F97994980E10EB3411A183CB387D1103D2FEC61B431185CB687D14D8C0C00000000FFFF0300504B0304140006000800000021001E06781015000000200000001E000000786C2F776F726B73686565
|
||||
m.lcFileBinary = m.lcFileBinary + 0h74732F62696E617279496E646578312E62696ED29260000205108106A632310011000000FFFF0300504B0304140006000800000021004B7C9F083E0100005102000011000801646F6350726F70732F636F72652E786D6C20A2040128A0000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C925F4BC33014C5DF05BF43C97B9B74835943DB81CA9E1C085614DF4272D7159B3F24D16EDFDEB4DD6A0743C84BEE39F7774F2EC9D707D9463F605DA35581D284A00814D7A2517581DEAA4D9CA1C879A6046BB582021DC1A175797B937343B9B6F062B501EB1B7051202947B929D0DE7B4331767C0F92B92438541077DA4AE6C3D5D6D830FEC56AC00B42565882678279867B606C26223A21059F90E6DBB6
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0340700C2D4850DEE13449F19FD78395EE6AC3A0CC9CB2F14713DE748A3B670B3E8A93FBE09AC9D8755DD22D8718217F8A3FB6CFAFC353E346F5BBE280CA5C70CA2D30AF6D99E3F9252CAE65CE6FC38E770D888763D0AFD4041FE28E1010510840C7B867E57DF9F8546D50D9EF3026F771BAAA08A1C3F9EC475EF4F781C6823C0DFE9F98F54472572D085D66946433E21930E6BEFC04E52F000000FFFF0300504B0304140006000800000021006F7E771280010000FE02000010000801646F6350726F70732F6170702E786D6C20A2040128A00001000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C92416BE3301085EF85FD0F46F7464E589625C82AA569E9614B0349B367551EC7228A64345393F4D7
|
||||
m.lcFileBinary = m.lcFileBinary + 0h776C93C6D9EDA93A8DE63D9E3E8DA46E0E7B9FB590D0C55088E9241719041B4B17B68578593F5CFF16199209A5F13140218E80E246FFB852CB141B48E400338E0858889AA8994B89B686BDC109CB81952AA6BD21DEA6AD8C55E52C2CA27DDB432039CBF35F120E04A184F2BAF90C1443E2BCA5EF8696D1767CB8591F1B06D6EAB669BCB386F896FAC9D914315694DD1F2C7825C7A262BA15D8B7E4E8A87325C75BB5B2C6C31D07EBCA780425CF0DF508A61BDAD2B8845AB5346FC1524C19BA771EDB4C64AF06A1C329446B92338118ABB30D9BBEF60D52D27F63DA610D40A8241B86665F8EBDE3DAFDD4D3DEC0C5A5B10B184058B8445C3BF280CFD5D224FA
|
||||
m.lcFileBinary = m.lcFileBinary + 0h82783A26EE1906DE0167D5F10D678EF9FA2BF349FF64FF7161872FCD3A2E0CC16976974DB5AA4D8292C77DD2CF0DF5C8634BBE0BB9AB4DD84279F2FC2F742FBD19BEB39ECE2639AFFE814F3D25CF1F577F000000FFFF0300504B01022D0014000600080000002100558086C16D010000020400001300000000000000000000000000000000005B436F6E74656E745F54797065735D2E786D6C504B01022D00140006000800000021004382E3C5F70000004C0200000B000000000000000000000000007B0300005F72656C732F2E72656C73504B01022D001400060008000000210006332055E50000002D0200001A00000000000000000000000000690600
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00786C2F5F72656C732F776F726B626F6F6B2E62696E2E72656C73504B01022D0014000600080000002100A76734B792000000C00000000F000000000000000000000000008E080000786C2F776F726B626F6F6B2E62696E504B01022D0014000600080000002100F98F44D4E0000000CA0100000D000000000000000000000000004D090000786C2F7374796C65732E62696E504B01022D0014000600080000002100E9A625B882060000531B00001300000000000000000000000000580A0000786C2F7468656D652F7468656D65312E786D6C504B01022D0014000600080000002100A1512698C10000001C01000023000000000000000000000000000B
|
||||
m.lcFileBinary = m.lcFileBinary + 0h110000786C2F776F726B7368656574732F5F72656C732F7368656574312E62696E2E72656C73504B01022D0014000600080000002100A273D38D810000001601000018000000000000000000000000000D120000786C2F776F726B7368656574732F7368656574312E62696E504B01022D00140006000800000021001E06781015000000200000001E00000000000000000000000000C4120000786C2F776F726B7368656574732F62696E617279496E646578312E62696E504B01022D00140006000800000021004B7C9F083E01000051020000110000000000000000000000000015130000646F6350726F70732F636F72652E786D6C504B01022D001400
|
||||
m.lcFileBinary = m.lcFileBinary + 0h06000800000021006F7E771280010000FE02000010000000000000000000000000008A150000646F6350726F70732F6170702E786D6C504B0506000000000B000B00DB020000401800000000
|
||||
CASE m.lcExcelFileExtension = "XLSM"
|
||||
m.lcFileBinary = 0h504B03041400060008000000210038088E4F60010000F20300001300DB015B436F6E74656E745F54797065735D2E786D6C20A2D70128A00002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000000000000000000000A4934D6EC2301085F7957A87C8DB2A31745155158105A5CB96053D80B127C4C27FF2181A6EDF495290401481D838B2A279DFBC37E3D1A4B126DB4244ED5DC986C58065E0A457DAAD4AF6BDF8C85F59864938258C7750B21D209B8C1F1F468B5D00CCA8DA61C9EA94C21BE7286BB0020B1FC0D19FCA472B125DE38A0721D76205FC793078E1D2BB042EE5A9D560E3D1173510B5826C2E62FA149638BC313C911AF4E7B0203D964DFBC2965D321182D15224EA9C6F9D3AA1E6BEAAB404E5E5C612ABE8C49E5A15FE2F10D3CE00DE8DC2104128AC019235452FBA27BF4325362665B38612E8438F60F0366B7F611654D9D9C7
|
||||
m.lcFileBinary = m.lcFileBinary + 0h5A07BC40B89CDDE54C7E7C5C2FBD5F5F918AC51C1A0964B9B55E5821A39F39B134A0E8A2DDBEC373E3A639CDA30FC869AA57A08E37EC74D6D086AB40E5812421260D8774CEB169D55A975DD7C8BBCFFDFB76BC0407FDAB32903EC2ED21ECB7A2AD3EE39C772F76FC0B0000FFFF0300504B030414000600080000002100B5553023F50000004C0200000B00CE015F72656C732F2E72656C7320A2CA0128A000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C92CF4EC3300CC6EF48BC43E4FBEA6E4808A1A5BB4C48BB21541EC024EE1FB58DA32440F7F68403824A63DBD1F6E7CF3F5BDEEEE669541F1C622F4EC3BA2841B133627BD76A78AD9F560FA06222676914C71A8E1C6157DDDE6C5F78A4949B62D7FBA8B28B8B1ABA94FC2362341D4F140BF1EC72A5913051CA6168D19319A865DC94E53D86BF1E502D3CD5C16A08077B07AA3EFA3CF9B2
|
||||
m.lcFileBinary = m.lcFileBinary + 0hB7344D6F782FE67D62974E8C409E133BCB76E543660BA9CFDBA89A42CB498315F39CD311C9FB2263039E26DA5C4FF4FFB63871224B89D048E0F33CDF8A7340EBEB812E9F68A9F8BDCE3CE2A784E14D64F861C1C50F545F000000FFFF0300504B0304140006000800000021008D87DA70E00000002D0200001A000801786C2F5F72656C732F776F726B626F6F6B2E786D6C2E72656C7320A2040128A0000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AC91CB6AC3301045F785FE83987D3D760AA594C8D99442B6C5FD00218F1FC496846692D67F5FE182DD404836D908AE06DD73246D773FE3A04E14B9F74E4391E5A0C8595FF7AED5F0557D3CBD826231AE368377A46122865DF9F8B0FDA4C1483A
|
||||
m.lcFileBinary = m.lcFileBinary + 0hC45D1F58A516C71A3A91F086C8B6A3D170E603B934697C1C8DA4185B0CC61E4C4BB8C9F3178CFF3BA03CEB54FB5A43DCD7CFA0AA2924F2ED6EDF34BDA5776F8F2339B98040966948175095892D8986BF9C2547C0CBF8CD3DF1929E8556FA1C715E8B6B0EC53D1DBE7D3C704724ABC7B2C5384F16193CFBE4F2170000FFFF0300504B030414000600080000002100A460FAFF52010000270200000F000000786C2F776F726B626F6F6B2E786D6C8C915D6FC2201486EF97EC3F10EE272DA9CE185B93655BE6CD6232A7D7AC9C5A228506A8D57FBF534CE776B72BCE073CE7BC2FCBD5B9D1E404CE2B6B729A4E124AC094562A73C8E9E7F6F5614E890FC248A1
|
||||
m.lcFileBinary = m.lcFileBinary + 0hAD819C5EC0D355717FB7ECAD3B7E597B2408303EA77508ED82315FD6D0083FB12D18EC54D6352260EA0ECCB70E84F435406834E34932638D50865E090BF71F86AD2A55C2B32DBB064CB8421C6811707D5FABD6D36259290DBBAB2222DAF65D34B8F75953A2850F2F52059039CD30B53DFC29B8AE7DEA941EBAD3644A59F12372E3085203B88D5327515ED0294A2454A2D3618B82C77958E719E7B3E1ED60CE4E41EF6F982125E7BD32D2F639E5199A7D19B31427923EB6F64A861A51D9FC567B0375A8434EE7499A0C74F60B1F2DC531F12426EAFD186CC625636D8D9230760B85815BCB3412C667A5D0250A1C8E78914F1F7954CFC63F2EBE010000FFFF03
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00504B030414000600080000002100A083C4AEA3010000640300000D000000786C2F7374796C65732E786D6CA453C16ADC3010BD17F20F42F746BB0B0D6DB19D436121909440B6D0AB6CC95EC16864A4F1B2EED767643BDEDD530EBD584F4F336F9E66E4E2F1EC419C6C4C2E6029B7F71B292C36C138EC4AF9E7B0FFFA5D8A441A8D8680B694A34DF2B1BAFB52241AC1BE1DAD25C112984A7924EA7F2A959AA3F53ADD87DE229FB4217A4DBC8D9D4A7DB4DAA49CE441ED369B07E5B54359156D404AA2090312BB5888AA48FFC44903335BA9AAA20910A2209667231383DADB39E29706574797C35AED1D8C33BDCBC4E46889F30E43CCA4CA25972571920358
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0DECB20126AAA2D74436E29E3762C187B1E7F2C8DD9865A6B84FA2BBA8C7EDEEDB55829A0A56451DA2E1EE5F5F7DA6AA026C4B6C34BAEE98570A3D7FEB40143C03E37417500343F591B100BE4E6301DEF284FEB637DAE756E0E0F79E9E4C2979D6B9091F902FB2C0596FDE64FD6BB559FBBF65C5B9BDD567C52BDB37A6D7F222CFBB94BFF39302B94A887A70400E6F05A7EBB3A6395F5AB0C913205DF3CBCDCD59AB70278C6DF50074580F4B79C12FD6B8C1FF58A35EDD29D02451CA0B7ECE93DA3E4C534EEBEF51BD030000FFFF0300504B030414000600080000002100E9A625B882060000531B000013000000786C2F7468656D652F7468656D65312E78
|
||||
m.lcFileBinary = m.lcFileBinary + 0h6D6CEC594F6FDB3614BF0FD87720746F6D27B61B07758AD8B19BAD4D1BC46E871E6999965853A240D2497D1BDAE38001C3BA619701BBED306C2BD002BB749F265B87AD03FA15F6484AB218CB4BD2061BD6D58744227F7CFFDFE32375F5DA8388A1432224E571DBAB5DAE7A88C43E1FD338687B7786FD4B1B1E920AC763CC784CDADE9C48EFDAD6FBEF5DC59B2A241141B03E969BB8ED854A259B958AF46118CBCB3C2131CC4DB888B082571154C6021F01DD8855D6AAD56625C234F6508C23207B7B32A13E41434DD2DBCA88F718BCC64AEA019F8981264D9C15063B9ED63442CE659709748859DB033E637E34240F948718960A26DA5ED5FCBCCAD6D50ADE
|
||||
m.lcFileBinary = m.lcFileBinary + 0h4C1731B5626D615DDFFCD275E982F174CDF014C128675AEBD75B577672FA06C0D432AED7EB757BB59C9E0160DF074DAD2C459AF5FE46AD93D12C80ECE332ED6EB551ADBBF802FDF525995B9D4EA7D14A65B1440DC83ED697F01BD5667D7BCDC11B90C53796F0F5CE76B7DB74F00664F1CD257CFF4AAB5977F10614321A4F97D0DAA1FD7E4A3D874C38DB2D856F007CA39AC2172888863CBA348B098FD5AA588BF07D2EFA00D04086158D919A2764827D88E22E8E468262CD006F125C98B143BE5C1AD2BC90F4054D54DBFB30C190110B7AAF9E7FFFEAF953F4EAF993E387CF8E1FFE74FCE8D1F1C31F2D2D67E12E8E83E2C297DF7EF6E7D71FA33F9E7EF3F2
|
||||
m.lcFileBinary = m.lcFileBinary + 0hF117E57859C4FFFAC327BFFCFC793910326821D18B2F9FFCF6ECC98BAF3EFDFDBBC725F06D814745F8904644A25BE4081DF0087433867125272371BE15C3105367050E817609E99E0A1DE0AD396665B80E718D775740F128035E9FDD77641D8462A66809E71B61E400F738671D2E4A0D7043F32A5878388B8372E66256C41D607C58C6BB8B63C7B5BD590255330B4AC7F6DD903862EE331C2B1C909828A4E7F8949012EDEE51EAD8758FFA824B3E51E81E451D4C4B4D32A4232790168B7669047E9997E90CAE766CB3771775382BD37A871CBA484808CC4A841F12E698F13A9E291C95911CE288150D7E13ABB04CC8C15CF8455C4F2AF074401847BD3191B2
|
||||
m.lcFileBinary = m.lcFileBinary + 0h6CCD6D01FA169C7E0343BD2A75FB1E9B472E52283A2DA37913735E44EEF06937C45152861DD0382C623F905308518CF6B92A83EF713743F43BF801C72BDD7D9712C7DDA717823B3470445A04889E9909ED4B28D44EFD8D68FC77C59851A8C63606DE15E3B6B70D5B53594AEC9E28C1AB70FFC1C2BB8367F13E81585FDE78DED5DD7775D77BEBEBEEAA5C3E6BB55D1458A8BDBA79B07DB1E992A3954DF28432365073466E4AD3274BD82CC67D18D4EBCC0191E487A62484C7B4B83BB84060B30609AE3EA22A1C8438811EBBE66922814C490712255CC2D9CE0C97D2D678E8D3953D1936F499C1D60389D51E1FDBE1753D9C1D0D723266CB09CCF93363B4AE09
|
||||
m.lcFileBinary = m.lcFileBinary + 0h9C95D9FA959428A8FD3ACC6A5AA83373AB19D14CA973B8E52A830F975583C1DC9AD08520E85DC0CA4D38A26BD67036C18C8CB5DDED069CB9C578E1225D24433C26A98FB4DECB3EAA192765B1622E0320764A7CA4CF79A758ADC0ADA5C9BE01B7B338A9C8AEBE825DE6BD37F15216C10B2FE9BC3D918E2C2E26278BD151DB6B35D61A1EF271D2F62670AC85C72801AF4BDDF86116C0DD90AF840DFB5393D964F9C29BAD4C3137096A705361EDBEA4B053071221D50E96A10D0D339586008B35272BFF5A03CC7A510AD8487F0D29D6372018FE3529C08EAE6BC964427C5574766144DBCEBEA6A594CF141183707C84466C260E30B85F872AE833A6126E274C45
|
||||
m.lcFileBinary = m.lcFileBinary + 0hD02F7095A6AD6DA6DCE29C265DF102CBE0EC38664988D372AB5334CB640B37799CCB60DE0AE2816EA5B21BE5CEAF8A49F90B52A518C6FF3355F47E02D705EB63ED011F6E7205463A5FDB1E172AE450859290FA7D018D83A91D102D701D0BD31054709F6CFE0B72A8FFDB9CB3344C5AC3A94F1DD000090AFB910A0521FB50964CF49D42AC96EE5D96244B0999882A882B132BF6881C1236D435B0A9F7760F8510EAA69AA465C0E04EC69FFB9E66D028D04D4E31DF9C1A92EFBD3607FEE9CEC7263328E5D661D3D064F6CF452CD955ED7AB33CDB7B8B8AE889459B55CFB2029815B682569AF6AF29C239B75A5BB196345E6B64C28117973586C1BC214AE0D207
|
||||
m.lcFileBinary = m.lcFileBinary + 0hE93FB0FF51E133FB71426FA8437E00B515C1B7064D0CC206A2FA926D3C902E907670048D931DB4C1A44959D3A6AD93B65AB6595F70A79BF33D616C2DD959FC7D4E63E7CD99CBCEC9C58B34766A61C7D6766CA5A9C1B32753148626D941C638C67CD52A7E78E2A3FBE0E81DB8E29F31254D30C1672581A1F51C983C80E4B71CCDD2ADBF000000FFFF0300504B030414000600080000002100075F38D31E010000C701000018000000786C2F776F726B7368656574732F7368656574312E786D6C8C514D6BC3300CBD0FF61F8CEE8BD38D6EA324298352B6C360ECEBEE2472626A5BC156D7EDDFCF496819F4B29B3EDE7BD2938AF5B7B3E20B4334E44B586439
|
||||
m.lcFileBinary = m.lcFileBinary + 0h08F40DB5C677257CBC6FAFEE414456BE55963C96F08311D6D5E54571A0B08B3D228BA4E063093DF3B09232363D3A15331AD0A78EA6E014A73474320E01553B919C95D7797E2B9D321E668555F88F06696D1ADC50B377E87916096815A7FD636F860855D19AD41B0D8980BA848705C8AA98C67E1A3CC43FB16055BFA1C586B14DEE418CAE6AA2DD087C4AA57CA4CA33EE7672F512448B5AED2DBFD2E1114DD77312599EA66D14AB441F5487CF2A74C6476151274C9EDD8108337E8A9986A9BA04511333B963D6A783613A4C9EDD80D0447C4CC6B54E2FA87E010000FFFF0300504B0304140006000800000021000ACFE8CF3F0100005102000011000801646F
|
||||
m.lcFileBinary = m.lcFileBinary + 0h6350726F70732F636F72652E786D6C20A2040128A0000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000000000000000000000000000000000000000007C92CB6AC3301045F785FE83D1DE969C904785ED405BB26AA0509794EE8434494CAD07925A277F5FD94E5C0742411BCDBD73E66A50B63ACA3AFA01EB2AAD7294260445A0B81695DAE7E8BD5CC74B1439CF9460B55690A31338B42AEEEF326E28D7165EAD36607D052E0A24E52837393A786F28C68E1F40329704870AE24E5BC97CB8DA3D368C7FB13DE00921732CC133C13CC32D303603119D91820F48F36DEB0E2038861A2428EF709AA4F8CFEBC14A77B3A153464E59F993096F3AC71DB305EFC5C17D74D5606C9A2669A65D8C903FC51F9B97B7EEA971A5DA5D7140452638E51698D7B6C8F0
|
||||
m.lcFileBinary = m.lcFileBinary + 0hF812165733E73761C7BB0AC4E329E8376A8277717B08882804A07DDC8BB29D3E3D976B54B43B8CC9439CCE4B4268773EDB9157FD6DA0BE20CF83FF272E5B2259941342A70B3A9B8D8817409FFBFA1314BF000000FFFF0300504B0304140006000800000021006F7E771280010000FE02000010000801646F6350726F70732F6170702E786D6C20A2040128A000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C92416BE3301085EF85FD0F46F7464E589625C82AA569E9614B0349B367551EC7228A64345393F4D7776C93C6D9EDA93A8DE63D9E3E8DA46E0E7B9FB590D0C55088E9241719041B4B17B68578593F5CFF16199209A5F13140218E80E246FFB852CB141B48E400338E0858889AA8994B
|
||||
m.lcFileBinary = m.lcFileBinary + 0h89B686BDC109CB81952AA6BD21DEA6AD8C55E52C2CA27DDB432039CBF35F120E04A184F2BAF90C1443E2BCA5EF8696D1767CB8591F1B06D6EAB669BCB386F896FAC9D914315694DD1F2C7825C7A262BA15D8B7E4E8A87325C75BB5B2C6C31D07EBCA780425CF0DF508A61BDAD2B8845AB5346FC1524C19BA771EDB4C64AF06A1C329446B92338118ABB30D9BBEF60D52D27F63DA610D40A8241B86665F8EBDE3DAFDD4D3DEC0C5A5B10B184058B8445C3BF280CFD5D224FA82783A26EE1906DE0167D5F10D678EF9FA2BF349FF64FF7161872FCD3A2E0CC16976974DB5AA4D8292C77DD2CF0DF5C8634BBE0BB9AB4DD84279F2FC2F742FBD19BEB39ECE2639
|
||||
m.lcFileBinary = m.lcFileBinary + 0hAFFE814F3D25CF1F577F000000FFFF0300504B01022D001400060008000000210038088E4F60010000F20300001300000000000000000000000000000000005B436F6E74656E745F54797065735D2E786D6C504B01022D0014000600080000002100B5553023F50000004C0200000B000000000000000000000000006C0300005F72656C732F2E72656C73504B01022D00140006000800000021008D87DA70E00000002D0200001A0000000000000000000000000058060000786C2F5F72656C732F776F726B626F6F6B2E786D6C2E72656C73504B01022D0014000600080000002100A460FAFF52010000270200000F000000000000000000000000007808
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000786C2F776F726B626F6F6B2E786D6C504B01022D0014000600080000002100A083C4AEA3010000640300000D00000000000000000000000000F7090000786C2F7374796C65732E786D6C504B01022D0014000600080000002100E9A625B882060000531B00001300000000000000000000000000C50B0000786C2F7468656D652F7468656D65312E786D6C504B01022D0014000600080000002100075F38D31E010000C7010000180000000000000000000000000078120000786C2F776F726B7368656574732F7368656574312E786D6C504B01022D00140006000800000021000ACFE8CF3F010000510200001100000000000000000000000000CC13
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000646F6350726F70732F636F72652E786D6C504B01022D00140006000800000021006F7E771280010000FE020000100000000000000000000000000042160000646F6350726F70732F6170702E786D6C504B050600000000090009003E020000F81800000000
|
||||
OTHERWISE && XLS
|
||||
m.lcFileBinary = 0hD0CF11E0A1B11AE1000000000000000000000000000000003E000300FEFF0900060000000000000000000000010000000100000000000000001000001A00000001000000FEFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFFFFFDFFFFFF1C000000030000000400000005000000060000000700000008000000090000000A0000000B0000000C0000000D0000000E0000000F00000010000000110000001200000013000000140000001500000016000000170000001800000019000000FEFFFFFFFEFFFFFF1D000000FEFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFFFFFFFF52006F006F007400200045006E00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500FFFFFFFFFFFFFFFF020000002008020000000000C00000000000004600000000000000000000000030C843AA2911C9011B000000800200000000000057006F0072006B0062006F006F006B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001200020104000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000002000000892F00
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000500530075006D006D0061007200790049006E0066006F0072006D006100740069006F006E000000000000000000000000000000000000000000000000000000280002010100000003000000FFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000C800000000000000050044006F00630075006D0065006E007400530075006D006D0061007200790049006E0066006F0072006D006100740069006F006E000000000000000000000038000201FFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000000000000000000000000000004000000E000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000000908100000060500A91FCD07C100010006040000E1000200B004C10002000000E20000005C0070000200002020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202042000200B004610102000000C00100003D01020001009C0002001000190002000000120002000000130002000000AF0102000000BC01020000003D001200F0006900D5394A1F380000000000010058024000020000008D00020000002200020000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000E0002000100B70102000000DA000200000031001E00DC000000080090010000000200AA0701430061006C00690062007200690031001E00DC000000080090010000000200AA0701430061006C00690062007200690031001E00DC000000080090010000000200AA0701430061006C00690062007200690031001E00DC000000080090010000000200AA0701430061006C00690062007200690031001E00DC000000080090010000000200AA0701430061006C00690062007200690031001E00680101003800BC020000000200AA0701430061006D00620072006900610031001E002C0101003800BC020000000200AA0701430061006C00690062007200
|
||||
m.lcFileBinary = m.lcFileBinary + 0h690031001E00040101003800BC020000000200AA0701430061006C00690062007200690031001E00DC0001003800BC020000000200AA0701430061006C00690062007200690031001E00DC000000110090010000000200AA0701430061006C00690062007200690031001E00DC000000140090010000000200AA0701430061006C00690062007200690031001E00DC0000003C0090010000000200AA0701430061006C00690062007200690031001E00DC0000003E0090010000000200AA0701430061006C00690062007200690031001E00DC0001003F00BC020000000200AA0701430061006C00690062007200690031001E00DC0001003400BC02000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0200AA0701430061006C00690062007200690031001E00DC000000340090010000000200AA0701430061006C00690062007200690031001E00DC0001000900BC020000000200AA0701430061006C00690062007200690031001E00DC0000000A0090010000000200AA0701430061006C00690062007200690031001E00DC000200170090010000000200AA0701430061006C00690062007200690031001E00DC0001000800BC020000000200AA0701430061006C00690062007200690031001E00DC000000090090010000000200AA0701430061006C0069006200720069001E041C000500170000222422232C2323305F293B5C28222422232C2323305C29
|
||||
m.lcFileBinary = m.lcFileBinary + 0h1E04210006001C0000222422232C2323305F293B5B5265645D5C28222422232C2323305C291E04220007001D0000222422232C2323302E30305F293B5C28222422232C2323302E30305C291E0427000800220000222422232C2323302E30305F293B5B5265645D5C28222422232C2323302E30305C291E0437002A003200005F282224222A20232C2323305F293B5F282224222A205C28232C2323305C293B5F282224222A20222D225F293B5F28405F291E042E0029002900005F282A20232C2323305F293B5F282A205C28232C2323305C293B5F282A20222D225F293B5F28405F291E043F002C003A00005F282224222A20232C2323302E30305F293B5F
|
||||
m.lcFileBinary = m.lcFileBinary + 0h282224222A205C28232C2323302E30305C293B5F282224222A20222D223F3F5F293B5F28405F291E0436002B003100005F282A20232C2323302E30305F293B5F282A205C28232C2323302E30305C293B5F282A20222D223F3F5F293B5F28405F29E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF20000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E000140000000000F5FF200000000000000000000000C020E0001400000000000100200000000000000000000002C020E000140005000000F5FF200000B400000000000000049F20E000140005
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000F5FF200000B40000000000000004AD20E000140005000000F5FF200000B40000000000000004AA20E000140005000000F5FF200000B40000000000000004AE20E000140005000000F5FF200000B400000000000000049B20E000140005000000F5FF200000B40000000000000004AF20E000140005000000F5FF200000B40000000000000004AC20E000140005000000F5FF200000B400000000000000049D20E000140005000000F5FF200000B400000000000000048B20E000140005000000F5FF200000B40000000000000004AE20E000140005000000F5FF200000B40000000000000004AC20E000140005000000F5FF200000B4000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0004B320E000140015000000F5FF200000B400000000000000049E20E000140015000000F5FF200000B400000000000000049D20E000140015000000F5FF200000B400000000000000048B20E000140015000000F5FF200000B40000000000000004A420E000140015000000F5FF200000B40000000000000004B120E000140015000000F5FF200000B40000000000000004B420E000140015000000F5FF200000B40000000000000004BE20E000140015000000F5FF200000B400000000000000048A20E000140015000000F5FF200000B40000000000000004B920E000140015000000F5FF200000B40000000000000004A420E000140015000000F5FF20
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000B40000000000000004B120E000140015000000F5FF200000B40000000000000004B520E00014000B000000F5FF200000B40000000000000004AD20E00014000F000000F5FF200000941111970B970B00049620E000140011000000F5FF200000946666BF1FBF1F0004B720E000140005002B00F5FF200000F80000000000000000C020E000140005002900F5FF200000F80000000000000000C020E000140005002C00F5FF200000F80000000000000000C020E000140005002A00F5FF200000F80000000000000000C020E000140013000000F5FF200000F40000000000000000C020E00014000A000000F5FF200000B40000000000000004AA20E000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h140007000000F5FF200000D400500000001F0000C020E000140008000000F5FF200000D400500000000B0000C020E000140009000000F5FF200000D400200000000F0000C020E000140009000000F5FF200000F40000000000000000C020E00014000D000000F5FF200000941111970B970B0004AF20E000140010000000F5FF200000D400600000001A0000C020E00014000C000000F5FF200000B40000000000000004AB20E000140005000000F5FF2000009C1111160B160B00049A20E00014000E000000F5FF200000941111BF1FBF1F00049620E000140005000900F5FF200000F80000000000000000C020E000140006000000F5FF200000F4000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000C020E000140014000000F5FF200000D4006100003E1F0000C020E000140012000000F5FF200000F40000000000000000C0207C0814007C080000000000000000000000003E00DED9EE787D082D007D080000000000000000000000000000000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000100000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000200000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000300000002000D00140003
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000400000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000500000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000600000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000700000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000800000002000D001400030000000100000030305C
|
||||
m.lcFileBinary = m.lcFileBinary + 0h293B5F282A0E000500027D082D007D080000000000000000000000000900000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000A00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000B00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000C00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000D00000002000D001400030000000100000030305C293B5F282A0E00050002
|
||||
m.lcFileBinary = m.lcFileBinary + 0h7D082D007D080000000000000000000000000E00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000000F00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000002B00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000002C00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000002D00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D0800000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000000002E00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000003A00000002000D001400030000000100000030305C293B5F282A0E000500027D082D007D080000000000000000000000003B00000002000D001400030000000300000030305C293B5F282A0E000500017D0841007D080000000000000000000000003100000003000D001400030000000300000030305C293B5F282A0E000500020800140003000000040000003B5F28405F2920207D0841007D080000000000000000000000003200000003000D001400030000000300000030305C293B5F282A0E00050002
|
||||
m.lcFileBinary = m.lcFileBinary + 0h080014000300FF3F040000003B5F28405F2920207D0841007D080000000000000000000000003300000003000D001400030000000300000030305C293B5F282A0E000500020800140003003233040000003B5F28405F2920207D082D007D080000000000000000000000003400000002000D001400030000000300000030305C293B5F282A0E000500027D0841007D080000000000000000000000003000000003000D00140002000000006100FF30305C293B5F282A0E000500020400140002000000C6EFCEFF3B5F28405F2920207D0841007D080000000000000000000000002800000003000D001400020000009C0006FF30305C293B5F282A0E000500
|
||||
m.lcFileBinary = m.lcFileBinary + 0h020400140002000000FFC7CEFF3B5F28405F2920207D0841007D080000000000000000000000003700000003000D001400020000009C6500FF30305C293B5F282A0E000500020400140002000000FFEB9CFF3B5F28405F2920207D0891007D080000000000000000000000003500000007000D001400020000003F3F76FF30305C293B5F282A0E000500020400140002000000FFCC99FF3B5F28405F29202007001400020000007F7F7FFF202020202020202008001400020000007F7F7FFF202020202020202009001400020000007F7F7FFF00000000000000000A001400020000007F7F7FFF00000000000000007D0891007D0800000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00003900000007000D001400020000003F3F3FFF30305C293B5F282A0E000500020400140002000000F2F2F2FF3B5F28405F29202007001400020000003F3F3FFF202020202020202008001400020000003F3F3FFF202020202020202009001400020000003F3F3FFF00000000000000000A001400020000003F3F3FFF00000000000000007D0891007D080000000000000000000000002900000007000D00140002000000FA7D00FF30305C293B5F282A0E000500020400140002000000F2F2F2FF3B5F28405F29202007001400020000007F7F7FFF202020202020202008001400020000007F7F7FFF202020202020202009001400020000007F7F7FFF00
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000A001400020000007F7F7FFF00000000000000007D0841007D080000000000000000000000003600000003000D00140002000000FA7D00FF30305C293B5F282A0E000500020800140002000000FF8001FF3B5F28405F2920207D0891007D080000000000000000000000002A00000007000D001400030000000000000030305C293B5F282A0E000500020400140002000000A5A5A5FF3B5F28405F29202007001400020000003F3F3FFF202020202020202008001400020000003F3F3FFF202020202020202009001400020000003F3F3FFF00000000000000000A001400020000003F3F3FFF00000000000000007D082D007D0800000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000000003D00000002000D00140002000000FF0000FF30305C293B5F282A0E000500027D0891007D080000000000000000000000003800000007000D001400030000000100000030305C293B5F282A0E000500020400140002000000FFFFCCFF3B5F28405F2920200700140002000000B2B2B2FF20202020202020200800140002000000B2B2B2FF20202020202020200900140002000000B2B2B2FF00000000000000000A00140002000000B2B2B2FF00000000000000007D082D007D080000000000000000000000002F00000002000D001400020000007F7F7FFF30305C293B5F282A0E000500027D0855007D08000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h3C00000004000D001400030000000100000030305C293B5F282A0E000500020700140003000000040000003B5F28405F29202008001400030000000400000020202020202020207D0841007D080000000000000000000000002200000003000D001400030000000000000030305C293B5F282A0E000500020400140003000000040000003B5F28405F2920207D0841007D080000000000000000000000001000000003000D001400030000000100000030305C293B5F282A0E000500020400140003006566040000003B5F28405F2920207D0841007D080000000000000000000000001600000003000D001400030000000100000030305C293B5F282A0E00
|
||||
m.lcFileBinary = m.lcFileBinary + 0h050002040014000300CC4C040000003B5F28405F2920207D0841007D080000000000000000000000001C00000003000D001400030000000000000030305C293B5F282A0E000500020400140003003233040000003B5F28405F2920207D0841007D080000000000000000000000002300000003000D001400030000000000000030305C293B5F282A0E000500020400140003000000050000003B5F28405F2920207D0841007D080000000000000000000000001100000003000D001400030000000100000030305C293B5F282A0E000500020400140003006566050000003B5F28405F2920207D0841007D080000000000000000000000001700000003000D
|
||||
m.lcFileBinary = m.lcFileBinary + 0h001400030000000100000030305C293B5F282A0E00050002040014000300CC4C050000003B5F28405F2920207D0841007D080000000000000000000000001D00000003000D001400030000000000000030305C293B5F282A0E000500020400140003003233050000003B5F28405F2920207D0841007D080000000000000000000000002400000003000D001400030000000000000030305C293B5F282A0E000500020400140003000000060000003B5F28405F2920207D0841007D080000000000000000000000001200000003000D001400030000000100000030305C293B5F282A0E000500020400140003006566060000003B5F28405F2920207D084100
|
||||
m.lcFileBinary = m.lcFileBinary + 0h7D080000000000000000000000001800000003000D001400030000000100000030305C293B5F282A0E00050002040014000300CC4C060000003B5F28405F2920207D0841007D080000000000000000000000001E00000003000D001400030000000000000030305C293B5F282A0E000500020400140003003233060000003B5F28405F2920207D0841007D080000000000000000000000002500000003000D001400030000000000000030305C293B5F282A0E000500020400140003000000070000003B5F28405F2920207D0841007D080000000000000000000000001300000003000D001400030000000100000030305C293B5F282A0E00050002040014
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0003006566070000003B5F28405F2920207D0841007D080000000000000000000000001900000003000D001400030000000100000030305C293B5F282A0E00050002040014000300CC4C070000003B5F28405F2920207D0841007D080000000000000000000000001F00000003000D001400030000000000000030305C293B5F282A0E000500020400140003003233070000003B5F28405F2920207D0841007D080000000000000000000000002600000003000D001400030000000000000030305C293B5F282A0E000500020400140003000000080000003B5F28405F2920207D0841007D080000000000000000000000001400000003000D001400030000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000100000030305C293B5F282A0E000500020400140003006566080000003B5F28405F2920207D0841007D080000000000000000000000001A00000003000D001400030000000100000030305C293B5F282A0E00050002040014000300CC4C080000003B5F28405F2920207D0841007D080000000000000000000000002000000003000D001400030000000000000030305C293B5F282A0E000500020400140003003233080000003B5F28405F2920207D0841007D080000000000000000000000002700000003000D001400030000000000000030305C293B5F282A0E000500020400140003000000090000003B5F28405F2920207D0841007D0800000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000000001500000003000D001400030000000100000030305C293B5F282A0E000500020400140003006566090000003B5F28405F2920207D0841007D080000000000000000000000001B00000003000D001400030000000100000030305C293B5F282A0E00050002040014000300CC4C090000003B5F28405F2920207D0841007D080000000000000000000000002100000003000D001400030000000000000030305C293B5F282A0E000500020400140003003233090000003B5F28405F2920209302120010000D0000323025202D20416363656E743192084D0092080000000000000000000001041EFF0D0032003000250020002D0020004100
|
||||
m.lcFileBinary = m.lcFileBinary + 0h6300630065006E00740031000000030001000C0007046566DBE5F1FF05000C0007010000000000FF25000500029302120011000D0000323025202D20416363656E743292084D00920800000000000000000000010422FF0D0032003000250020002D00200041006300630065006E00740032000000030001000C0007056566F2DDDCFF05000C0007010000000000FF25000500029302120012000D0000323025202D20416363656E743392084D00920800000000000000000000010426FF0D0032003000250020002D00200041006300630065006E00740033000000030001000C0007066566EAF1DDFF05000C0007010000000000FF250005000293021200
|
||||
m.lcFileBinary = m.lcFileBinary + 0h13000D0000323025202D20416363656E743492084D0092080000000000000000000001042AFF0D0032003000250020002D00200041006300630065006E00740034000000030001000C0007076566E5E0ECFF05000C0007010000000000FF25000500029302120014000D0000323025202D20416363656E743592084D0092080000000000000000000001042EFF0D0032003000250020002D00200041006300630065006E00740035000000030001000C0007086566DBEEF3FF05000C0007010000000000FF25000500029302120015000D0000323025202D20416363656E743692084D00920800000000000000000000010432FF0D0032003000250020002D
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00200041006300630065006E00740036000000030001000C0007096566FDE9D9FF05000C0007010000000000FF25000500029302120016000D0000343025202D20416363656E743192084D0092080000000000000000000001041FFF0D0034003000250020002D00200041006300630065006E00740031000000030001000C000704CC4CB8CCE4FF05000C0007010000000000FF25000500029302120017000D0000343025202D20416363656E743292084D00920800000000000000000000010423FF0D0034003000250020002D00200041006300630065006E00740032000000030001000C000705CC4CE6B9B8FF05000C0007010000000000FF25000500
|
||||
m.lcFileBinary = m.lcFileBinary + 0h029302120018000D0000343025202D20416363656E743392084D00920800000000000000000000010427FF0D0034003000250020002D00200041006300630065006E00740033000000030001000C000706CC4CD7E4BCFF05000C0007010000000000FF25000500029302120019000D0000343025202D20416363656E743492084D0092080000000000000000000001042BFF0D0034003000250020002D00200041006300630065006E00740034000000030001000C000707CC4CCCC0DAFF05000C0007010000000000FF2500050002930212001A000D0000343025202D20416363656E743592084D0092080000000000000000000001042FFF0D0034003000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h250020002D00200041006300630065006E00740035000000030001000C000708CC4CB6DDE8FF05000C0007010000000000FF2500050002930212001B000D0000343025202D20416363656E743692084D00920800000000000000000000010433FF0D0034003000250020002D00200041006300630065006E00740036000000030001000C000709CC4CFCD5B4FF05000C0007010000000000FF2500050002930212001C000D0000363025202D20416363656E743192084D00920800000000000000000000010420FF0D0036003000250020002D00200041006300630065006E00740031000000030001000C000704323395B3D7FF05000C0007000000FFFFFF
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFF2500050002930212001D000D0000363025202D20416363656E743292084D00920800000000000000000000010424FF0D0036003000250020002D00200041006300630065006E00740032000000030001000C0007053233D99795FF05000C0007000000FFFFFFFF2500050002930212001E000D0000363025202D20416363656E743392084D00920800000000000000000000010428FF0D0036003000250020002D00200041006300630065006E00740033000000030001000C0007063233C2D69AFF05000C0007000000FFFFFFFF2500050002930212001F000D0000363025202D20416363656E743492084D0092080000000000000000000001042CFF0D
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0036003000250020002D00200041006300630065006E00740034000000030001000C0007073233B2A1C7FF05000C0007000000FFFFFFFF25000500029302120020000D0000363025202D20416363656E743592084D00920800000000000000000000010430FF0D0036003000250020002D00200041006300630065006E00740035000000030001000C000708323393CDDDFF05000C0007000000FFFFFFFF25000500029302120021000D0000363025202D20416363656E743692084D00920800000000000000000000010434FF0D0036003000250020002D00200041006300630065006E00740036000000030001000C0007093233FAC090FF05000C000700
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000FFFFFFFF250005000293020C002200070000416363656E74319208410092080000000000000000000001041DFF070041006300630065006E00740031000000030001000C00070400004F81BDFF05000C0007000000FFFFFFFF250005000293020C002300070000416363656E743292084100920800000000000000000000010421FF070041006300630065006E00740032000000030001000C0007050000C0504DFF05000C0007000000FFFFFFFF250005000293020C002400070000416363656E743392084100920800000000000000000000010425FF070041006300630065006E00740033000000030001000C00070600009BBB59FF05000C000700
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000FFFFFFFF250005000293020C002500070000416363656E743492084100920800000000000000000000010429FF070041006300630065006E00740034000000030001000C00070700008064A2FF05000C0007000000FFFFFFFF250005000293020C002600070000416363656E74359208410092080000000000000000000001042DFF070041006300630065006E00740035000000030001000C00070800004BACC6FF05000C0007000000FFFFFFFF250005000293020C002700070000416363656E743692084100920800000000000000000000010431FF070041006300630065006E00740036000000030001000C0007090000F79646FF05000C000700
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000FFFFFFFF25000500029302080028000300004261649208390092080000000000000000000001011BFF03004200610064000000030001000C0005FF0000FFC7CEFF05000C0005FF00009C0006FF25000500029302100029000B000043616C63756C6174696F6E92088100920800000000000000000000010216FF0B00430061006C00630075006C006100740069006F006E000000070001000C0005FF0000F2F2F2FF05000C0005FF0000FA7D00FF250005000206000E0005FF00007F7F7FFF010007000E0005FF00007F7F7FFF010008000E0005FF00007F7F7FFF010009000E0005FF00007F7F7FFF010093020F002A000A0000436865636B2043656C
|
||||
m.lcFileBinary = m.lcFileBinary + 0h6C92087F00920800000000000000000000010217FF0A0043006800650063006B002000430065006C006C000000070001000C0005FF0000A5A5A5FF05000C0007000000FFFFFFFF250005000206000E0005FF00003F3F3FFF060007000E0005FF00003F3F3FFF060008000E0005FF00003F3F3FFF060009000E0005FF00003F3F3FFF0600930204002B8003FF92082000920800000000000000000000010503FF050043006F006D006D00610000000000930204002C8006FF92082800920800000000000000000000010506FF090043006F006D006D00610020005B0030005D0000000000930204002D8004FF92082600920800000000000000000000010504
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFF0800430075007200720065006E006300790000000000930204002E8007FF92082E00920800000000000000000000010507FF0C00430075007200720065006E006300790020005B0030005D0000000000930215002F001000004578706C616E61746F7279205465787492084700920800000000000000000000010235FF10004500780070006C0061006E00610074006F0072007900200054006500780074000000020005000C0005FF00007F7F7FFF2500050002930209003000040000476F6F6492083B0092080000000000000000000001011AFF040047006F006F0064000000030001000C0005FF0000C6EFCEFF05000C0005FF0000006100FF250005
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000293020E00310009000048656164696E67203192084700920800000000000000000000010310FF0900480065006100640069006E006700200031000000030005000C00070300001F497DFF250005000207000E00070400004F81BDFF050093020E00320009000048656164696E67203292084700920800000000000000000000010311FF0900480065006100640069006E006700200032000000030005000C00070300001F497DFF250005000207000E000704FF3FA8C0DEFF050093020E00330009000048656164696E67203392084700920800000000000000000000010312FF0900480065006100640069006E006700200033000000030005000C0007
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0300001F497DFF250005000207000E000704323395B3D7FF020093020E00340009000048656164696E67203492083900920800000000000000000000010313FF0900480065006100640069006E006700200034000000020005000C00070300001F497DFF250005000293020A003500050000496E70757492087500920800000000000000000000010214FF050049006E007000750074000000070001000C0005FF0000FFCC99FF05000C0005FF00003F3F76FF250005000206000E0005FF00007F7F7FFF010007000E0005FF00007F7F7FFF010008000E0005FF00007F7F7FFF010009000E0005FF00007F7F7FFF01009302100036000B00004C696E6B6564
|
||||
m.lcFileBinary = m.lcFileBinary + 0h2043656C6C92084B00920800000000000000000000010218FF0B004C0069006E006B00650064002000430065006C006C000000030005000C0005FF0000FA7D00FF250005000207000E0005FF0000FF8001FF060093020C0037000700004E65757472616C9208410092080000000000000000000001011CFF07004E00650075007400720061006C000000030001000C0005FF0000FFEB9CFF05000C0005FF00009C6500FF250005000293020400008000FF92083300920800000000000000000000010100FF06004E006F0072006D0061006C000000020005000C0007010000000000FF25000500029302090038000400004E6F746592086200920800000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h00000000000001020AFF04004E006F00740065000000050001000C0005FF0000FFFFCCFF06000E0005FF0000B2B2B2FF010007000E0005FF0000B2B2B2FF010008000E0005FF0000B2B2B2FF010009000E0005FF0000B2B2B2FF010093020B0039000600004F757470757492087700920800000000000000000000010215FF06004F00750074007000750074000000070001000C0005FF0000F2F2F2FF05000C0005FF00003F3F3FFF250005000206000E0005FF00003F3F3FFF010007000E0005FF00003F3F3FFF010008000E0005FF00003F3F3FFF010009000E0005FF00003F3F3FFF0100930204003A8005FF9208240092080000000000000000000001
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0505FF0700500065007200630065006E0074000000000093020A003B000500005469746C659208310092080000000000000000000001030FFF05005400690074006C0065000000020005000C00070300001F497DFF250005000193020A003C00050000546F74616C92084D00920800000000000000000000010319FF050054006F00740061006C000000040005000C0007010000000000FF250005000206000E00070400004F81BDFF010007000E00070400004F81BDFF0600930211003D000C00005761726E696E67205465787492083F0092080000000000000000000001020BFF0C005700610072006E0069006E00670020005400650078007400000002
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0005000C0005FF0000FF0000FF25000500028E0858008E080000000000000000000090000000110011005400610062006C0065005300740079006C0065004D0065006400690075006D0039005000690076006F0074005300740079006C0065004C0069006700680074003100360060010200000085000E00032E0000000006005368656574319A0818009A0800000000000000000000010000000000000001000000A3081000A30800000000000000000000000000008C00040001000100C1010800C10100001DEB0100FC0008000000000000000000FF00020008006308160063080000000000000000000016000000040000000200960810009608000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000000042E501009B0810009B0800000000000000000000010000008C0810008C0800000000000000000000000000000A0000000908100000061000A91FCD07C1000100060400000B021000000000000000000000000000152F00000D00020001000C00020064000F000200010011000200000010000800FCA9F1D24D62503F5F00020001002A00020000002B00020000008200020001008000080000000000000000002502040000002C0181000200C104140000001500000083000200000084000200000026000800666666666666E63F27000800666666666666E63F28000800000000000000E83F29000800000000000000E83FA10022000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h2C01010001000100040042E50100333333333333D33F333333333333D33F74009C0826009C0800000000000000000000000000000000000000000000000000003C33000000000000000055000200080000020E0000000000000000000000000000003E021200B606000000004000000000000000000000008B0810008B0800000000000000000000000002001D000F0003000000000000010000000000000067081700670800000000000000000000020001FFFFFFFF034400000A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000200000003000000FEFFFFFF050000000600000007000000FEFFFFFF09000000FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF0000060002000000000000000000000000000000000001000000E0859FF2F94F6810AB9108002B27B3D930000000980000000700000001000000400000000400000048000000080000005400000012000000600000000C000000780000000D00000084000000130000009000000002000000E40400001E00000004000000000000001E00000004000000000000001E000000100000004D6963726F736F667420457863656C004000000000C07C0D23D9C601400000000086FCA92911C90103000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FEFF000006000200000000000000000000000000000000000100000002D5CDD59C2E1B10939708002B2CF9AE30000000B000000008000000010000004800000017000000500000000B000000580000001000000060000000130000006800000016000000700000000D000000780000000C0000008B00000002000000E40400000300000000000C000B000000000000000B000000000000000B000000000000000B000000000000001E1000000100000007000000536865657431000C100000020000001E0000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000B000000576F726B73686565747300030000000100000000000000000000000000000000000000000000000000000000000000000000000000010043006F006D0070004F0062006A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012000200FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000800000072000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0hFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100FEFF030A0000FFFFFFFF2008020000000000C000000000000046260000004D6963726F736F6674204F666669636520457863656C203230303320576F726B736865657400060000004269666638000E000000457863656C2E53686565742E3800F439B271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m.lcFileBinary = m.lcFileBinary + 0h0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
ENDCASE
|
||||
IF !EMPTY(m.lcFileBinary)
|
||||
IF STRTOFILE(m.lcFileBinary, m.tcExcelFile, 0) > 0
|
||||
m.llReturn = .T.
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
RETURN m.llReturn
|
||||
ENDFUNC
|
||||
BIN
clase/GridExtras/gridextrasselect.vct
Normal file
BIN
clase/GridExtras/gridextrasselect.vcx
Normal file
BIN
clase/GridExtras/gridfunctions16.bmp
Normal file
|
After Width: | Height: | Size: 824 B |
BIN
clase/GridExtras/modifica.png
Normal file
|
After Width: | Height: | Size: 690 B |
BIN
clase/GridExtras/nosort12.bmp
Normal file
|
After Width: | Height: | Size: 488 B |
BIN
clase/GridExtras/renunta.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
clase/GridExtras/salveaza.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
clase/GridExtras/sample.PJT
Normal file
BIN
clase/GridExtras/sample.SCT
Normal file
BIN
clase/GridExtras/sample.pjx
Normal file
BIN
clase/GridExtras/sample.scx
Normal file
BIN
clase/GridExtras/search16.bmp
Normal file
|
After Width: | Height: | Size: 824 B |
BIN
clase/GridExtras/showfilters16.bmp
Normal file
|
After Width: | Height: | Size: 824 B |
BIN
clase/GridExtras/sterge.png
Normal file
|
After Width: | Height: | Size: 792 B |
BIN
clase/GridExtras/table_sql_view.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
clase/GridExtras/table_sql_view16.png
Normal file
|
After Width: | Height: | Size: 690 B |