Forgot password? | Forgot username? | Register
  • Index
  • » Users
  • » bern
  • » Profile

Posts

Posts

The daDittoAll privilege only covers the Ditto All command. The Ditto Tab command is still available to all users (it is really just a shortcut for dittoing each field on the current tab, so it doesn't seem worth creating yet another privilege to handle Ditto Tab).

bern.

Hello All,

The next release of EMu has a new "Operations" privilege called daDittoAll.System Administrators may use this privilege to grant access to the Ditto All function. Any system build after the 3rd October 2011 contains the new privilege. The 4.0.04 upgrade script (upgrade-4-0-04) asks whether the daDittoAll privilege should be given to all users with daInsert/daEdit (that is users who can create or change records). This allows the current functionality (everyone can ditto all) to be maintained if required.

Regards

bern.

Hello Mark,

If you are using VBA in excel you do not need to specify the path to the location of the database. You can use code like:

Worksheets("Data").QueryTables(1).Connection = "ODBC;DSN=EMu Loans;"

where you do not specify the DBQ. In this case ODBC will use the "DBQ" defined for the data source in the registry. If you want to look up the path the "easiest" way is to use the Windows registry. The path is defined for each data source under:

\\HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\dbname

where dbname is the name of the database (e.g. "EMu Loans" as specified in the connection string). Look for the DQB key.

Hope this helps.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Tom,

It is not possible to retrieve all records associated with a set of group records from within the Groups module itself. As the records within the Groups module contain links to records within any other module it is problematic retrieving all associated records. For example, if you performed a query in the Groups module and retrieved two records, one with links to the Catalogue and another with links to Parties, what should happen if you wanted to retrieve all associated records? Should you get a new Catalogue module with the catalogue links and a new Parties module with the parties links? As this may be confusing (with potentially a lot of modules starting up) the functionality was not added.

You can however retrieve all the catalogue records from a number of groups from within the Catalogue module itself. The mechanism requires multiple steps but is quite flexible. The steps are:

1) Open up a new Catalogue module (do not perform a query).
2) Select Tools->Group->Retrieve Group.
3) Select the first group to retrieve and click the Retrieve button.
4) The group will be retrieved and the records displayed.
5) Select File->Additional Search->Merge (OR).
6) You will now be placed back in query mode with record held (look at the status bar)
7) Go to step 2 and select the next group and continue until all the required groups are retrieved.

If you wanted to find records common to all groups then select File->Additional Search->Intersect (AND) rather than File->Additional Search->Merge (OR). You can also use File->Additional Search->Subtract (NOT) if you want to exclude records in a certain group.

As you start in the Catalogue module only catalogue based groups can be retrieved. This avoids the issues with different modules associated with different records in the Groups module.

More information can be found in the EMu help file. From the table of contents select:
1) Working with EMu records
2) Search
3) How to Run a Search
4) How to run an Additional Search

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Gavin,

The SecDepartment_tab column is a text column containing a list of all the departments that claim some ownership of the record. The values in the column do not link to any module, they are simply text.

From the code segment:

$query->Select("SecDepartment_tab->egroups->GroupName");

it looks like you are trying to look up the value(s) in the SecDepartment_tab column in the GroupName column in the egroups table. I assume you want to return a list of IRNs as stored in the egroup table?

If this is the case the following Texql will work:

select irn_1, (UNNEST(SELECT Keys_tab FROM egroups where GroupName IN narrative.SecDepartment_tab) on Keys_tab)
from enarratives AS narrative
where irn_1 = 11

The query result will look like:

(11,?|2|3|4|5])

where "11" is the narratives IRN and 1,2,3,4,5 are the catalogue IRNs from the egroups table.

I hope this is what you are after. If not please email me a little more detail and will try and provide a more accurate reply.

Regards

bern. (Bernard.Marshall at mel.kesoftware.com)
Bernard Marshall
KE Software
Melbourne, Australia

Hello Kyle,

I have listed the diffs below. If you apply them (via "patch") you will get a version of "emuhelpdump" that will include the name of the table to which "Ref" and Ref_*" columns link.

Regards

bern.


141d140
< next if ($field =~ /Ref$/ || $field =~ /Ref_/);
283a283
> my $reftable;
288a289
> return($reftable) if (defined($reftable = $schema->{"RefTable"}));
290,294c291,292
< if (defined($Schema{$module}->{"columns"}->{$reflink}->{"RefTable"}))
< {
< return($Schema{$module}->{"columns"}->{$reflink}->{"RefTable"});
< }
< return("");
---
> $reftable = $Schema{$module}->{"columns"}->{$reflink}->{"RefTable"};
> return(defined($reftable) ? $reftable : "");
Bernard Marshall
KE Software
Melbourne, Australia

Hello Kyle,

I have altered the scripts that generate Field Help records ("emuhelpdump" in the "bin" directory on the server) to now include all Ref and Ref_* fields. They were excluded originally as the Field Help module was designed to contain records for fields that appear in the client and can be selected via the "What's this Help?" facility. As the Ref and Ref_* columns cannot be clicked on (they sit behind the viewable reference fields) their help records were not generated.

As you are using the Field Help module as a data dictionary it make sense to include these columns. It will also make your code a little simpler I suspect :-). The change is incorporated in EMu 4.0.01-0908211 or later.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

12-Feb-09 11:00:00
Category: Using EMu

Hello Paula,

The VB code you have looks correct. I suspect that the DSN name is incorrect. The Data Source Name for the catalogue module is "EMu Catalogue", so I would suggest changing:

Connection:="DSN=EMu Catalog;", _

to

Connection:="DSN=EMu Catalogue;", _

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Will,

The .profile-local file that holds your local environment settings is found under the "client" directory. In your case this is under the "cma" directory (so the path is ~emu/cma/.profile-local). The .profile-local you are looking at is under the "emu" directory and is used to determime the "default" environment when user "emu" logs into the server (hence the "client cma" line in your file).

A typical "client" .profile-local file will look similar to:

#
#  Set data formats.
#
TEXPRESSOPTS="${TEXPRESSOPTS} dateorder=mdy dateformat='dd MMM yyyy' timeformat='HHmm' latitudeformat='dd mm SS D' longitudeformat='ddd mm SS D' loadmemory='524288'"
export TEXPRESSOPTS



Note there are only two lines above, the first starts with TEXPRESSOPTS and the second with export. The formats above are typical for North American data. The time format represents a 24 hour clock format. The "loadmemory" option is used to control how much memory should be used when reindexing occurs (the number is in Kb and should be around 25% the size of the system memory). The value 524288 represents 0.5 Gb or 512 Mb.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Joanna,

This problem occurs when the date format specified for use in EMu (as specified in the EMu registry under "System|setting|Format|Date Output|dd MMM yyyy" registry entry) does not match the date format specified for Texpress (as found in the .profile-local file under the EMu envrionment on the server). The same mismatch may occur for Time, Latitude and Longitdue fields. In all cases the format specified in the EMu registry should match the format specified in the .profile-local file.

From your description it sounds like the "Date Output" format is "dd MMM yyyy" in the EMu registry, however the entry in the .profile-local does not specify a "dateformat" or specifies an incorrect format. You should have something like:

TEXPRESSOPTS="${TEXPRESSOPTS} dateformat='dd MMM yyyy'"

in the .profile-local.

As for Time, Latitude and Longitude the same applies, in that the format in the Registry should match the format specified in the .profile-local (see "Time Output", "Latitude Output" and "Longitude Output" registry entries with the corresponding Texpress entries "timeformat", "latitudeformat" and "longitudeformat" respectively). If you have any issues please contact EMu support and they will set the entries appropriately.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Alan,

I assume you are capturing the output without using a browser as the browser will translate the & into an ampersand character. Can you confirm that you used "telnet" to access texxmlserver?

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Alan,

Could you please let me know what version of TexAPI you have installed on your machine. You can determine this by logging into the EMu server as user "emu", then looking in the "../texpress" directory. A file called texapi will exist. If you run "ls -l" you will see something like:

lrwxrwxrwx 1 emu emuadmin 7 Apr 10 20:55 8.1 -> 8.1.016/
drwxr-xr-x 6 emu emuadmin 4096 Mar 13 20:26 8.1.015/
drwxr-xr-x 6 emu emuadmin 4096 Apr 10 20:54 8.1.016/
lrwxrwxrwx 1 emu emuadmin 7 Apr 10 20:59 texapi -> 3.1.012/

The "texapi" version appears after the "->" marker.

Thanks

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Oops,

Seems like all my XML has been gobbled up! I have attached the output as an attachment.

Regards

bern.

Attachment: xml.txt

Bernard Marshall
KE Software
Melbourne, Australia

Hello Alan,

I have tested texxmlserver and it seems to be marking up special characters correctly. I created a multimedia record with a title of "Cats & Dogs" and then connected to texxmlserver and got it to dump the value in MulTitle. I go the following output:


telnet localhost emuwebartdemo
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /?texql=select+MulTitle+from+emultimedia+where+irn+=+455
HTTP/1.0 200 OK
Content-Type: text/xml




Cats & Dogs


Connection to localhost closed by foreign host.

As you can see the ampsersand is escaped (&) correctly. Could you please perform the same test on your server (replacing the irn with the correct value and the service name with your service name) and post back the output?

Thanks

bern.

Bernard Marshall
KE Software
Melbourne, Australia

Hello Alan,

If you are still having problems terminating texxmlserver can you please log this with EMu support so that the issue can be tracked and resolved.

Thanks

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Alan,

When a request is submitted to texxmlserver it passes the query part of the request on to the texserver process attached to that texxmlserver. texserver then evaluates the query and passes the results back which are then passed back to the requester. That is:

requester ---> texxmlserver ---> texserver (evaluates query) ---> texxmlserver ---> requester

The "freezing" you mention occurs when texserver takes some time to process a complex query.

The texxmlserver process(es) are controlled by a parent texxmlserver process that is in charge of starting and terminating the child processes (using "ps -ef | egrep texxml" will show one process owned by PID 1, this is the parent process). You can find out the PID of the parent process by entering "emuweb status".

When "emuweb restart" is run the parent process is terminated which in turn kills all the child processes. Killing the texxmlserver process may not terminate the associated texserver processes if it is busy (processing a query). Once the texserver process finishes processing the query it will terminate.

If you get the error:

Could not bind to port. Is texxmlserver already running?

It means one of two things:

1) A texxmlserver child process is still running. You can determine this by entering "ps -ef | grep texxml" and noting the PID. You can then just kill it usign the PID. This should be extremely rare (I have not seen it happen for a number of years).

2) You are running an old version of TexAPI (which contains texxmlserver). In late 2004 a bug was fixed that caused the above error message to appear even if all texmxmlserver processes were killed. It was not until all associated texserver processes finished that texxmlserver could be restarted.

From your description it would seem that the second point is the most likely. Particularly since you cannot restart emuweb for 3-12 hours (this may be the time taken for your "join" query to conclude in texserver). In this case I would recommend contacting KE Support and getting the latest version of the TexAPI package installed.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

02-Jul-08 09:00:00
Category: EMu Administration
Forum: Texpress

Hello Alan,

The problem with the "join" query you are trying to perform is that the implementation of the "join" operator in the server is very simplistic. It essentially does the "join" of each record in the first table with each record in the second table and then applies the "where" condition to determine if the result matches. If either ecatalogue or emultimedia is large the query will take some time to evaluate (due to the multiply effect of the "join").

As this evaluation occurs the texxmlserver servicing the request will not accept any more requests. At this point the texxmlserver appears to have "locked up", but it really just waiting for the server to finish processing the request. If left long enough a response would be sent back.

The solution is to not use the "join" operator up front but as Simon suggests perform the join implicitly over a much smaller set of records. If you consider Simon's query:

select ecatalogue.ObjObjectID, emultimedia.Multimedia
from ecatalogue, emultimedia
where exists
(
ecatalogue.MulMultiMediaRef_tab
where MulMultiMediaRef_tab=emultimedia.irn
)
and ecatalogue.ObjObjectID='1992.0038.0028'

then the query optimiser will first apply:

ecatalogue.ObjObjectID='1992.0038.0028'

to the catalogue resulting in a very small nubmer of records (in this case probably one). Now the "join" occurs implicitly between ecatalogue with one record and emultimedia. The:

MulMultiMediaRef_tab=emultimedia.irn

condition is then applied. Since the "join" involves significatly less records the query is executed must faster.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

02-Jul-08 09:00:00
Category: Using EMu

Hello Simon,

EMu uses a post relational database to store information. The data structures supported by this system are more complex than ODBC can support (e.g. nested tables within a record). As such, EMu does not provide a "live" ODBC link as it is not possible to provide full access to nested structures (although we do provide a JDBC link as it does support nested structures).

However it is possible to generate ODBC data sources from data within EMu. The reporting subsystem does this for report writers that require ODBC interfaces. The way you do this is to create a new report of type "Export DOBC Data Source". Then select all the columns you want in the report (this will form the columns in the ODBC Data Source). Save the report.

Now perform a query and get back the record you want to make available in Access. Select your created report and run it on all your matches. This will place all the data into an ODBC Data Source for the module you are in.

If you go to the Windows "ODBC Data Source Administrator" you will see a list of "User DSN" Data Sources that start with "EMu" followed by the module name.

In Access you simply need to connect to the User DSN Data Source for the module in which you generated the report (EMu Catalogue if you are using catalogue data). You can use the link as though it is live. Once you have established the link in Access you can perform further queries in EMu and re-generate the report to save the new data. In Access just "refresh" the ODBC link to get the new view of the data.

Let me know if you need any more details.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

07-Apr-08 09:00:00
Category: Using EMu

Hello Will and others,

I have attached a document that outlines a new feature for EMU 3.2.05. The "Record Recall" feature allows users to recall the data as it was in an earlier version of the record. The facility makes use of the "change" audit records generated by EMu. Obviously only those audit records in the audit table can be recalled.

Will, I am suprised that the audit table has grown so quickly. Do you just have "change" auditing enabled (run emuaudit on the server side and look at the output)? I enabled auditing on a client that has 2.4 million catalogue records (3.0 Gb of data) in November last year, with "change" only. To date (early April) they have 335,000 audit records (900 Mb of data).

Regards

bern.
record recall.pdf

Bernard Marshall
KE Software
Melbourne, Australia

Hello Karen,

It is possible to create a report for type "Export CSV" in the Multimedia module and select the "Multimedia" field as the field in the report.

When you run the report an CSV file will be created containing a list of path names to the master images. These images will have been copie to your machine. It is then possible to move the image directory to the required location.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Karen,

EMu does not provide the ability to select a number of multimedia records and have the attached media saved to the local disk. One of the reasons is that the current record based "save" facility allows you to choose any of the image resolutions for saving. If a batch of records was to be saved some mechanism would need to be added to allow people to specify what size resolutions should be used.

Such a facility would also need to take into account the restrictions on a given user in terms of the maximum size image they can save (as specified by the "Maximum Viewer" registry entry). I suspect that institutions may also want to limit who is allowed to "batch" save media as this could provide an easy way for someone to download a large set of images (e.g. a student or research person) when such access may not be desirable.

Regards

bern.

20-Apr-07 09:00:00
Category: Using EMu

Hello Ducky,

As you rightly point out the original Sites module (esites) has multi-value fields for the Continental group. The reason for this is that the first client to use esites indicated they would require multiple values for some of the fields (in particular states/provinces and townships). The reasoning was that a site may well cross state/township borders. In this case all states/townships would need to be listed in the hierarchy. Back then EMu did not allow a combination of single value and multiple value fields in a hierarchy (addressed many years ago now) all fields had to be multi-valued.

It was after a number of new clients indicated they did not want multiple value support we changed the controls in the Sites module to only allow a single value (but you could add multiple by entering SHIFT+ENTER to go to the next line). We could not change the columns however as some clients wanted multiple values and reports already accessed the columns.

When requests for a merged Collection Events and Sites module were considered, it was decided to make the new Continental group single-valued only. This was possible as the merged module actually uses the Collection Events table, not the Sites one, so we were only adding new columns (hence making sure everything was still backwards compatible).

Thus clients who use the Sites module (like NMAI, etc) have multi-valued hierarchies, while clients who use the merged Collection Events and Sites module (like AMNH) have single-valued hierarchies.

Regards

bern.

Posted By DucPhong Nguyen on 31-03-2007 1:08 AM
I believe that the original KE EMu design for Sites did include Table of Text for various Sites fields in the Continental (Political) group. When I was at NMNH, this was the standard structure until that museum migrated to the new Sites that combines Sites and Collections Events (CES) where these fields then became single-value. The multi-value Sites fields are probably part of any standard EMu implementation. The single-value Sites fields are optional, but I'm sure someone from KE will clarify. If your institution opts to go with the single-value Sites down the road, this could involve a data migration as data from multi-value fields must be moved to single-value fields. And reports referencing these fields will need to be updated. This is what NMAI will probably have to do in the future.

Ducky (NMAI)



Bernard Marshall
KE Software
Melbourne, Australia

Hello Will,

I apologise for the slow reply, but I have not received any emails from emusers.org since early November and as I have been busy on EMu 3.2.03 I have not been checking as often as I should!

The EMu installer currently uses a third party package (WISE) to place all the EMu files in the right place on your PC for the various installation types (standalone, client and server). As you have found out, some of the files to be installed require administrator rights in order to be able to register themselves with the system (in particular the ODBC drivers (Jet) and Crystal dlls). There is no getting around this as the Windows security model enforces this restriction.

Many Windows programs (but by no means the vast majority) use MSI installers to install software. MSI runs as user SYSTEM, which essentially has the same access rights as Administrator for installing software (so can be a security hole in its own right!).

There are two issues with changing EMu to use MSI rather than the current method. The first is that MSI installers are VERY, VERY large donwloads. For example the Crystal MSI merge package is 150 Mb, which is only a small part required to build an EMu MSI installer (also need to add in JET and its dependencies, like DCOM, as well as the EMu parts). This would produce an installer of about 250 Mb compared to the current size of about 100 Mb. This is a sizeable increase for no gain as the same files are installed, however a lot of baggage comes for the ride.

The second issue is the time required to re-develop the installation process for all three types (standalone, client and server). While this does not directly affect users, it does slow down development, so has an indirect affect. MSI installers are tricky things to write (as with most Microsoft things :-), ahh perl.....) and as they run as a privileged user (SYSTEM) a lot of testing is required (which was true for our installer as well, however it is already well tested).

I suspect an easier solution is to install a client/server setup. In this way the client side does not need to be upgraded very often (really only when Crystal releases new DLLs that need to be installed onto the client machine). In this way you should only need to update the server installation, which is only on one machine.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

20-Feb-07 11:00:00
Category: EMu Administration
Forum: EMu Admin

Hello Harry,

The "value" part of the "Insert Defaults" does not provide a mechansim for accessing the name of the person who is creatign a new record. You can however (in a rather clumsy way) use the "Insert Defaults" entry to add in the name of the current user. The trick is to create a separate registry entry for each user that insert their user name. So you get:

User|harry|Table|tablename|Insert Defaults|Base Defaults|fieldname=Harry Lee

User|bern|Table|tablename|Insert Defaults|Base Defaults|fieldname=Bernard Marshall

and so on. As you can see this can be quite clumsy (I did warn you :-)).

A better way is to take advantage of the underlying database facilities to add values whenever a record is created (this already happens as you observerd with the AdmInsertedBy field). When a record is saved the database server run an "onsave" handler that can add to or modify the data before it is committed. Summary Data calculations are one example of the user of this handler.

The tricky bit here is that any changes you make to the database handlers will be clobbered when the server side is upgraded. The solution to this is that any changes you make should be sent to EMu support so they can incorporate them into our master copy of the module. The "onsave" handler provides great flexibility in adjusting data before saving it.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Mike,

There are two low level technologies you can use to interface directly to the EMu tables. Note that using these interfaces requires you to have a basic understanding of the EMu schema, in particular how the various tables are linked together.

TexXMLServer
============

Texxmlserver provides XML over HTTP access to KE EMu tables. You can read about it at:

http://www.kesoftware.com/texpress/texxmlserver.html

If you are using JSP you can build an HTTP request based on the query terms provided and parse the returned XML to produce the results document. You could build some simple java classes that could be used as wrappers around the query building and XML parsing.

TexJDBC
=======

Development of a JDBC driver is currently under way. It has not been officially released, however development versions can be made available. Using JDBC you can build query statements and retrieve data directly from the EMu tables. If you want access to the driver please email me at Bernard.Marshall at mel.kesoftware.com.

If you are a Natural Sciences based institution, then another possibility is to use the EMu DiGIR Web Service for searching and displaying data. This implements the DiGIR standard. More details of the standard can be found at:

http://digir.sourceforge.net/

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Julian and JP,

I have added the requested tabs to the EMu 3.2.02 release. There are now three "Objects" tabs in the Locations Module. They are:

- Objects - objects with current location
- Objects (Perm) - objects with permanent location
- Objects (Temp) - objects with temporary location

Note these tabs will only be shown if your catalogue supports the required attachment (that is, your catalogue has a field for Current, Permanent and Temporary Location).

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Joanna,

1) I need to make into a parameter a selection on a date field, but Crystal seems to want to make it a date/time field, meaning that my user needs to type in some arbitrary time '12:00:00' as well, making it not very friendly. Do you think exporting it as text would make the parameter/selection user interface better? Do-able?

I am not sure that making the date field text will do what you want it to do. If you are using the parameter to select a specific date then you may get away with it provided that your users type the date in exactly the same format as it is displayed (as a text field is matched character by character). If you are using the parameter for a date range (eg everything for that date onwards) then you must maintain the field as a date-time type in order to be able to use relational operators in SQL (that is <, <=, > and >=).

In Crystal 9 you can create a "date" only parameter, by:

1. View->Field Explorer
2. Right click on "Parameter Fields" and select "New..."
3. In the "Value type" list select "Date"

Hope this helps.

2) I have a text block in a section with several lines of address text, and when a part of the address is absent, I'd like to suppress the blank line. None of my twiddles to put it in its own text box, and suppress on null seem to work.

This is always a bit clumsy in Crystal. There are two ways of doing this depending on the layout of your report. The simple way is to create a subreport (you do not need the subreport if there is no other information on the same lines as the address info, otherwise you will require one), then add each part of the address into a separate section, so that you end up with:

---------
Street Address Field
---------
City Field
---------
State Field
---------
Country Field
---------

then for each section (in Section Expert) turn on "Suppress Blank Section". Thus if a section is empty it is removed. You then insert your subreport into the main report.

The above solution does not give you much flexibility over the layout of the address. For example it may be quite common to put the State and Country on the same line separated by a comma. In this case you need to create a formula to build the combined State and Country string (with appropriate ISNULL checks).

The second solution gives up unlimited flexibility but the price is complexity. For the second solution you need to build up the complete address string (can include whatever you want, eg person's name, telephone number, test for postal or physical address, etc) using a Crystal formula. You can then put the formula into your report (with Can Grow turned on). The code below is some sample code that builds up a complete address consisting of:

Name
Organisation
Department
Postal Address otherwise Physical Address
City, State, Zip Code
Country
Phone: Phone Number

Blank lines are removed (or strickly speaking not added). While the code may look a bit overwhelming if you take a bit of time it should become clearer:

Code:

 <br> Local StringVar addressee := ""; <br> Local StringVar location := ""; <br> Local StringVar newline := Chr(13) + Chr(10); <br>  <br> //  We need to build up the addressee string. As many parts <br> //  may be missing we need to be a bit flexibile here. <br> //  First get the name of the contact person. <br> // <br> If (Not IsNull ({etransac_csv.ContactPerson})) Then <br> ( <br>     If (Not IsNull({etransac_csv.ContactTitle})) Then <br>         addressee := {etransac_csv.ContactTitle} & " " & {etransac_csv.ContactPerson} <br>     Else <br>         addressee := {etransac_csv.ContactPerson} <br> ); <br>  <br> //  Now add in the Organisation name and Department <br> // <br> If (Not IsNull({etransac_csv.NamOrganisation})) Then <br> ( <br>     If (addressee <> "") Then <br>         addressee := addressee & newline; <br>     addressee := addressee & {etransac_csv.NamOrganisation}; <br> ); <br> If (Not IsNull({etransac_csv.NamDepartment})) Then <br> ( <br>     If (addressee <> "") Then <br>         addressee := addressee & newline; <br>     addressee := addressee & {etransac_csv.NamDepartment}; <br> ); <br>  <br> //  Next we add in the Street details. We need to try the postal <br> //  address first if filled, otherwise use the physical address <br> // <br> If (Not IsNull({etransac_csv.AddPostStreet})) Then <br> ( <br>     If (addressee <> "") Then <br>         addressee := addressee & newline; <br>     addressee := addressee & {etransac_csv.AddPostStreet}; <br>     If (Not IsNull({etransac_csv.AddPostCity})) Then <br>     ( <br>         If (Not IsNull({etransac_csv.AddPostState})) Then <br>             location := {etransac_csv.AddPostCity} & ", " & {etransac_csv.AddPostState} <br>         Else <br>             location := {etransac_csv.AddPostCity} <br>     ) <br>     Else If (Not IsNull({etransac_csv.AddPostState})) Then <br>         location := {etransac_csv.AddPostState}; <br>     If (Not IsNull({etransac_csv.AddPostPost})) Then <br>     ( <br>         If (location <> "") Then <br>             location := location & " "; <br>         location := location & {etransac_csv.AddPostPost} <br>     ); <br>     If (location <> "") Then <br>     ( <br>         If (addressee <> "") Then <br>             addressee := addressee & newline; <br>         addressee := addressee & location <br>     ); <br>     If (Not IsNull({etransac_csv.AddPostCountry})) Then <br>     ( <br>         If (addressee <> "") Then <br>             addressee := addressee & newline; <br>         addressee := addressee & {etransac_csv.AddPostCountry} <br>     ); <br> ) <br> Else <br> ( <br>     If (Not IsNull({etransac_csv.AddPhysStreet})) Then <br>     (     <br>         If (addressee <> "") Then <br>                 addressee := addressee & newline; <br>         addressee := addressee & {etransac_csv.AddPhysStreet}; <br>     ); <br>     If (Not IsNull({etransac_csv.AddPhysCity})) Then <br>     ( <br>         If (Not IsNull({etransac_csv.AddPhysState})) Then <br>             location := {etransac_csv.AddPhysCity} & ", " & {etransac_csv.AddPhysState} <br>         Else <br>             location := {etransac_csv.AddPhysCity} <br>     ) <br>     Else If (Not IsNull({etransac_csv.AddPhysState})) Then <br>         location := {etransac_csv.AddPhysState}; <br>     If (Not IsNull({etransac_csv.AddPhysPost})) Then <br>     ( <br>         If (location <> "") Then <br>             location := location & " "; <br>         location := location & {etransac_csv.AddPhysPost} <br>     ); <br>     If (location <> "") Then <br>     ( <br>         If (addressee <> "") Then <br>             addressee := addressee & newline; <br>         addressee := addressee & location <br>     ); <br>     If (Not IsNull({etransac_csv.AddPhysCountry})) Then <br>     ( <br>         If (addressee <> "") Then <br>             addressee := addressee & newline; <br>         addressee := addressee & {etransac_csv.AddPhysCountry} <br>     ); <br> ); <br>  <br> //  Now add in the first business phone number if they have one <br> // <br> If (Not IsNull({etransac_csv.NamBusiness_tab})) Then <br> ( <br>         If (addressee <> "") Then <br>             addressee := addressee & newline; <br>         addressee := addressee & "Phone: " & Split({etransac_csv.NamBusiness_tab}, newline)?] <br> ); <br> addressee; <br> 

3) I have two subreports in the body of the report, and I'd like the amount of text each subreport takes up to be fluid - the 'can grow' idea, but the first subreport results are flowing all over the second when the text expands. I don't know how much room each subreport will need to print.

Gill's solution for this is the best one.

4) I have a multi-page invoice to produce, with each page being a different report. I'd like to combine each of these reports as subreports into one report, thus saving the user time, but the bottom treatment of each report gets truncated, and they do not flow out as distinct (as created) pages. The bottom parts end up in the middle of the page, instead of at the bottom.

Crystal does not handle pagination within subreports. You can only specify a report header/footer, but not a page header/footer. This means you have no control over the "bottom parts end up in the middle of the page". The only solution I know is to create the report as a single report (that is copy each report into a single one). Note this may not be possible depending on the data structures used for each of the individual reports.

Also Crystal does not handle page footers very well at all! It will always allocate a footer the size of all footer sections combined. This can lead to very large amounts of space allocated to a footer that may only print one line. Crystal 11 provides a partial (but ultimately unsatisfactory) solution by allowing some footer sizes to be excluded, but then you must make sure that enough space is allocated for all variations of the footers you need.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Perian,

KE EMu 3.1 provides support for Crystal 8, 9, 10 and XI. Crystal 10 support is only available for clients who have Windows NT/2000/XP/2003 and Crystal XI support is only available for Windows 2000/XP/2003.

As for the version, the Standard Version can be used to produce most reports you will require. The Professional Version adds support for generating reports directly in HTML (rather than generating the report and then saving as HTML). The Standard Version provides the same level of reporting sophistication as the Professional Version. You do not require the Developer Version (this is used by KE to incorporate the Crystal viewer into EMu).

As for security, I assume you want to limit the fields that people can add to a report? If this is the case you can hide fields in EMu so that they cannot be viewed (technically disable dvDisplay Column Access). EMu takes the approach that if a user can see the data in a field on the screen then they can see the data stored in that field in a report. If the field cannot be seen then empty data is shown for that field when used in a report.

As the Microsoft Text Driver (ODBC) is used as the underlying data source for your Crystal report, there is no support provided for limiting field access via Crystal itself (the Text Driver does not provide any security at all).

Regards

bern.

Bernard Marshall
KE Software
Bernard Marshall
KE Software
Melbourne, Australia

10-Nov-05 11:00:00
Forum: Transactions

Hello Marion,

Nice to catch up in Chicago. At present there are only two clients who are using the "Transaction" module. They are AMNH (American Museum of Natural History) and FMNH (Field Museum of Natural History). Both these institutions are using it in a slightly different way. FMNH have rolled Accession Lots and Loans together into their Transaction module. The Movements module is used for tracking shipping.

AMNH have kept Accession Lots separate and rolled Loans and Movements together. FMNH and AMNH use different models for handling preps. FMNH embed prep information (that is information about how the specimen has been prepared/stored) in with the organism information. AMNH have their prep information stored in separate records linked back to the organism record.

In order to handle the difference in the way preps are modelled the transaction modules are different internally (in fact they are completely different designs at the base level). As each institution posts their screen shots I expect you will see the differences.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello Andy,

As you point out there are not any links from Multimedia to Parties. There are two reasons for this:

1) The first is that the Multimedia Module was orginally designed (and can still be) as a drop in Module for any design environment (EMu is only one design environment). No assumptions were made about what other Modules would be available. In fact we have one client who does not even have Parties (they have a simple catalogue attaching to Multimedia). If no assumptions could be made, no links were possible from the Multimedia Module. Note that a few clients have sub-classed Multimedia and changed the Creator/Other Contributors to links.

2) It was also felt that it would be very onerous to have to create a Party record just to attach a multimedia document. Many clients already indicate that the amount of linking required slows down data entry. It was felt that, in general, not much would be known about the Creator/Other Contributors of multimedia documents. If the multimedia document was important enough it was felt that a catalogure record should be created so that it could be fully documented. The original version of the Bibliography Module also worked this way (that is links were not used for the Author field as, in general, not much information is known about an author, and in many cases the name is the only known piece of information. When the Bibliography module was updated some time ago most clients indicated they would prefer the link, even at the expense of data entry speed. It is a subjective thing.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

Hello JP,

The issue with return characters in the text of nested tables not aligning correctly is fixed in EMu 3.1. I have attached a general purpose notes field used by AMNH in all modules which may be worth considering.

Regards

bern
Bernard Marshall
KE Software
Melbourne, Australia
https://emu.axiell.com/images/agorapro/attachments/62/notes.jpg

Hello All,

Just a few questions/comments on the proposed core conservation tabs.

First I should outline why the current Conservation Module is structured the way it is. When KE first spoke to Conservation staff, they indicated that when conservation was performed a formal conservation document was created in Microsoft Word (or some other word processor) detailing the treatment, etc. When asked whether it was possible to extract information into structured fields the general response was that this was not possible due to the differing work required for each project. In order to facilitate this work flow the Conservation Module does not have any treatment information (or very little) as it was intended that conservators attach their Word document to the conservation record (and use full text retrieval to allow searching of the documents via the Multimedia Repository).

It also became apparent that Institutions needed some scheduling mechanism that allowed curators to request conservation work to be carried out. Hence the current Conservation Module is designed as a request system so people can request conservation work, with the actual work described in a Word Document (with associated images, etc) attached to the request record.

Somme questions/comments about the proposed core tabs:

1. The proposed core conservation tabs are designed to hold the treatment information (amongst other information) within the conservation record. One concern I have is what will happen to information that does not fit nicely into the provided fields. Is it proposed that the conservation doumentation will still be attached to the record (and if this is the case are so many fields required)?

2. While not particularly useful to conservators, I still think there is a need for a "Request" tab where users can enter information requesting conservation work. In many Institutions this starts the conservation process (e.g. conservation work required for an exhibition object, etc).

3. It is unclear from the proposal, but from memory I think the discussion in Chicago decided, that there would be one object only per conservation record? Is this correct? If not then there are issues with repeating information which is recorded on a per object basis (eg. Storage requirements, etc). If there is only one object the * should be removed from the "Object" field on the "Record Info" tab.

4. The "Other Reason" field on the "Record Info" tab is an attachment field. What does it attach to?

5. I am unclear of the need for the "Photo Doc" tab. It seems to be a copy of the standard Multimedia tab. Is there a need for a copy (as opposed to using the Multimedia tab)? Also it is possible to store non-digital data in the Multimedia repository (as a Reference or a URL). Could someone please advise the purpose of this tab?

6. Should the information added on the "Recommendations" tab be fed back into the catalogue record? If not, how do you flag there are some special conditions regarding the use/handling of the object from the catalogue?

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

27-Sep-05 09:00:00
Category: Using EMu

Hello Tony,

XSLT support was added to EMu only in the last month. It has not been officially released yet (it is currently undergoing final testing). Once this is complete (in the next week or so) it will be available in the EMu 3.1.00 beta release. Since it is new I suspect there are not many/any clients who have stylesheets built.

Having said that though, the exporting of XML data has been part of EMu since very early days. With older releases you can still export XML to a file and then invoke an XSLT processor on it manually (see http://msdn.microsoft.com/XML/XMLDownloads/default.aspx for details and download Command Line Transformation Utility (msxsl.exe)).

If you are familiar with VBScript you could even write a script to automate the whole process via MSXML.

If you require more details please let me know.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

27-Sep-05 09:00:00
Category: Using EMu

Hello Tony,

As you are probably aware the internal data export format for KE EMu is XML. The XML produced is a simple format which is generally converted into the format required by the report writer (eg. ODBC for Crystal, Word, etc).

KE EMu 3.1 has added support for XSLT based reports. In essence this allows you to take the XML produced by EMu and run it through a "stylesheet" that transforms the XML into either HTML or another form of XML (eg MARC XML format). The XSLT "stylesheet" is a set of instructions used to manipulate XML from one format into another.

Using XSLT the EMu report data can be transformed into MARC XML format and displayed in a browser so you can view/save the output.

Regards

bern.
--
Bernard Marshall
KE Software (Australia)

    Posted By tony on 9/27/2005 7:49:54 AM

    We are hoping to export data from EMu in a MARC XML format, in order to load it into our ExLibris DigiTool (http://www.exlibrisgroup.com/digitool.htm) digital asset management software; has anyone got any experience or, better yet, Crystal Report templates for outputting XML (MARC or otherwise) from EMu?

    Cheers,

    Tony Gill
    Director, Gruss Lipper Digital Laboratory
    Center for Jewish History, New York, NY, USA
    tgill@cjh.org * www.cjh.org



Bernard Marshall
KE Software
Melbourne, Australia

22-Jun-05 09:00:00
Category: EMu Administration
Forum: EMu Admin

Hello All,

"Is adding a client specific adjustment free or is there a charge by KE?"

Depends on the stage of the project and the change required. If changes are made at the time of project implementation then they are part of the overall customisation costs (as specified in the System Migration documents).

If the system is already live and a small change is required then in some instances KE will make the change free of charge. Note that such changes are performed at a lower priority to paid changes and so the delivery time frame may be longer than for a paid change, as paid changes always take priority. I should also stress that this is for small changes only.

Even small changes require the production of a new release and it's installation. So while the change may be small the work required to package the change and install it may be significant.

To take your example about altering the format of the Brief Name. The following steps are required:

1. Alter Parties database code to calculate new Brief Name.
2. Package up change and create tagged release for client.
3. Install new release on client's machine
4. Perform data update so that new Brief Name format is applied to existing data.

The estimated time for such a change is about 4-6 hours.

Generally speaking the more changes that can be bundled together at the same time the cheaper the cost (as the release production and installation do not need to be duplicated).

Regards

bern.

Bernard Marshall
KE Software
Melbourne, Australia

14-Jun-05 09:00:00
Category: EMu Administration
Forum: EMu Admin

Hello All,

As Nick has pointed out the logic that generates the Brief name (and all other forms of a name, eg Full Name, etc) is stored in the underlying parties database. When a record is saved code is executed to calculate the Brief Name.

It is not possible to adjust the calculation of the Brief Name via the Registry as the logic used to calculate it does not have access to registry entries (registry entries are used to adjust client functionality, not database functionality).

The Brief Name can however be adjusted by adding a client specific adjustment to the calculation code. All calculated fields (eg Summary Data, Extended Data, Brief Name, Full Name, etc) have the ability to be adjusted on a per client basis. The adjustment resides in the underlying table (in the parties database in this case). Since the code lives in a database the changes need to be made by KE to ensure they are not lost when the system is upgraded.

Regards

bern.
Bernard Marshall
KE Software
Melbourne, Australia

16-Jul-03 09:00:00
Category: Archive
Forum: Archive

Hello All,

While it is possible to add support to limit the file size downloaded when
viewing multimedia, it may not give you what you want. The reason an image
size was used to limit image downloading is because most users want to limit
the size of the image they view to their screen size (either 800 x 600 or
1024 x 768, etc). As such it makes sense to not download images that are
greater than the screen resolution as this just wastes bandwidth.

The file size of an image is very dependent on the image itself. Take GIF
for example, which uses a 256 colour palette and indexes into the palette
for each pixel. It then compresses these pixel values. If all the pixel
values are the same (eg an all blue image, or one that contains a very large
amount of one colour) then a very small file is produced. If however each
adjacent pixel is a different colour then the compression is not as good
producing a much larger file.

Thus if file size is used it is possible to download a very large (but not
very useful in terms of displaying within your screen) image, or be
restricted to a very small one (if the image is very colourful) which is
really the one you want to see at a higher resolution.

Hence it was decided to use the image size to restrict downloads as this
provides the same image "resolution" to the user, rather than an arbitrary
resolution as determined by the file size.

As for setting different resolutions for a particular image type I am not
sure what is gained. While it could be added it still comes down to
providing a given image size (or "resolution") to the user. I am not sure
why you would want to vary this based on image sizes (I can see why it would
be useful if file sizes where used).

Regards

bern

21-Oct-02 09:00:00
Category: Archive
Forum: Archive

Hello Will,

> -----Original Message-----
> From: emu-users-bounce@keeper.mel.kesoftware.com
> [mailto:emu-users-bounce@keeper.mel.kesoftware.com] On Behalf
> Of Real, Will
> Sent: Monday, 16 September 2002 7:05 AM
> To: 'emu-users@kesoftware.com'
> Subject: [emu-users] Possible bug in Events attachements?
>
>
> Hello all,
>
> I noticed recently that I was able to attach the same object
> to an Event record more than once. I ran a report and the
> object in fact appeared on the report twice. I did not check
> to see if the same thing occurs in other modules with the
> same kind of attachments to the Catalog.
>
> Is there any possibility that the system could alert the user
> when the user attempts to attach a duplicate record, or even
> automatically filter out duplicates in the same way that it
> does with Merge Queries?
>

The current release of EMu does not check for duplicate attachments. The
main reason why the check is not performed is for efficiency. In order
to remove (or be notified of) duplicates it is necessary to check the
current list of attachments against the list being attached. While this
is reasonably efficient for small numbers of records, a significant
delay is introduced when larger numbers are involved (eg. adding 10
objects to an event that already has 1000 objects).

In order to get the 2.1.008 release finalised your suggestion has not be
incorporated. I have however added it to the KE EMu 3.0 list of changes
at which time we will investigate if an efficient solution can be found.

Regards

bern.
--
Bernard Marshall
KE Software
www.kesoftware.com

21-Oct-02 09:00:00
Category: Archive
Forum: Archive

Hello Rob,

> -----Original Message-----
> From: emu-users-bounce@keeper.mel.kesoftware.com
> [ mailto:emu-users-bounce@keeper.mel.kesoftware.com] On Behalf
> Of Robert Patterson
> Sent: Tuesday, 23 July 2002 11:36 PM
> To: 'emu-users@kesoftware.com'
> Subject: [emu-users] Re: Exhibition Ref No, Cat No
>
> The Exhibition Catalogue Number and other numbers which are
> specific to the Object are stored in our catalogue along with
> an associated field for the type of number. Our goal is to
> keep any object specific information in catalogue. We have
> already found it difficult enough to run proper reports on
> the Objects tab and its associated Notes in the Events
> module. We would continue to use the Catalogue to record any
> object specific numbers unless someone has come up with an
> easy way to associate the rows across those columns (Objects
> associated with Event, Notes)on an object level for reporting.
>

KE EMu does provide a way to "associate the rows across those columns (Objects associated with Event, Notes) on an object level for reporting". The reporting "Group" facility allows you to "group" a number of columns together to form one nested table for reporting (this is extremely useful with Crystal reports). The image below shows the setup used in the Events Worksheet to show the Object related information (Object, Event Section, Catalogue Number and Notes):





As you can see the fields (Objects: Event Section: Event Catalogue Number: and Notes:) are all "grouped" under the "Object" table. When the report is produced EMu creates a table (called Object.csv) that contains four columns of data, one key and a linkage key. Using Crystal reports you can then create a "Sub Report" that contains these four fields. For each event record generated, the sub report will be executed for each object associated with the event.

The "grouping" facility provides a simple mechanism for associating rows across columns.

Regards

bern.
--
Bernard Marshall
KE Software
www.kesoftware.com

16-Oct-02 09:00:00
Category: Archive
Forum: Archive

Hello Janet,

When you turn on the "Show Filled Tabs" facility it remains on in the current module for all subsequent searches (even if you close the module and re-open it later). It is a setting that applies on a per module basis, thus allowing some modules to have it on while others do not. It is a also on a per user basis.

Regards

bern.
--
Bernard Marshall
KE Software
www.kesoftware.com

14-Oct-02 09:00:00
Category: Archive
Forum: Archive

Hello Lynne,

A new field called "Loan Purpose" has been added to the Loans Module in EMu 2.1.008. It is a text field that allows the reason for the loan to be described in text (as opposed to a short list of "Loan Types").

Regards

bern.
--
Bernard Marshall
KE Software
www.kesoftware.com

04-Sep-02 09:00:00
Category: Archive
Forum: Archive

I am looking at incorporating it into the next release.

bern.

04-Sep-02 09:00:00
Category: Archive
Forum: Archive

Hello Lynne,

Are you looking at using the "Loan Purpose" as effectively a "Loan Description" field? That is, it contains a textual description of why the loan is being given. The current "Loan Purpose" field is used to indicate via a short list the reason for the loan (eg. Exhibition, Long Term Loan, Research, etc).

Are you looking for somewhere to put: "Long term loan to Prime Minister of Australia for the purpose of an upcoming visit from the Prime Minister of the United Kingdom"? In other words does it make sense to keep the present "Loan Purpose", but to add a new field where a verbose description of the reason for the loan can be added?

Regards

bern
--
Bernard Marshall
KE Software
www.kesoftware.com

  • Index
  • » Users
  • » bern
  • » Profile

Board Info

Board Stats
 
Total Topics:
601
Total Polls:
0
Total Posts:
1362
User Info
 
Total Users:
827
Newest User:
Marcus Swann (Axiell Melbourne)
Members Online:
0
Guests Online:
212

Online: 
There are no members online