G'day,
Two corrupted reports in two days, time for an R:BASE remedy!
Here is a block (2 to be accurate) of code I have in my programmer app file
that exports one or many forms from one database to text files then allows
you to import them into another database. I am frequently doing this.
***************************************************************************************
I cut some sections out of it prior to posting and have not the time to test it
so please do so on a sample database before using it on your production
database. You may also have to insert an owner name and password if
your database is thusly protected.
***************************************************************************************
I must get around to purchasing Dennis McGrath's archiving utility.
$COMMAND
FrmExp
-- Exports forms
-- Created by Tom Grimshaw 07-03-1998
-- Modification history
-- 15-06-1998 Added check for from database same as to database
-- 03-07-1999 Added call to ConectDT to reset date/time settings
-- 20-10-1999 Added check for database names and passwords
-- 16-01-2000 Changed null setting before and after UNLOAD and RUN
--
SET MESSAGES OFF
SET ERROR MESSAGES ON
DISCONNECT
DIALOG 'YES for BizMan, NO for TomsData:' vPick2 vEndKey YES
IF vPick2 = 'YES' THEN
CONNECT BizMan
SET VAR vDBTo TEXT = 'BizMan'
ELSE
CONNECT TomsData
SET VAR vDBTo TEXT = 'TomsData'
ENDIF
RUN ConectDT IN GlobBlok.apx
CLEAR VAR vChoice,vCount,vLines
SELECT COUNT(sys_Form_name) INTO +
vLines INDICATOR vi1 +
FROM SYS_Forms2
IF vLines = 0 THEN
PAUSE 1 USING 'No Forms in database.' AT CENTER CENTER
RETURN
ENDIF
CHOOSE vChoice +
FROM #VALUES +
FOR sys_Form_name +
FROM SYS_Forms2 +
ORDER BY sys_Form_name +
AT 7,45 +
CHKBOX +
TITLE 'Click the Forms to export then click [OK]' +
CAPTION 'Construction Module' +
LINES .vLines
IF vChoice = '[Esc]' THEN
PAUSE 1 USING 'No items checked.' AT CENTER CENTER
RETURN
ENDIF
SET VAR vCount INTEGER = 1
SET VAR vFrmFile TEXT = NULL
SET VAR vCmd1 TEXT = NULL
SET VAR vCmd2 TEXT = NULL
SET NULL -0-
WHILE #PI > 0.00 THEN
SET VAR vFrmFile TEXT = ('Frm' + (CTXT(.vCount)) + '.Frm')
SET VAR vCmd1 TEXT = ('OUTPUT' & .vFrmFile)
SET VAR vTemp TEXT = (SSUB(.vChoice,.vCount))
IF vTemp IS NULL THEN
BREAK
ENDIF
SET VAR vFrmName TEXT = (SSUB(.vTemp,-1))
SET VAR vCmd2 TEXT = ('UNLOAD DATA for sys_Forms2 where sys_Form_name+
EQ ''' + .vFrmName + '''')
&vCmd1
&vCmd2
OUTPUT SCREEN
SET VAR vCmd1 = NULL
SET VAR vCmd2 = NULL
SET VAR vCount = (.vCount + 1)
ENDWHILE
RUN SetNull IN GlobBlok.apx
DISCONNECT
DIALOG 'YES to export only, NO to export and import:' vExportOnly vEndKey NO
IF vEndKey = '[Esc]' OR vExportOnly = 'YES' THEN
RETURN
ENDIF
IF vExportOnly = 'NO' THEN
DISCONNECT
DIALOG 'YES for BizMan, NO for TomsData:' vPick2 vEndKey YES
IF vPick2 = 'YES' THEN
CONNECT BizMan
SET VAR vDBTo TEXT = 'BizMan'
ELSE
CONNECT TomsData
SET VAR vDBTo TEXT = 'TomsData'
ENDIF
ENDIF
IF vDBFrom = .vDBTo THEN
PAUSE 1 USING 'Cannot copy from and to same database.' AT CENTER CENTER
RETURN
ENDIF
RUN ConectDT IN GlobBlok.apx
SET VAR vCount2 INTEGER = (.vCount + 1)
SET VAR vCount INTEGER = 1
SET VAR vCount3 INTEGER = 1
SET NULL -0-
WHILE vCount3 < .vCount2 THEN
SET VAR vTemp TEXT = (SSUB(.vChoice,.vCount))
IF vTemp IS NULL THEN
BREAK
ENDIF
SET VAR vFrmName TEXT = (SSUB(.vTemp,-1))
SET VAR vCmd3 TEXT = ('DROP Form ''' + .vFrmName + '''')
SET VAR vFrmFile1 TEXT = ('Frm' + (CTXT(.vCount)) + '.Frm')
SET VAR vFrmFile2 TEXT = ('Frm' + (CTXT(.vCount)) + '.LOB')
SET VAR vCmd4 TEXT = ('RUN' & .vFrmFile1)
SET VAR vCmd5 TEXT = ('ERASE' & .vFrmFile1)
SET VAR vCmd6 TEXT = ('ERASE' & .vFrmFile2)
&vCmd3
&vCmd4
&vCmd5
&vCmd6
CLEAR VAR vCmd3,vCmd4,vCmd5,vCmd6
SET VAR vCount = (.vCount + 1)
ENDWHILE
RUN SetNull IN GlobBlok.apx
CLEAR VAR vCount,vTranID,vTemp,vChoice,vFrmFile1,vFrmFile2
RETURN
$COMMAND
RptExp
-- Exports reports
-- Created by Tom Grimshaw 07-03-1998
-- Modification history
-- 07-03-1998
-- 03-07-1999 Added call to ConectDT to reset date/time settings
-- 16-01-2000 Changed null setting before and after UNLOAD and RUN
--
SET MESSAGES OFF
SET ERROR MESSAGES ON
DISCONNECT
DIALOG 'YES for BizMan, NO for TomsData:' vPick2 vEndKey YES
IF vPick2 = 'YES' THEN
CONNECT BizMan
SET VAR vDBTo TEXT = 'BizMan'
ELSE
CONNECT TomsData
SET VAR vDBTo TEXT = 'TomsData'
ENDIF
RUN ConectDT IN GlobBlok.apx
CLEAR VAR vChoice,vCount
SELECT (COUNT(*)) INTO +
vCount INDICATOR vi1 +
FROM SYS_Reports2
IF vCount = 0 THEN
PAUSE 1 USING 'No reports in database.' AT CENTER CENTER
RETURN
ENDIF
CHOOSE vChoice +
FROM #VALUES +
FOR SYS_REPORT_NAME +
FROM SYS_Reports2 +
ORDER BY SYS_REPORT_NAME +
AT 7,45 +
CHKBOX +
TITLE 'Click the reports to export then click [OK]' +
CAPTION 'Construction Module' +
LINES 20
IF vChoice = '[Esc]' THEN
PAUSE 1 USING 'No items checked.' AT CENTER CENTER
RETURN
ENDIF
SET VAR vCount INTEGER = 1
SET NULL -0-
WHILE #PI > 0.00 THEN
SET VAR vRptFile TEXT = ('Rpt' + (CTXT(.vCount)) + '.Rpt')
SET VAR vCmd1 TEXT = ('OUTPUT' & .vRptFile)
SET VAR vTemp TEXT = (SSUB(.vChoice,.vCount))
IF vTemp IS NULL THEN
BREAK
ENDIF
SET VAR vRptName TEXT = (SSUB(.vTemp,-1))
SET VAR vCmd2 TEXT = ('UNLOAD DATA for sys_reports2 WHERE+
sys_report_name EQ ''' + .vRptName + '''')
&vCmd1
&vCmd2
OUTPUT SCREEN
CLEAR VAR vCmd1,vCmd2
SET VAR vCount = (.vCount + 1)
ENDWHILE
RUN SetNull IN GlobBlok.apx
DIALOG 'YES to export only, NO to export and import:' vExportOnly vEndKey NO
IF vEndKey = '[Esc]' OR vExportOnly = 'YES' THEN
RETURN
ENDIF
IF vExportOnly = 'NO' THEN
DISCONNECT
DIALOG 'YES for BizMan, NO for TomsData:' vPick2 vEndKey YES
IF vPick2 = 'YES' THEN
CONNECT BizMan
SET VAR vDBTo TEXT = 'BizMan'
ELSE
CONNECT TomsData
SET VAR vDBTo TEXT = 'TomsData'
ENDIF
ENDIF
IF vDBFrom = .vDBTo THEN
PAUSE 1 USING 'Cannot copy from and to same database.' AT CENTER CENTER
RETURN
ENDIF
RUN ConectDT IN GlobBlok.apx
SET VAR vCount2 INTEGER = (.vCount + 1)
SET VAR vCount INTEGER = 1
SET VAR vCount3 INTEGER = 1
SET NULL -0-
WHILE vCount3 < .vCount2 THEN
SET VAR vTemp TEXT = (SSUB(.vChoice,.vCount))
IF vTemp IS NULL THEN
BREAK
ENDIF
SET VAR vRptName TEXT = (SSUB(.vTemp,-1))
SET VAR vCmd3 TEXT = ('DROP REPORT ''' + .vRptName + '''')
SET VAR vRptFile1 TEXT = ('Rpt' + (CTXT(.vCount)) + '.Rpt')
SET VAR vRptFile2 TEXT = ('Rpt' + (CTXT(.vCount)) + '.LOB')
SET VAR vCmd4 TEXT = ('RUN' & .vRptFile1)
SET VAR vCmd5 TEXT = ('ERASE' & .vRptFile1)
SET VAR vCmd6 TEXT = ('ERASE' & .vRptFile2)
&vCmd3
&vCmd4
&vCmd5
&vCmd6
CLEAR VAR vCmd3,vCmd4,vCmd5,vCmd6
SET VAR vCount = (.vCount + 1)
ENDWHILE
RUN SetNull IN GlobBlok.apx
CLEAR VAR vCount,vTranID,vTemp,vChoice,vRptFile1,vRptFile2
RETURN
Warmest regards,
Tom Grimshaw
coy: Just For You Software
tel: 612 9552 3311
fax: 612 9566 2164
mobile: 0414 675 903
post: PO Box 470 Glebe NSW 2037 Australia
street: 3/66 Wentworth Park Rd Glebe NSW 2037
email: [EMAIL PROTECTED]
web: www.just4usoftware.com.au
This email and any files transmitted with it are confidential to the
intended recipient and may be privileged. If you have received this email
inadvertently or you are not the intended recipient, you may not
disseminate, distribute, copy or in any way rely on it. Further, you should
notify the sender immediately and delete the email from your computer.
Whilst we have taken precautions to alert us to the presence of computer
viruses, we cannot guarantee that this email and any files transmitted with
it are free from such viruses.