Archive for May, 2009

Closing and reopening Cardbox from inside Cardbox

27 May 2009

Last time I showed you how to create a simple VBScript macro that closed Cardbox and reopened it again, so as to restart any interrupted Internet connections.

The macro had to be executed from Windows – for instance, from the Quick Launch area of the taskbar. What about creating a Cardbox macro that can do the same thing from inside Cardbox?

(more…)

How to close and reopen Cardbox

26 May 2009

One of our customers has a laptop that he uses to access Cardbox databases across the Internet. When he travels from one office to another, he loses his Internet connection, and so he has to close Cardbox and re-open it again to get reconnected to his databases. He was wondering if there was a one-click way of doing this.

Here’s a VBScript macro that closes and reopens any chosen Cardbox workspace.

Const WORKSPACE="C:\My Documents\Address Book.cbw"
On Error Resume Next
Set x=GetObject(WORKSPACE)
x.Visible=False
Set x=Nothing
WScript.CreateObject("WScript.Shell").Run """" & WORKSPACE & """"

To put this macro on your system, copy it to the Clipboard, then use Notepad to create a file called “Reopen.vbs” and paste the text of the macro into it. Obviously you’d change the first line to reflect the name of your own workspace.

To make the macro easy to access, you can add it to your Quick Launch bar so that it’s always available.

How the macro works

The macro connects to the copy of Cardbox that is running the workspace, it tells it to hide itself, and it deletes its connection to that copy of Cardbox. Cardbox now has no reason to stay alive, so it closes. The macro then opens the workspace afresh.

Could we do better?

  • This is a Windows macro, not a Cardbox one.  and it has to be run from Windows – the Quick Launch bar, or the desktop, or wherever.
  • This macro has the name of the workspace built in to it, so if you have several Cardbox workspaces then you’d need several macros.

Tomorrow, a solution that removes both these drawbacks.

Partially duplicating a record

1 May 2009

In a scan-and-shred type of database, I often find myself wanting to duplicate everything except the image or object field. For instance, I may be filing bank statements, where all the details are the same as last time except for the date and the scanned image itself. Here’s a macro that does this.

Set rec=ActiveRecord
AddRecord
Set recNew=ActiveRecord
For Each fld In rec.Fields
 If fld.Definition.Type=cbxFieldTypeText Then
  recNew.Fields(fld.Definition.Name)=fld
  End If
 Next

I save this macro in the “This Database” section, under the name “Partial Duplicate”. Then, to make things easier for myself, I edit the native format of the database, do Tools > Keyboard, and associate Ctrl+D with playing the “Partial Duplicate” macro. Since Ctrl+D is normally Cardbox’s own shortcut for File > Duplicate Record, this means that I don’t have to change my typing habits.

One refinement: one of my fields, called NUMBER, has an auto-numbering validator in it. If I duplicate that field, the new record will have the same serial number as the old – which I don’t want. So I add the following line at the end of the macro:

recNew.Fields("NUMBER")=""

Now the field will be blanked out, and Cardbox will number it automatically when I save the record.