Join The Works program to have access to the most current content, and to be able to ask questions and get answers from Revelation staff and the Revelation community

At 07 DEC 1998 03:19:19PM Ruben Martinez wrote:

One of the functionalities of the application that I'm developing is that the user can attach tables from various volumes (directories) to access different data with the same application. In some moment of the attach process of the new data, I receive the next messages:

SYS1302: Volume record for attached table is missing.

SYS1303: Table list in the volume record does not synch with the systables record.

and there is no way to remove the attached tables.

I have looked into the SYSVOLUMES record for the attached volumes, and there is no information in field 3 corresponding to the tables of that volume.

After this errors happens, the only way I can continue with the application is restoring a backup from the entire developing environment.

My questions are:

1. This problem is because a bug in OI (I'm using OI 3.6)?

2. If it is a bug, how can I fix it without restoring the entire developing environment?


At 08 DEC 1998 09:43AM Chris Revelation Software wrote:

Ruben -

Take a look at this.

Follow those instructions, and if you still experiance problems let me know.

-Chris

Revelation Software


At 08 DEC 1998 01:43PM Ruben Martinez wrote:

Thank you Chris, I'll try that utility.


At 08 DEC 1998 08:06PM Ruben Martinez wrote:

Hello Chris:

I have tried the utility and it works fine from the developer's evironment. My application is totally in spanish, so I can't include this utility on it. Can you send me more information on how to run

this very valuable utility without user interface?

Thank you again…


At 10 DEC 1998 02:54PM Cameron Purdy wrote:

Ruben,

You cannot re-compile the utility; is uses the system variable set (SYSCOMMON). Here is the source; just massage the output (see "SWAP" in the programmer's reference). BTW, this functionality is included in OI 3.7 (it auto-checks this stuff when OI loads a database).

Cameron Purdy

Revelation Software

<code>
function SyncDB(bUpdate)

* cp 12/13/95
* checks files vs. volumes
* if bUpdate is TRUE$, fixes any references

$insert Rev_BP, SysCommon

cMods =0
Result="

point Vols     to SC_ARRAY_VOLUMES(0)
point VolFiles to SC_ARRAY_VOLUMES(3)
point Files    to SC_ARRAY_TABLES(0)
point FileVols to SC_ARRAY_TABLES(1)

* first verify volume structures
cVols=count(Vols, @fm) + (Vols # "")
for iVol=1 to cVols
  Vol=Vols
  cFiles=count(VolFiles, @vm) + (VolFiles # "")
  for iFile=1 to cFiles
    File=VolFiles
    locate File in Files using @fm setting Pos then
     * check volume reference
      if FileVols # Vol then
        Result=The ": File: " table is referenced by the ": Vol: " volume but is attached under the ": FileVols: " volume"
        if bUpdate then
          VolFiles=delete(VolFiles, iVol, iFile, 0)
        end
        cMods += 1
      end
    end else
     * file does not exist but is referenced by volume
      Result=The ": File: " table is referenced by the ": Vol: " volume but is not attached"
      if bUpdate then
        VolFiles=delete(VolFiles, iVol, iFile, 0)
      end
      cMods += 1
    end
  next iFiles
next iVol

cFiles=count(Files, @fm) + (Files # "")
for iFile=cFiles to 1 step -1
  File=Files
  Vol =FileVols
 * check volume reference
  locate Vol in Vols using @fm setting Pos then
    locate File in VolFiles using @vm setting Pos else
     * file not referenced by a volume
      Result=The ": Vol: " volume is referenced by the ": File: " table but the volume does not reference the table"
      if bUpdate then
        for i=0 to 5
          SC_ARRAY_TABLES(i)=delete(SC_ARRAY_TABLES(i), iFile, 0, 0)
        next i
      end
      cMods += 1
    end
  end else
   * file references unattached volume
    Result=The ": Vol: " volume is referenced by the ": File: " table but is not attached"
    if bUpdate then
      for i=0 to 5
        SC_ARRAY_TABLES(i)=delete(SC_ARRAY_TABLES(i), iFile, 0, 0)
      next i
    end
    cMods += 1
  end
next iFile

if bUpdate then
  Result=cMods: " reference errors were corrected"
end else
  if cMods then
    Result=cMods: " reference errors were detected"
  end else
    Result=The database is synchronized correctly"
  end
end

swap @fm with \0D0A\ in Result

return Result

</code>


At 10 DEC 1998 11:08PM Ruben Martinez wrote:

Thank you very much Cameron, this is what I needed!!!

View this thread on the Works forum...

  • third_party_content/community/commentary/forums_works/c82f8da381692ca7852566d3006fa203.txt
  • Last modified: 2024/01/04 20:57
  • by 127.0.0.1