Sign up on the Revelation Software website to have access to the most current content, and to be able to ask questions and get answers from the Revelation community

At 10 JAN 2001 07:33:11PM Barry Stevens wrote:

I am still looking for a routine to change the account name in attached files to the current OI account - need to because of problems with adding new indexes.

I have a Arev routine VOLTRNS that does this, but there are some areas I am not sure abouting in converting it to OI.

I could post it here if someone wants a go at converting it.

many thanks

Barry


At 10 JAN 2001 08:50PM WinWin/Revelation Technical Support wrote:

Barry-

Email it to Info@Revelation.com

We'll convert it, post it here.

Thanks-

Mike Ruane


At 10 JAN 2001 09:19PM Barry Stevens wrote:

Choice! - Will do


At 11 JAN 2001 05:43PM WinWin/Revelation Support wrote:

Barry

Converted the program to OI. Left the Copyright unchanged

Please let me know if it works.

bob

*

Subroutine Rename_Volume(Volume, Media, Account)

!

* Matthew Crozier 1 September 1990

* Copyright (C) Vernon Systems Ltd

*

* This program will change the Media name and/or the Account for the files

* in a volume - and will modify the index definitions for any indexed files

* in that volume, thus indexes will not have to be rebuilt when redefining a

* volume's Media or Account.

* No one should be attached to the volume while this routine is run. All

* files in the volume will be renamed to the target account.

*

* Permission is given for commercial and non-commercial use of this program

* by legitimate Revmedia subscribers. No warranty express or implied, no

* responsibility accepted.

*

* 01-11-2001 RJC WinWin Solutions, Inc. Converted to OpenInsight

!

Declare Subroutine Reduce, Set_Status

Declare Function Msg, Get_Status

$INSERT Msg_Equates

If Assigned(Volume) Else Volume='

If Assigned(Account) Else Account='

If Assigned(Media) Else Media='

Convert @LOWER.CASE To @UPPER.CASE In Volume

Convert @LOWER.CASE To @UPPER.CASE In Account

Parent=@WINDOW

If Len(Volume) Else

 Def=" 
 Def=Rename Volume" 
 Def=Source Volume?' 
 Def=?' 
 Def=RC" 
 Volume=Msg(Parent, Def, '' , '' , '' )

End

If Volume # Then Gosub Read.params If Valid Then Gosub Change.media Read Index_Files From Revmedia, '%RECORDS%' Then Gosub Change.%records% End If Valid Then Gosub Rename.media.records If Valid Then Gosub Change_Index If Valid Then Gosub Finish End End Return

!

Read.params:

Valid=1

Call Alias_Table(Volume, 'SYSPROG' , 'REVMEDIA' , 'REVMEDIA$' )

If Get_Status() Then

 x=Msg(@WINDOW, "Unable to alias the REVMEDIA table." , '' , '' , '' )
 Set_Status (0)
 Valid=0
 Return

End

Open 'REVMEDIA$' To Revmedia Then

 Readv Old.media From Revmedia, '%%REVMEDIA%%' , 2 THEN
    If Len(Media) Else
       Media=Old.media
       Def=" 
       Def=Rename Volume" 
       Def=New Media Name?' 
       Def=?' 
       Def=RC" 
       Def=Media
       Media=Msg(Parent, Def, '' , '' , '' )
    End
    If Media=' Then Media=Old.media
 End Else
    Valid=0
 End

End Else

 x=Msg(Parent, 'REVMEDIA cannot be attached.|Program aborted.' , '' , '' , '' )
 Valid=0

End

If Valid Then

 If Len(Account) Else
    Account=@APPID
    Def=" 
    Def=Rename Volume" 
    Def=New Account?' 
    Def=?' 
    Def=RC" 
    Def=Account
    Account=Msg(Parent, Def, '' , '' , '' )
    Is_Valid=( Len(Account) ] 0 )
 End

End

Return

!

Change.media:

Writev Media To Revmedia, 'REVMEDIA' , 2 else

 x=Msg(Parent, 'Unable to Update Revmedia %%REVMEDIA%%' , '' , '' , '' )
 Valid=0

End

Return

!

Change.%records%:

Fld.cnt=Count( Index_Files, @FM) + (Index_Files # ) For i=1 To Fld.cnt File.spec=Index_Files Old.account=Field( File.spec, '*' , 2) If Account # Old.account Then Index_Files=Fieldstore( File.spec, '*' , 2, 1, ACCOUNT) End Next i Write Index_Files To Revmedia, '%RECORDS%' Else x=Msg(Parent, 'Unable to Update Revmedia %RECORDS%' , , , )

 Valid=0

End

Return

!

Rename.media.records:

Def="

Def=Rename Volume'

Def=Renaming media records."

Def=U"

If Len(Parent) Then Msgup=Msg(Parent, Def);* display the processing message

Select Revmedia

Done=0

Loop

 Readnext R.id Then
    Old.account=Field( R.id, '*' , 2)
    If Account # Old.account And Old.account # '' Then
       Read R.rec From Revmedia, R.id Then
          Delete Revmedia, R.id Else
          x=Msg(Parent, 'Unable to Delete Revmedia ' : Quote(R.id), '' , '' , '' )
          Valid=0
       End
       R.id=Fieldstore( R.id, '*' , 2, 1, ACCOUNT)
       Write R.rec To Revmedia, R.id Else
          x=Msg(Parent, 'Unable to Update Revmedia %RECORDS%' , '' , '' , '' )
          Valid=0
       End
    End
 End

End Else Done=1

Until Done

While Valid

Repeat

If Len(Parent) Then x=Msg(Parent, Msgup);* take down the processing message

Return

!

Change_Index:

Def="

Def=Rename Volume'

Def=Changing Index information."

Def=U"

If Len(Parent) Then Msgup=Msg(Parent, Def);* display the processing message

Flag='

Reduce( 'WITH {@ID} ] "!"' , , 0, 'REVMEDIA$' , 1, FLAG) If Flag Then Select 'REVMEDIA$' By Using 1 Then

    Done=0
    Loop
       Readnext Index_File Using 1 By AT Then
          Index_File=Index_File1, '*' 
          Gosub Change_Index_File
       End Else
          Done=1
       End
    Until Done
    While Valid
    Repeat
 End Else
    x=Msg(Parent, 'Failure in SELECT.' , '' , '' , '' )
    Valid=0
 End

End Else

 x=Msg(Parent, 'Failure in REDUCE.' , '' , '' , '' )
 Valid=0

End

If Len(Parent) Then x=Msg(Parent, Msgup);* take down the processing message

Return

!

Change_Index_File:

Def="

Def=Rename Volume'

Def=Changing Index information|for file ' : Index_File

Def=U"

If Len(Parent) Then Msgup2=Msg(Parent, Def);* display the processing message

Data_File=Index_File2,65534

If TableExists(Data_File) Then

 Call Detach_Table(Data_File)

End

If TableExists(Index_File) Then

 Call Detach_Table(Index_File)

End

Call Attach_Table(Volume,Index_File,Account, ) If Get_Status()=0 Then Index_Attached_Name=Index_File End Else Call Alias_Table(Volume,Account,Index_File, Index_File ) If Get_Status()=0 Then Index_Attached_Name=INDEX_FILE$' End Else x=Msg(@WINDOW, 'Unable to alias the ' : Quote(Index_File ): ' table.' , , , )

    Index_Attached_Name=' 
    Valid=0
    Return
 End

End

Open Index_Attached_Name To If.fv Then

 Read Index.defn From If.fv, Index_File Then
    Header=Index.defn
    File=Header1, '*' 
    Header=File: '*' : Account: '*' : Media
    Index.defn=Header
    Write Index.defn To If.fv, Index_File Else
       x=Msg(Parent, 'Unable to Update Index definitions for ' :quote(Index_File), '' , '' , '' )
       Valid=0
       Return
    End
 End
 Read Index.sym From If.fv, '!' Then
    Writev '' To If.fv, '!' , 8 else
       x=Msg(Parent, 'Unable to Update Index_SYM' , '' , '' , '' )
       Valid=0
       Return
    End
 End
 Clearselect
 Call Rlist( 'SELECT ' :index_Attached_Name ,5, '' , '' )
 If @RECCOUNT Then
    Eof=0
    Loop
       Readnext Indxkey Else Eof=1
    Until Eof
       Read Indexrec From If.fv,Indxkey Then
          Swap Old.account: "*" :old.media With Account: "*" :media In Indexrec
          Write Indexrec To If.fv,Indxkey Else
             x=Msg(Parent, 'Unable to Update Revmedia %RECORDS%' , '' , '' , '' )
             Valid=0
             Return
          End
       End
    Repeat
 End
 Call Detach_Table( Index_Attached_Name )

End Else

 x=Msg(Parent, Index_File: ' cannot be attached!.' , '' , '' , '' )
 Valid=0

End

If Len(Parent) Then x=Msg(Parent, Msgup2);* take down the processing message

Return

!

Finish:

Call Detach_Table( 'REVMEDIA$' )

Call Attach_Table(Volume,,account,)

Return


At 11 JAN 2001 09:09PM Barry Stevens wrote:

Great, It works fine. Thank you very very much.

WARNING - IT MUST BE RUN FROM THE SYSTEM MONITOR TO WORK PROPERLY

Barry


At 11 JAN 2001 09:52PM Barry Stevens wrote:

I have just logged out of the application and then back in, and when I look at the "list of indexed table" or try to update, its says there are no indexed tables.

Could you please test and verify, and fix.

Thanks

Barry


At 11 JAN 2001 10:14PM Barry Stevens wrote:

The database definition has to be saved, so replace the last paragraph with this:

!

Finish:

Call Detach_Table( 'REVMEDIA$' )
Call Attach_Table(Volume,'',account,'')
call Define_Database(account, 1, "", "")

Return

Barry


At 12 JAN 2001 05:06AM Oystein Reigem wrote:

Barry/Bob/Mike,

Thanks for that useful piece of code! In my work I've never needed to change the account name but often the volume label. I had a RenameVolume subroutine from earlier, but I never got it to save the database definition. Off to the Old Procedures Resting Home with that!

Barry - when you say the subroutine must be run from the System Monitor it's only because of the Msg calls, right? It seems to run OK from an OI form, but of course not from the System Editor.

(In my own version of your routine I've added a few Utility('CURSOR', 'H') calls to set an hourglass cursor. That's because saving the database definition takes some time, and when you run the subroutine from a form nothing tells you it's still processing. When running from the System Monitor you see from the "Getting Remove List" and "Get Add List" lines that something's going on and the hourglass isn't really necessary. - I have one Utility call around the beginning, and one after most of the Msg calls, since Msg resets the cursor to arrow.)

- Oystein -


At 14 JAN 2001 09:25PM Barry Stevens wrote:

]]Barry - when you say the subroutine must be run from the System Monitor it's only because of the Msg calls, right? It seems to run OK from an OI form, but of course not from the System Editor.«

Correct


At 15 JAN 2001 05:04AM Barry Stevens wrote:

Reletaional indexes dont appear to be working….have to delete\add index.

Could you look into please

Barry


At 15 JAN 2001 05:33AM Barry Stevens wrote:

Cant delete \add index:

delete index then add - still have to remove spome index info from dict.

Add - doesnt rebuild

Adding records doesnt add

Please Help


At 15 JAN 2001 02:52PM WinWin/Revelation Support wrote:

Barry:

Will investigate. In translating I focused on syntax changes (trees) rather than core functionality (forest)

I probably need to make program detach each table, save database, then re-attach each table, save database again.

In the meantime:

1. re: Indexes not listing

 If you run LIST_INDEX from the system monitor do you get error messages?  In the past I have found that system monitor gives messages that the screen does not.

2. re: need to delete / add information.

 delete / add using menu or
 did you need to edit dict records or the ! file ?

3. re: Add does not rebuild

 btree and relational or relational only?

Bob


At 16 JAN 2001 01:52AM Barry Stevens wrote:

The !IndexedField in !file is not being converted. The Old names appear to be the new names by the time it gets there.

Barry


At 16 JAN 2001 02:48AM Barry Stevens wrote:

Here is the section of code.

I have noted the spot where the error is.

!

Change_Index_File:

Def=" 
Def=Rename Volume' 
Def=Changing Index information|for file ' : Index_File
Def=U" 
If Len(Parent) Then Msgup2=Msg(Parent, Def);* display the processing message
Data_File=Index_File2,65534
If TableExists(Data_File) Then
	Call Detach_Table(Data_File)
End
If TableExists(Index_File) Then
	Call Detach_Table(Index_File)
End
Call Attach_Table(Volume,Index_File,Account, '' )
If Get_Status()=0 Then
	Index_Attached_Name=Index_File
End Else
	Call Alias_Table(Volume,Account,Index_File, Index_File )
	If Get_Status()=0 Then
		Index_Attached_Name=INDEX_FILE$' 
	End Else
		x=Msg(@WINDOW, 'Unable to alias the ' : Quote(Index_File ): ' table.' , '' , '' , '' )
		Index_Attached_Name=' 
		Valid=0
		Return
	End
End
Open Index_Attached_Name To If.fv Then
	Read Index.defn From If.fv, Index_File Then
		Header=Index.defn
		File=Header1, '*' 
		Header=File: '*' : Account: '*' : Media
		Index.defn=Header
		Write Index.defn To If.fv, Index_File Else
			x=Msg(Parent, 'Unable to Update Index definitions for ' :quote(Index_File), '' , '' , '' )
			Valid=0
			Return
		End
	End
	Read Index.sym From If.fv, '!' Then
		Writev '' To If.fv, '!' , 8 else
			x=Msg(Parent, 'Unable to Update Index_SYM' , '' , '' , '' )
			Valid=0
			Return
		End
	End
	Clearselect
	Call Rlist( 'SELECT ' :index_Attached_Name ,5, '' , '' )
	If @RECCOUNT Then
		Eof=0
		Loop
			Readnext Indxkey Else Eof=1
		Until Eof
			Read Indexrec From If.fv,Indxkey Then
  • *
  • AT THIS POINT OLD.ACCOUNT is the same as ACCOUNT*««—ERROR HERE BJS
  • *
				Swap Old.account: "*" :old.media With Account: "*" :media In Indexrec
				Write Indexrec To If.fv,Indxkey Else
					x=Msg(Parent, 'Unable to Update Revmedia %RECORDS%' , '' , '' , '' )
					Valid=0
					Return
				End
			End
		Repeat
	End
	Call Detach_Table( Index_Attached_Name )
End Else
	x=Msg(Parent, Index_File: ' cannot be attached!.' , '' , '' , '' )
	Valid=0
End
If Len(Parent) Then x=Msg(Parent, Msgup2);* take down the processing message

Return


At 16 JAN 2001 08:26AM Bob Carten wrote:

  • third_party_content/community/commentary/forums_nonworks/05ec7e88b8ae9502852569d100030a14.txt
  • Last modified: 2023/12/28 07:40
  • by 127.0.0.1