AU715279B2 - A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources - Google Patents

A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources Download PDF

Info

Publication number
AU715279B2
AU715279B2 AU35581/95A AU3558195A AU715279B2 AU 715279 B2 AU715279 B2 AU 715279B2 AU 35581/95 A AU35581/95 A AU 35581/95A AU 3558195 A AU3558195 A AU 3558195A AU 715279 B2 AU715279 B2 AU 715279B2
Authority
AU
Australia
Prior art keywords
survey
document
accordance
question
database
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired
Application number
AU35581/95A
Other versions
AU3558195A (en
Inventor
Peter Barwell
Graham Peters
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tomohisa Technologies LLC
Original Assignee
Dolphin Software Pty Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from AUPM8133A external-priority patent/AUPM813394A0/en
Application filed by Dolphin Software Pty Ltd filed Critical Dolphin Software Pty Ltd
Priority to AU35581/95A priority Critical patent/AU715279B2/en
Publication of AU3558195A publication Critical patent/AU3558195A/en
Application granted granted Critical
Publication of AU715279B2 publication Critical patent/AU715279B2/en
Assigned to Tomohisa Technologies, LLC reassignment Tomohisa Technologies, LLC Alteration of Name(s) in Register under S187 Assignors: DOLPHIN SOFTWARE PTY LTD
Anticipated expiration legal-status Critical
Expired legal-status Critical Current

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Transfer Between Computers (AREA)

Description

WO 96/08779 PCT/AU95/006 1 -1- A METHOD AND APPARATUS FOR PREPARATION OF A DATABASE DOCUMENT IN A LOCAL PROCESSING APPARATUS AND LOADING
OF
THE DATABASE DOCUMENT WITH DATA FROM REMOTE
SOURCES
The present invention relates to a system and method for obtaining and collating information from a plurality of computer users. More particularly, but not exclusively, the invention relates to a method and system for asking questions of computer users having access to electronic mail, and to a method and system for collating their responses and presenting them in a database.
In recent years, developments in communication systems and computer technology have enabled communication between computers over vast distances utilising communications networks. Employing electronic mail and like systems, it is possible for a user of a personal computer (or any other type of computer) with access to a modem or other network communications interface, to communicate with any number of users of remote computers via the internet. Distance is no barrier. Further, in small or large companies electronic mail networks are often used to connect user terminals to enable communication in-house between users.
The possibility of communication with any number of users having access to electronic mail opens up vast information gathering potential.
To obtain and process such large amounts of information, however, presents a number of problems.
Using electronic mail and like systems task for a user of a computer may ask a question or questions of a relatively large number of remote users, by addressing mail including a question or questions to those users.
The task of processing responses to the question or questions becomes extremely difficult. Where a large number of users provide responses, the task can be almost impossible. This difficultly will be aggravated where a large number of questions are asked. The amount of information to process can be staggering and the user who asked the questions may be faced with the onerous task of sorting through a large amount of mail, item by item, to SUBSTUMTE SHEET (RIe 26) WO 96/08779 PCT/AU95/00615 2 extract and collate the information he requires. Where a large amount of information is required from a large number of people, it is impractical for one person to deal with.
Consider the example of opinion polls, whether for marketing, political or other purposes. Presently, large numbers of field operators are required to gather numerous responses from members of the public. Once those responses have been gathered, hundreds and even thousands of man-hours are required to process the responses to extract the required information and present it in a form which allows for analysis. Thousands of questionaries may need processing, each with many questions and responses. It should also be noted that the time taken to gather and process the responses can mean that the information finally revealed from the opinion poll has lost it's relevance or at least become less relevant. Consider a political opinion poll, where peoples opinions may be varying from day to day, significantly enough to affect the election result. An opinion poll which takes two or three days to process will be out of date and irrelevant by the time the results are available for publication.
There are really two major problems with presently available "surveying". Firstly, there is the problem of how does a person ask the questions of all the people he wishes to ask the questions of, without expending many man hours or employing a number of people as field operators? This problem is somewhat alleviated by the existence of systems such as electronic mail, which enable a person to select a number of people to send a single document to. There is the problem here, however, that no convenient means exists of asking a series of complex, linked questions. For example, a persons answer to a particular question may determine whether or not a subsequent question is relevant to that person. If the person is asked whether they are taking leave from employment that year to go on holiday, and SUBS2rIJTM SHEET (Rule 26) WO 96/08779 PCT/AU95/006 1 -3 answer no, there is no point in asking them where they are going on holiday. Electronic mail like communication systems do not deal with that problem.
Even though electronic mail and like communication systems may be used to somewhat alleviate the problem of getting a question to a number of people, such systems do nothing to alleviate the problems associated with processing the answers. There is no alternative but for the person asking the question to sort through return mail item by item to, first of all, identify which mail is in response to his questions, and, then, to collate and process the responses to enable a meaningful analysis.
These problems are not limited to large surveys, such as political opinion polls. Even quite small surveys can present problems of time management. For example, imagine if a director of a company with fifty or so employees wishes to plan staff leave for the year. He has to ask all his employees when they would like to take leave. He may also wish to know where they want to go.
He can do this by sending out a memo and awaiting the results, or perhaps even sending out a memo on intra office computer mail and awaiting the results. He still has to process all the results. Processing results, analysing them and planning the leave even of only fifty people can be quite time consuming, particularly for a person with many other responsibilities who does not really have the time to spend on such a task. Further, the managing director may wish to ask many different types of questions of his staff on a on-going day-to day basis. His only option for processing the responses is to do it himself, item by item, or, if he has not got time (as is usually the case) to employ somebody to do it.
In a preferred embodiment, the present invention advantageously provides a way of asking a question of any number of users, preferably via electronic mail or an equivalent communications media, and automatically SUBSTMTUTh SHEET (Rule 26) 4 Receiving, identifying and processing responses to the question.
From a first aspect, the present invention provides a system for obtaining and collating survey information from a plurality of computer users, said system comprising a processing apparatus including an input means via which a survey author may input data, and a survey authoring means enabling construction of a survey questionnaire document for each of a plurality of associated surveys, each survey questionnaire document including at least one question, for the respective associated survey, formulated in response to data input by a survey author; transmission means for transmitting the survey questionnaire document for each survey to a plurality of respondents for each survey; and a processing apparatus including a collation means arranged to receive transmissions from the transmission means, to identify a response document responsive to a survey questionnaire document, which include responses to the at least one question from the plurality of respondents, and to process the response document for at least one of updating records and adding records to a database associated with the survey for the particular 25 survey document, in accordance with the responses.
A "survey author" is any person who wishes to use the survey document authoring means to construct a survey questionnaire document.
The transmission means is preferably electronic mail.
Please note that the terminology electronic mail is not only used in a narrow sense, but used in a more general sense, to mean any way of communicating between computer users utilising telecommunications media (telephone, optical fibre, satellite, etc.) which enables a user or group of users or a location a "relative" location such as a "bulletin board" to be designated by an address, -\GHSYDNTI\Users\Speci\200 299\250- 29929821.doc preferably a unique address. The transmission means may even include transmission of floppy disks including the response document, by ordinary mail, although this is not preferable.
Where electronic mail is employed, the collator means is preferably arranged to monitor all electronic mail being received by the processing apparatus in which the collator means is included, to sort the electronic
S.
S C. f *oo \\GHSYDNT\Users\Speci\200 299\250 299\2982I.doc WO 96/08779 PCT/AU95/00615 mail to identify response documents. Electronic mail not including a response document is not processed any further by the collation means. Where a response document is identified, further processing takes place.
Preferably, the further processing includes locating the database which is to receive the responses to the survey document, and loading the database in accordance with the responses.
In at least preferred embodiments, the apparatus and method of the present invention advantageously enables the user of a processing apparatus such as a computer to prepare a survey document asking for information on any subject he desires, utilising at least one question or any number of questions determined by the user, to transmit the survey document to any number of remote processing apparatus, preferably by electronic mail, to receive and automatically collate response documents containing or specifying responses to the survey document provided by users of the remote processing apparatus to which the survey document is transmitted, and loading the database with answers, so that the answers are all conveniently presented in a database for subsequent analysis.
The invention preferably provides the ability to gather information very easily and quickly over vast distances and to automatically present the information in an already-collated and format. It can be used for any number of information gathering applications.
The information obtained by embodiments of this invention is preferably "fresh". It can be obtained very quickly and is therefore more likely to be relevant than information obtained by prior art methods, such as opinion polling. Because the information is automatically processed and presented in a database, there is no need to undertake the laborious job of individually processing each response document. An immense amount of time can be saved. Because of the automatic collation, a single survey authoqr may poll SUBSTITE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 6 thousands of respondent users, their responses being processed for him automatically almost as soon as they arrive. It can be considered akin to the survey author simultaneously having a "conversation" with thousands of people. Instead of the responses being a jumble of noise, as it would in a real life conversation with such a crowd, the user receives the information presented in an immediately understandable format of his choice.
The database used may be any type of computer data storage arrangement. It may be a relational database or series of databases of the type presently known. The database preferably includes a Plurality of fields for receiving answers dictated by the responses.
Each database field for an answer is preferably uniquely identified by a column label, which may relate to the question asked, and a "row" label which relates to the identity of the respondent user. The terms "columns" and "rows" are not used in any limited sense to indicate that all the databases are physically matrixes (although they can be represented that way), but to indicate that each answer field has a unique identifier. The row label is preferably the electronic mail name and address of the respondent user. One or more "columns" in the database may be required to contain the row electronic mail address.
Note that the possibility exists of allowing for more than one answer by the same user to the same survey document. For example, a respondent user may be asked to answer the survey document every week. In that case, the system may be arranged to override the previous weeks data field values or add a further row, including the latest response and identifying it by date and time of response as well as electronic mail name and address.
The data base field values may be derived from the response provided by the respondent user or may actually be the response provided by the respondent user, where the response is text information.
Once the database has been loaded with values, sUBSTTrme SHEET (Rule 26) WO 96/08779 PCT/AU95/0061 -7then the information can be manipulated in any way the user requires, utilising all the database facilities.
For example, graphical plots may be made of responses.
A particular advantage of using E-Mail is that it is possible to store the address of respondent users in the database, for later use. It would then, for example, be possible to mail back further questions to persons giving a particular response to one or more questions in a previous survey document. For example, if a particular survey question was "Do you like chocolate", and half the respondents said yes and the other half said no, it would be possible to prepare a further survey document asking; "Would you like to have a free sample of our new chocolate bar brand and only mail it to the respondent users who said "yes" to liking chocolate.
Using the properties of databases the second survey document could be prepared and transmitted very quickly, merely by instructing the processing apparatus that the survey document is only to go to those people that said yes to the "Do you like chocolate?" question. This illustrates the "conversational" advantages of at least preferred embodiments of this invention, as discussed previously. It is possible to obtain responses from people in a very short time period and use the information from those responses to ask further questions.
The system therefore preferably has the ability to nail two respondents of previous surveys, to facilitate this "conversational" style of communication.
Note that the process of "conversation" may be particularly important when the analysed data shows a trend that the Survey Author did not expect and did therefore not include any questions to cover this eventuality. He can produce further survey documents to send to the respondents including those questions that he did not include in the first place. Conversation is further facilitated by the ability to choose which respondents to mail to, may be depending .upon their SUBSTnnTUTE SET (Ru 26) WO 96/08779 PCTIAJ95/00615 8 responses to previous questions, combined with the ability to store electronic mail name and address lists of respondents.
The database is preferably created automatically by the survey authoring means, preferably when the survey document has been completed, and, more preferably, immediately before transmission of the survey document.
It is not generally necessary for the user to input any data specifically to prepare the database, although a facility is preferably available to enable the user to choose labels for database columns and/or rows.
As the survey author constructs the survey document, the survey preparation means is preferably arranged to allow labels for database columns to be inserted. If the user does not wish to insert any labels himself, the survey document preparation means is preferably arranged to select the headings itself, i.e., by default.
The database is preferably constructed as a matrix, having at least one question column and a plurality of user rows, the rows and columns specifying a plurality of database answer fields for receipt of answers (being derived from the respondent users responses) to the at least one question, each row being associated with a particular respondent user who may receive or has received the survey document and may provide or has provided an answer document (response document). The question column is associated with the at least one question asked. It will be appreciated, as discussed above that the matrix format is preferred, but it will also be appreciated that the invention extends to cover any type of database structure.
The survey questionnaire *document or a subset thereof may be stored to enable re-transmission of the survey document at a later stage, as a reminder should any of the pre-selected users not have provided a response document. The database is also preferably constructed just prior to transmission. Where the SUBSTur sHEET (Rule 26) WO 96/08779 PCT/AU95/00615 -9 respondent user identities are known the entire database may be constructed (pre-populated) It will be appreciated that the option does exist of constructing a database as answer documents are received and processed, a particular user row will only be added when an answer document is processed. This embodiment may have applications where, for example, the survey document is posted on a "bulletin board" for use by any persons who wish to answer the survey. Each row or row label will therefore only be added as responses come in and are processed by the collation means. The response document preferably includes an identifier identifying the database survey it belongs to, so that the collation means can load the appropriate database with the response and construct a further row label.
The use of electronic mail enables selection of any type of user, group of users, posting on a bulletin board, etc.
By "user" is meant any natural person or group of persons, company or generally an "identity" who may be specified by the survey author.
The survey document may be saved on a respondent users system this enables the remote user (respondent user) to send responses back to the collator when and as often as desired. This could be useful in any circumstances where data is collected on a regular basis.
For example, recording telephone sales inquiries.
The survey document may include any number of questions and may also include branched-to questions linked to another question or questions such that the branched-to question or questions will only be required to be answered by a respondent user if the respondent (remote user) user gives a predetermined answer to the question or series of questions to which the branched-to question is linked. A survey document may include a string of questions linked to each other and the branched-to question or questions may be asked if the remote user has given one or more predetermined answers suBSTITE SHEET (Rule 26) WO96/08779 PCT/AU95/00615 10 to the string of questions and to the question to which the branched-to question is linked. In a preferred embodiment, the survey document is presented to the respondent user as a plurality of screens (where there are a plurality of questions), each screen asking, generally, one question. A screen presenting a branched-to question will not be presented by the display to the remote user unless he makes one or more predetermined answers to a previous question or questions. Whether a branched-to question is presented may also depend on whether another or other questions have been presented or will be presented to the remote user (respondent user) In other words, if the respondent users answers have meant that he has "bypassed" a question or questions, then a particular branched-to question may be presented. Note that it is also possible to ask a number of questions on a single screen and whether a particular question is presented may depend on his answer or combination of answers to any one or more of these questions. The survey document in this preferred embodiment is "dynamic", in the sense that it will only present questions to a respondent user if the respondent user has made a predetermined answer or answers to a linked question or questions. The survey document will guide the respondent user on a path through the document which is determined by the respondent users answers. Questions which are not relevant to the respondent user, as determined by his answers to other questions, will never be asked of the respondent user.
This has the advantage that it is not necessary for the respondent user to wade through a series of displayed questions to find the ones that are relevant to him. He will be automatically guided through the document. It saves time.
The survey authoring means preferably includes a branch control means which enables construction of a complex linked survey document structure on the basis of data input by the survey author. The branch control SUBSTITUTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 11 means includes branch control operator commands which are selectable by the survey author to govern the link structure. These are a tools which the survey author can use to construct a complex document with many pathways through it.
Preferably, the step of preparing the survey document includes specifying an allowable answer or a plurality of allowable answers to the at least one question, so that remote users of may specify at least one of the allowable answers, when processing the survey document on their computer(s). Preferably, a database field value is specified for each allowable answer. In a preferred embodiment, when the answer document is processed, the database field value is entered in the appropriate database field.
The field value may be comprised of numeric or alphanumeric characters, may be any desired symbol or symbols. In a preferred embodiment, the specified field value for a particular question may be generated automatically from components of the question itself, components of the allowable answer, or may be an automatically generated default.
The allowable answers in some cases may be text to be inserted by the respondent user. In these cases, a length for the allowable text may be specified by the survey author. The database field value will be whatever text the respondent user inputs, within the allowable field length. This allows for anything from simple answers to more complicated text answers.
Where a question or questions is not asked of a particular user, it may have been bypassed because the users responses to other questions in the survey document meant that it was not appropriate for him to be asked that question or questions (see above) then, preferably, a "never seen" value is entered in the appropriate database field on collation.
The person accessing the database can therefore see at a glance whether or not a particular user actually MBSTTuTE SHEET (Re 26) WO 96/08779 PCT/AU95/00615 12 "saw" a particular question. The never-seen value may include any choice of character or group of characters and may be specified by the survey author or as a default by the survey document preparation means.
The step of preparing the plurality of allowable answers may include preparing a grid, having rows and columns providing a matrix of cells for receiving the allowable answers. A title head is preferably prepared for each row and column in the matrix.
In a preferred embodiment, there are three types of grids which may be applied. An option buttons grid, a numeric field grid and a check box grid.
For an option buttons grid only one question column is generally required in the database even though there may be a plurality of cells in the grid for receiving the allowable answers. Preferably, the field values associated with each allowable answer are taken from components of the row and/or column heading for each particular cell. Option button grids may also be provided including sub-groups of option buttons each requiring an answer. In this case, there will be as many question columns in the database as there are groups of option buttons requiring an answer. The groups are preferably in rows and columns.
For numeric field grids and check box grids, in the preferred embodiment a question column in the database is required for each cell of the grid. The headings of these question columns may preferably be formed from components of the row and/or column head of the grid.
Preferably, the step of preparing the Survey Document further includes the step of scanning the Survey Document when it has been completed by the survey author and identifying any errors in the question structure, utilising a scan test means included in the processing apparatus including the survey authoring means.
Generally, each question in the Survey Document must come from at least one previous question and lead to at least SUBSTrrTE SHEET (Rule 2h WO 96/08779 PCT/AU950615 13 one further question, apart from the first and last questions in the Survey Document which will come from the start of the document the first question will be designated by the author of the document. In fact, in the preferred embodiment, it is open to the author to formulate the questions first and then designate their sequence in the structure of the document separately) and lead to "finish", respectively. In a complex document including branched-from and branched-to questions there will be a number of different "pathways" through the Survey Document. It will be appreciated that the structure can be extremely complex. It is quite possible that during preparation of the Survey Document, the local user (the survey author) will make an error in preparation which will lead to one or more of the pathways being incomplete or broken, a question exists (other than the first question) which does not come from any other question (an "orphan") or which does not lead from all the questions it is supposed to lead from, and questions may exist which do not lead to any other question ("cul-de-sacs") or do not lead to all the questions they are supposed to lead to. Any such errors should be identified before the Survey Document is transmitted. This is preferably done by applying a scan test function, which scans through all the pathways in the document to identify errors, particularly of the "orphan" or "cul-de-sac" type, although it may identify other "mechanical" errors of this type which may lead to breakdown of pathway in the Survey Document. The scan test means applying the scan test function will also test for missing, duplicate and illegal database names the database name not allowed by the particular database which is being constructed, in DOS only eight characters are allowed for a database name).
The scan test function preferably also provides a display listing of all the variable information in the Survey Document, variable information generally being any item in the document that the local user may. exercise a SUBTITUE SHEET (Rui M WO96/08779 PCT/AU95/00615 14 choice in selecting, for example, "Goto's", whether the question is branched to or not, database field titles, etc., but does not display, in general, any textual information from the question content of the Survey Document. The listing enables the local user to check that the mechanical structure of the document (the pathways leading through the Survey Document) is correct, by visually checking the listing. Further, in one embodiment, the items in which errors have been identified are indicated in the listing, preferably by highlighting these particular items. By clicking on any of the items on his screen the local user will automatically be taken to the actual item. It is therefore possible for him to easily be able to check the document and correct any errors indicated.
In the preferred embodiment, the steps of preparation of survey questionnaire document, transmission, processing of the survey document by a respondent user (remote user) return of the survey document to the collation means and collator, operate as follows: i. A survey master document is originally constructed and includes operator commands for controlling the display of the respondent users computer to display questions, and, in response to the remote users input, to display selected ones of the questions depending upon the linkage structure of the document. It also includes a return E-Mail address for the collation means.
E-Mail addresses of respondent users are inserted prior to transmission. The database is constructed from instructions input by the survey author and/or defaults. The survey questionnaire document (preferably a subset of the master) is transmitted and at the same time saved so that reminders can be transmitted if required (note the survey document is preferably transmitted as a "subset" SVQ, of the.originally SUBSTITUTE SHEET (Rule 26- WO 96/08779 PCT/AU95/00615 15 prepared master, sum, and it is the SVQ which is stored). In one preferred embodiment, the survey document is transmitted with respondent control means, used to control the respondents terminal to run the survey document. In an alternative embodiment, a respondent control means is pre-loaded on the respondents computer, and is arranged to control the respondents terminal to process a survey document when one is received.
At this time the database is preferably constructed.
2. The respondent users terminal is controlled from commands in the survey document and the respondent control means to process the survey document and produce a response document which includes responses based on data input by the respondent user. The response document is automatically transmitted back to the collation means address on completion of a response by the respondent user. The survey response document may include a database construction means which enables construction of the database. This is useful where a disaster has occurred and the database has "crashed", for some reason. It may also be useful where the collator has moved location and does not have access to the database or does not know the databases address.
3. The collation means monitors electronic mail at the processing address including the collation means and identifies response documents. It checks the identifier including the response document to identify the database it belongs to.
It then locates the appropriate database and commences to process the survey document to load the database with answers determined by the respondent users responses.
Note that the collation means and survey author SUBTTE SHEET (Rule 26)
A
16 may be on separate processing apparatus. The survey author may also be a different person from the person who is accessing the database to obtain the information. For example, the survey author may be a pollster employee, and the person accessing the information may be the pollster. The survey author can put together the surveys on the basis of instructions provided by the pollster as to what type of information he wants. All the survey author needs to know about the collation means is the collation means electronic mail address. The database may be loaded on the same processing apparatus as the collation means or on any other processing apparatus.
The collation means may be collating any number of surveys. It may collate surveys for any number of survey authors.
The response document may be encrypted for security reasons.
Preferably, the collation means is also arranged to identify electronic mail addresses of respondent users from response documents are attached messages and to load the database with the electronic mail addresses. These electronic mail addresses can then be easily accessed for future surveys.
i r Where a range of databases are used, a great a 25 deal of information can be obtained over time about a particular respondent user who has received a number of surveys.
All "documents" are preferably in "data processing representation" form. In other words, they are in an electronic or other form able to be manipulated by a data processing apparatus, a computer, and, in 0* some aspects, to control a computer. -By "computer" is meant any processing apparatus which is able to manipulate data. This includes computers which use other means apart from electrical signals to process data.
From a second aspect, the present invention provides a processing apparatus for enabling construction of a survey questionnaire document, comprising an input means via which a survey author may input data, a survey authoring means enabling construction of a survey questionnaire document for each of a plurality of associated surveys, each survey questionnaire document including at least one question, for the respective associated survey, formulated from data input by the survey author and a location address of a processing apparatus including a collator means arranged to collate response documents produced by respondents processing the survey questionnaire document, by at least one of updating records and adding records to a database associated with the survey for the particular survey questionnaire document, in accordance with the responses.
The survey authoring means may include any or all of the features of the survey authoring means discussed above, for preparing a survey document with any or all of the ~20 features of the survey document discussed above.
From a third aspect, the present invention provides a survey questionnaire document structure, the document being employable by digital document processing 35 systems to gather information from a plurality of respondent computer !i 25 users, the document structure including: a location address for a collation means for receiving response documents to the survey questionnaire document from respondent users, and the collation means being arranged to add to or update a database in accordance with responses from the response documents; and directions enabling control of a computer to display one or more questions to-be answered by a user.
From a fourth aspect the present invention provides a processing apparatus for collating response documents received from a plurality of respondents in response to their receiving a survey questionnaire document from a ©\\GHSYD NT\UsersSpeciOO- 299250 29929821.do 0 18 processing apparatus in accordance with claim 57, including a collator means arranged to monitor incoming transmissions from a transmission means and identify response documents transmitted to the processing apparatus, which include responses, to process the response documents by identifying the associated survey and to add to or update a database associated with the survey in accordance with the responses.
From a fifth aspect the present invention provides a processing apparatus for receiving and processing survey questionnaire documents produced by an apparatus in accordance with claim 57, including a respondent control means arranged to process the survey questionnaire document in accordance with data input by a respondent, to produce a response document including a response to the at least one question.
From a sixth aspect the present invention provides a computer-readable memory including a set of instructions for enabling a computer to enable construction of a survey a.
20 questionnaire document, the document being employed to gather information from a plurality of respondents, the instructions providing the computer with a survey authoring means enabling construction of a survey document for each of a plurality of associated surveys, each survey document 25 including at least one question, for the respective associated survey, formulated from data input to the computer by a survey author, and a location address for a collation means for receiving and collating response documents from respondent users in response to their processing the survey questionnaire document by at least one of updating records and adding records to a database associated with the survey for the particular survey questionnaire document in accordance with the responses.
From a seventh aspect the present invention provides a computer-readable memory storing a set of instructions that S- provide a computer with a collator means, for collating N ,\GHSYDNTk\Users\Spei\2OO 299250 299\29821.doc response documents in response to a survey questionnaire document produced by a processing apparatus in accordance with claim 57, the collator means operating the computer to monitor incoming transmissions for response documents to identify the survey associated with the response documents, and to add to or update a database associated with the survey in accordance with responses.
From an eighth aspect the present invention provides a computer-readable memory storing a set of commands that provide a computer with a respondent control means for processing a survey questionnaire document produced by the apparatus of claim 57, to produce a response document including a response to the at least one question, to be transmitted to a location of a collation means for collating responses.
From a ninth aspect the present invention provides a method for obtaining and collating survey information from a plurality of computer users, comprising the steps of operating a processing apparatus including an input means 20 via which a survey author may input data, and a survey authoring means enabling construction of a survey questionnaire document for each of a plurality of associated surveys, in order to produce a survey document ~including at least one question for a respective associated 25 survey; transmitting the survey document to a plurality of computer users; operating a processing apparatus which includes a oe.collation means arranged to receive transmissions, to identify a response document responsive to the survey questionnaire document, which includes responses to the at least one question from a plurality of respondents, to process the response document for at least one of updating records and adding records to a database associated with the survey for the particular survey document, in .c accordance with the responses.
S \\GHSYDNTI\Uwrs\Speci\200 -299\250 299\2982.doc 19A From a tenth aspect of the present invention provides a method of controlling a processing apparatus to construct a survey questionnaire document for obtaining information from a plurality of respondent users, the processing apparatus including an input via which a survey author may input data, and a survey authoring means enabling construction of a survey questionnaire document for each of a plurality of associated surveys, in order to produce a survey document including at least one question for a respective associated survey the method comprising the steps of: controlling the processing apparatus to construct a survey questionnaire document including at least one question formulated from data input to the processing apparatus by a survey author; and to include a location address of a processing means for collating responses to the survey from respondent users to add to or update a database associated with the survey p for the particular survey document, in accordance with the 20 response.
From an eleventh aspect of the present invention provides a method of collating response documents prepared by respondent users in response to a survey document constructed in accordance with claim 64, the method comprising the steps of: controlling a processing apparatus to monitor incoming transmissions to the processing apparatus and identify response documents to the survey questionnaire document is transmitted to the processing apparatus and to process the response documents to add to or update a database in accordance with the responses to the at least one question.
The thirteenth aspect of the present invention provides a method of controlling a processing apparatus to process a survey questionnaire document produced in 35 accordance with the method of claim 64 to produce a \\GHSYDNTI\Users\Speci\200 299\250 299\29821.doc response document formulated from data input by a respondent user, the method comprising the steps of: controlling the processing apparatus to display the at least one question for input of a response by the respondent user; and controlling the respondents computer to prepare a response document for transmission to the collating processor.
Features and advantages of the present. invention will become apparent from the following description of an Features and advantages of the present invention will become apparent from the following description of an embodiment thereof, by way of example only, with reference to the accompanying drawings, in which: Figure 1 is a schematic block diagram of a system in accordance with an embodiment of the present invention incorporating apparatus in accordance with an embodiment of the present invention; Figures 2 through lie show samples of video display screens showing information presented during various stages of preparation of a survey document and eoo..: answer document (response document), such as may be S 20 presented by a display means of a processing apparatus in accordance with an embodiment of the present invention; Figure 12 illustrates a number of displays which may be presented by a display means of an apparatus in accordance with an embodiment of the present invention, 25 illustrating operation of a collation means in accordance .with an embodiment of the present invention;
S.
Figure 13 is a functional diagram of operation of an embodiment of the present invention; S"Figure 14 is a schematic representation of a 30 database document which may be prepared in accordance with an embodiment of the present invention; Figure 15 is an illustration showing the various menu options available to a Survey Author in accordance with a preferred embodiment of the present invention; and Figure 16 graphically illustrates available setting options for the structure of the survey document T of the preferred embodiment, and their operation.
SThe following terminology is used WO 96/08779 PCT/AU95/00615 21 interchangeably in this document for specifying the same thing.
Response document answer document.
Author local user.
Respondent or respondent user remote user.
Survey authoring means survey document preparation means.
Local processing apparatus processing apparatus including survey authoring means.
Remote processing apparatus respondent users processing apparatus or computer.
Response document answer document.
Responses answers.
In figure 1, reference numeral 1 illustrates a local processing apparatus (a processing apparatus including the survey document preparation means) in the form of a personal computer comprising a data processing means 2, an input means 3, 4, comprising a keyboard 3 and mouse 4, and a video display unit 5. The local processing means 1 is connected by a communications system 6 to a plurality of remote processing apparatus (a respondent users processing apparatus), each indicated by blocks 7 through 12. It will be appreciated that the local processing apparatus 1 may be connected to any number of remote processing apparatus by any type of communication system 6. Blocks 7 through 12 are given as examples only. Note that the communications system 6 is an illustration only. Preferably, communications is via E-Mail (electronic mail). E-Mail can employ telephones, satellites, optical fibres, etc. All that is required for a user to be connected to E-Mail is that he have an E-Mail address. The E-Mail user may log onto any computer terminal and receive mail.
The local processing apparatus 1 includes a survey document preparation means to enable preparation of a survey document containing at least one question and preparation of a database document having at least one database answer field for receiving answers, to the at SUBSTITMLTE SHEET (Rule 26) WO 96/08779 PCT/AU95/006 1 22 least one question, and a collation means for monitoring incoming E-Mail to identify response documents produced from processing of a survey document, to locate the database relating to the particular survey, and to process the response document to load the at least one database answer field with the answer.
Each of the remote processing apparatus are programmed with respondent control means to enable a respondent user to process a received survey document and produce an answer document (response document) from the processing, including responses (answers) formulated from data input by the user of the remote processing apparatus.
In a preferred embodiment, the survey document ("survey") can be prepared and launched using WindowsTM with access to mail. To prepare the survey document, in a preferred embodiment a Survey Authoring (SA) module is utilised. The following is a description of preparation of a survey document using a Survey Authoring module in accordance with an embodiment of the present invention.
Throughout the description representations of examples of video display unit screen displays produced by this embodiment of the present invention will be referred to, as in figures 2 through 11, to illustrate operation of the invention.
After launching the Survey Author Module from Window Program Manager the user of the local processing apparatus (Item i. Figure the author ("local user"), will see the Survey Author Module screen featuring a Menu Bar and Tool Bar. Fig 4. Also, on launching, the Survey Author Module automatically creates a new survey document. In order to continue authoring this new survey document the author (local user) will need to create the first question. To do this he will choose the QUESTION/NEW QUESTION menu option (Figure The author (local user) will now be presented with the first blank question box (a frame section on the screen) (Figure 2).
This question box contains the standard NEXT and PREVIOUS SUBSTmuTE SEET (Rule 26) WO 96/08779 PCT/AU9/00615 23 buttons as well as an area for question text.
As the new question box appears, menu options for a range of question types for the author (local user) to choose from are enabled by the menu system. These types are: Option Button With a series of Option Buttons the software will accept only one selection by the eventual respondent (remote user). It is like a multiple choice question. The author (local user) will need to make this menu selection for each option button he requires in the current question box.
Check Box A check box enables the eventual respondent (remote user) to enter a "check" (a cross mark signifying a yes or true status) in each check box placed in the question box by the Survey Author (local user).
Numeric Field Same as Check Box except that the respondent (remote user) will enter numbers instead of "checks".
Text Field Same as numeric field except that the respondent (remote user) will enter any alpha numeric characters rather than numbers.
Option Buttons Grid Grids in general are the same as the first three possible question types mentioned above. The difference is that they are arranged in a grid format. Therefore the author (local user) needs to specify the number of items and the arrangement of those items within the question box. For example: he may specify 12 buttons and an arrangement of 3x4, 4x3, 2x6 or 6x2.
Check Box Grid The same as the Option Buttons Grid except that it behaves like a series of Check Boxes.
An example of a Grid Check box is given in Figure 6.
Numeric Field Grid The same as the Option Buttons Grid except that it behaves like a series of Numeric Fields.
vTTRArrrrrFr QTPP rm Da. 14 WO 96/08779 WO9608779 PCTAU95/0061 24 The question format may include any combination of the above, a combination of an option buttons grid and a check box grid.
Figures lla through lb illustrate, respectively, means which show dialogue boxes for: i. one option button properties (Fig llb) for specifying properties of option buttons.
2. Numeric field properties, for specifying properties for a numeric field (Fig lic).
3. A text field properties dialogue box for specifying properties for a text field (Fig lld) 4. A label properties dialogue box (Fig le) for specifying "label" for a text field.
Displays for option buttons grid, check box grid and numeric field grid are not shown. The requirements for such a display, however, are apparent from the previous and following description on how the display looks is generally a matter for taste of the software engineer and the requirements of the system interface.
To construct the survey document, the survey author will need to specify the following: Question title (optional); Question text; Option, check, numeric or alpha label text or any combination thereof; Where to GO TO after this question (optional). This would be inserted where the author wishes to link the question to another see later; Alter any database column names (optional); Select or alter default on selected database field values (optional); and Select or alter default on never seen field values (optional).
The author (local user) may specify any one of the above types of question. Lets say the author (local SUBSTrtmTE SHEET (Re 26) WO 96/08779 PCTIAU95/00615 25 user) wishes to use three "Option Buttons" because he wants to give the respondents (remote users) three possible options to choose from for a specified question.
To do this the author (local user) could use their mouse (Item 4. Figure to select ITEM/OPTION BUTTON from (see "ITEM" menu, Figure 15) the menu bar. They would need to do this twice. The first click will cause display of two option buttons. The second will cause display of a third option button. Alternatively the author (local user) could use their mouse to click twice on a "Option Button" Icon on the Tool Bar. Once the author (local user) has finished one of these two actions the frame work of his first question is complete.
This first question contains three main features (see Fig. 7): i. Two buttons at the bottom of the screen marked "Next" and "Previous" 2. Three equally spaced "Option Buttons" with "Option Button Text 01", "Option Button Text 02", "Option Button Text 03" printed next to them.
3. A "Question Text" area towards the top of the dialogue box.
The author (local user) is now required to edit the variables for this question box. To do this the author (local user) double clicks on any clear space within the question box. The Question Properties dialogue box will appear on the screen containing the following variables Question Text This is the area that the author (local user) enters the question that he wants the respondents (remote users) to answer. To enter the "Option Button Text 01", "Option Button Text 02", "Option Button Text 03" printed next to them.
3. A "Question Text" area towards the top of the dialogue box.
The author (local user) is now required to edit the variables for this question box. To do this the SUBSITTE SHEET (Ru 26) WO 96/08779 PCT/AU95/0061 26 author (local user) double clicks on any clear space within the question box. The Question Properties dialogue box (Figs. llf and lg) will appear on the screen containing the following variables Question Text This is the area that the author (local user) enters the question that he wants the respondents (remote users) to answer. To enter the question text the author (local user) needs to select with his mouse the words "Question Text" and then over type it with the new text.
In this example the author (local user) wishes to obtain information from respondents (remote users) as to what leave they will be taking between May and July.
The respondents (remote users) may all belong to the same company, for example, and the author (local user) wishes to plan company leave. The author (local user) enters the following question text: "Will you be taking leave from work between 1 May 94 and 1 July 94?" Question Title These titles are used as reference to their particular question. These references are used in question selection menus, for selecting a current question to edit, and to nominate the branching of the questions (see later) The system generates a default "Question No. 001" where the number part increments for each new question box. The titles maybe edited but must be a unique reference within the survey document. In this example the author (local user) will change the Question Title to "LEAVE" The next step is to enter the relevant defaults for each of the three Option Buttons. To do this the author (local user) simply points at the first Option Button and double clicks with the mouse. The Option Button Properties dialogue box will appear. The main features of this dialogue box are: Option Text This is where the author (local user) will specify the, text that SUBST.TIE SHEET (Rule 26) WO 96/08779 PCT/AU9500615 27 corresponds to that particular option. In the question text the author (local user) asked about staff leave. He should now nominate the text for one of the options that the respondents(remote users) will be able to choose from.
For Example: "Yes I will be taking leave during this period".
Database Field Name This is the name of the column in the database to be prepared in accordance with this embodiment, that will contain answers to this question (the "database column heading"). The column heading may be prepared on the basis of data input by the author (local user) specifically for the column heading. In a preferred embodiment, a default column heading is inserted should the author (local user) not wish to input his own. More preferably, the default may be automatically prepared from components of the question text. This is particularly useful for the check box grid and numeric field grid type questions. Each check box grid or numeric field grid comprises a matrix of rows and columns, each row and column having a header title. Each point (cell) designated by the row and column in the grid matrix is a point where a respondent (remote user) will enter, selectively, an answer. In a preferred embodiment, a database column heading is automatically prepared from components of the row and/or column heading of the check box grid or numeric field grid matrix. In this example this field need only be filled in once as there is only the one Database Column associated with this question. The author (local user) will name the Database Column Heading as "LEAVE". The default will be the same as the question title.
Branched-To Question This is where the author (local user)enters the next question that this option would take the respondent (remote user) to if the option were selected. Obviously
.;F
SUBSTITUTE SHEET (Rle 26) WO 96/08779 PCT/AU95/00615 28 author (local user)is not able to nominate the next question at this point because he is currently working on the first and only question. However, the author (local user) can nominate one of three special branching destinations. Any of these destinations, {FINISH}, {NEXT} and {NONE} can be used for just this particular question option, or they can be set as the default for this survey document or the entire system. Specifying
{FINISH}
will mean that the respondent (remote user) will go straight to the Finish Question Box at the end of the survey document.
The {NEXT} destination will automatically branch to the next question the author (local user) generates.
The {NONE} destination will become a "cul-de-sac". In other words the question will lead nowhere. When testing the survey document (see later) it will be indicated to the author (local user) that a question exists which is an orphan or a cul-de-sac and the author (local user) will be able to make appropriate corrections. In this example the Option Button text says "Yes I will be taking leave during this period", and the author (local user) may therefore require additional information so he would want this option to branch to another question. In this example there is only one other question so the author (local user) can select {NEXT} even though the question has not been generated yet. (In an alternative embodiment branching control instructions may be included see later).
On Selection Database Field Value T h i s i s where the author (local user) specifies the entry he would like to appear in the database answer field if the respondent (remote user) were to select this option. In this example the Option Button text says "Yes I will be taking leave during this period", so an appropriate On Selection Database Field Value would be or "YES".
In some cases, the on selection database field SUBSTUTM SETE (Rule 26 WO 96/08779 PCT/AU95/00615 29 value may be chosen automatically. In particular, where the question is in the form of a option buttons grid, having a plurality of rows and columns, each row and column having a heading and specifying a plurality of points (cells) in the grid for selection by a respondent (remote user), a single column heading may be available in the database and the field value entered in response to answering of the question by a respondent (remote user) may be automatically selected from components of the row and/or column heading for the particular option selected. It will be appreciated that selected field values could be automatically selected for other types of question, as well as option buttons grid.
Never Seen Database Field Value If the question has not been presented to the respondent (local user) due to the fact that their answers have taken them down another route the never seen database value will appear in the database answer field.
For Example: There may be a series of questions within the survey document that apply to one particular group and not another ie. Males Females, Wage earner Salary earner etc.
The database field value defaults to "BY PASSED" or "NOT ACCESSED" or the like. This can be edited here on each question, or can be permanently changed for this and all future survey documents by using the TOOL/OPTIONS menu. In this example the author (local user) will not change the Never Seen Database Field value. Now the author (local user) presses Enter or clicks OK.
This has now completed the process of editing the variables for the first option of the first question.
If the author (local user) presses Enter or clicks OK, he will now see the question option text appear in the question box.
To complete the range of options available to the respondents(remote users) the author (local user) must repeat the above mentioned process on the.next two SUBSTUTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 30 options. However, as this is an option button based question there will be only one database column and therefore there is no need for the author (local user) to nominate either the Database Column Heading or the Never Seen Database Field Value again.
Lets assume that your three options are as follows: Option Button Text On Selection .Branching to Database Field Entry Yes I will be taking leave Y
{NEXT}
during this period.
No I will not be taking N {FINISH} leave during this period.
I am not sure at this M {FINISH} time.
See Figure 8 for a screen display of the question text and allowable answers.
The author (local user) then saves the work he has done so far by selecting the FILE/SAVE menu option.
The survey document may be given a unique and descriptive name. Such as HOLIDAY.SVM.
The author (local user) can now go ahead and create the final question in the survey document. To start a new question the author (local user) must select the QUESTION/NEW QUESTION menu option. This will present the author (local user) with a new question box containing, as before, the "NEXT" and PREVIOUS buttons as well as the Question Text area. The author (local user) can now proceed as per the first question but using the new set of variables.
Lets assume that the final question is an option-type question and the parameters are as follows: SUBSTITUTE SHEET (Rule 26 WO 96/08779 PCT/AU95/00615 31 i :Field .Vari able Variable Question Text Question Title Database Column Heading Never Seen Database Field Value Option One: Option Text Option One: Branching To: Option One: On Selection Database Field Value Option Two: Option Text Option Two: Branching To: Option Two: On Selection Database Field Value Option Three: Option Text Option Three: Branching To: Option Three: On Selection Database Field Value Where will you be holidaying Destination Destination BY PASSED New South Wales
{FINISH}
NSW
Australia, but not
NSW
(FINISH}
AUST
Overseas
(FINISH}
OS
Now that the second and final question of this brief survey document has been completed the author (local user) can take a look at the linking of options from question one (LEAVE) to question two (DESTINATION) or FINISH (end of survey document).
Earlier the Branched-To Question field was mentioned and the author (local user) used the {NEXT} and {FINISH} options because he could not nominate the "Question Title" of the next question at that point. Now that the next question has a title, "Destination", the "Branching To" field in the previous question that contained the {NEXT} option will automatically change to read (DESTINATION).
So in summary, the author (local user) has asked a question relating to leave being taken and another relating to where the respondent (remote user) will be taking this leave. Now clearly if the respondent (remote user) has answered either option two or three (No and Not sure) to the first question (LEAVE) there is no need for SUBSTMTUTE SHEET (Rule 26) WO 96108779 PCTAU95/00615 32 them to answer the second question (DESTINATION) and therefore they should go straight on to (FINISH). Option one (Yes I will be taking leave during this period) of question one (LEAVE) should lead to question two (DESTINATION). As the second question is also the last the author (local user) may choose settings of {FINISH} as all options will need to lead to the end of the survey document.
Although in this example the author (local user) has chosen the {NEXT} option to automatically handle his linking it can be done manually using the following process.
The first thing to do is to get the first question (Leave) back on the screen. This is done by selecting the QUESTION/GOTO QUESTION menu, and the choosing of "LEAVE" of the list (Fig. 9).
Question one (LEAVE) is now displayed on the screen. Double clicking on the first option (Yes I will display the option button properties dialogue box. From the list displayed in the Branched-To Question section select the second questions title "DESTINATION" and press Enter or click OK.
The final step before testing is to nominate which question is the first question to be presented to the respondent (remote user). This is done by selecting the QUESTION/SET FIRST QUESTION menu and nominating the Question Title of the appropriate question.
The first test that the author (local user) should perform is the SCAN TEST. This is accessed through the TOOLS/SCAN menu option (Figure On selecting SCAN TEST the arrangement scans through the survey document and searches for any errors in the question structure. This is particularly important for complex survey documents which incorporate a number of branched-to questions. SCAN TEST generates a report of "orphans" and "cul-de-sac" ie., questions which no other questions lead to and questions which do not lead to anything. The arrangement is aware that there is SUBSTITUTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 33 a single question which will not have a preceding question (the question selected as the first question in the survey document) and a single question which will not have a succeeding question (the last question in the survey document). It may test all the other questions simply to determine for orphans or cul-de-sacs. Once any existing orphans or cul-de-sacs have been identified the author (local user) can access them to correct them.
In addition to orphans or cul-de-sacs SCAN TEST also identifies any Cross Linked Questions (A child question that branches to any preceding question) and Duplicate Database Field Names. It will also test for illegal names over eight characters for DOS based database) and missing names.
In one embodiment, an entire list of the items appears on the authors (local users) screen. Clicking on one item immediately takes the author (local user) to that item. By "item" is meant any item which may be determined by the local user in preparing the Survey Document, Goto's, not accessed, branching-to questions, DatabaseFieldName, etc. The listing will not include information such as question text (although the question title is listed) and the like which do not effect the mechanical structure of the Survey Document the pathway through the Survey Document). It is a mandatory requirement, however, that the author enter Question Text. While this will not affect the mechanical operation of the document (the way it runs on the respondents processor), if no Question Text is provided, the respondent user will view a blank question no question). A test for question text is therefore important and is included. There may be other mandatory items such as question labels.
The listing enables the author to briefly check that the document structure reads as desired. Any items identified by the scan test as being in error are preferably highlighted in the listing so that the user can click on them and take the appropriate action to SUBSITTE SHEET (Rule 26 WO 96/08779 PCT/AU95/006 1 34 correct the error. An embodiment is envisaged where all variables in the Survey Document which could be effected by the author or system configuration are listed.
Once the SCAN TEST has been completed without error the author (local user) can be confident that the mechanics of their survey document are in order.
The Respondent Test is accessed either via the TOOLS/TEST FROM TOP (Figure 15) or by a simple click on a "Test" icon on the tool bar.
Activating Respondent Test will take the author (local user) through the survey document as if he where a respondent (remote user) A further test is TOOLS/TEST FROM CURRENT (figure 16) this allows the local user the option of testing the Survey Document from any particular question he is currently displaying.
Prior to sending the survey document the author (local user) determines the electronic mail address the response documents are sent to. FILE/SET REPLY
ADDR
(Figure 15) and then nominates the return address.
Once the author (local user) is satisfied that the survey document works and that the response will be going to the correct mail address he may send it to his target audience.
To do this he selects the FILE/SEND
SURVEY
(Figure 16) menu option (Fig. The Survey Author Module assumes that the author (local user) will be sending the survey document that is currently loaded.
It will present a dialogue box listing of all the respondents (remote users)and groups of respondents(remote users) that the author (local user) could mail to. The survey author may also mail to the respondents of previous surveys. A listing of the respondents of previous surveys is kept. The dialogue and box will also list all the previous surveys so that the author may click on a selected previous survey to send to remote users who filed responses for that survey.
SUBSTIE SMEE ft 26) WO 96/08779 PCT/AU95/00615 35 Methods may also be used to select sub groups within the targeted database. The author (local user) will make his selection and press Enter or click OK. Another dialogue box will appear enabling the author (local user) to attach a message to the survey document. For example the author (local user) could use this to introduce the survey document to the respondents(remote users) and explain the benefits to them or the organisation of responding to it quickly. Once the author (local user) is satisfied that everything is OK he can press Enter or click OK. The small survey document will then be on its way to its target audience. At the same time (in the preferred embodiment, just prior to transmission) the apparatus will automatically create the database in preparation for the responses. Also, at the point that the local user selects the FILE/SEND survey menu from the File menu they are offered a dialogue box requesting them to name the SVQ (survey document to be sent out) file that is about to be sent out. The default name is that of the SVM (the survey document master see later) Once the local user has either selected a new name for the SVQ or accepted the default name the local user will be offered another dialogue box asking for them to select the database type that they would like to create for this survey to be collated into. At this point the local user will ask for either a database name and/or table name.
The default will be the SVQ name. However, the local user can change it.
The database can be fully populated if the author is mailing the survey to a list of known users.
However, there is the option for the database not to be populated if their survey is sent to a group, for example, or put on a bulletin board. In the present example, the database is fully populated.
See figure 14 for a diagrammatic representation of the database. The database is comprised of three columns and N 1 respondent (remote user) rows, where N is the number of respondents (remote users) 1 is the SUBSTTTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 -36 row containing the column headings). The three columns include two columns for the two respective questions, and a column which contains respondent (remote user) ID.
Note that a number of fields may be necessary for a users mail address. The columns and rows intersect in matrix form to provide database answer fields in the form of cells, for the entry of the appropriate field value as answer documents are processed.
Each remote processing apparatus may be configured with a "Survey User Module" or recipient module (response module) to enable preparation of an answer document in answer to the survey document. The Survey User Module will be installed either on the server that the respondent (remote user or recipient) is attached to in the network, or on the respondents(remote users) machine.
Alternatively, the recipient module may be transmitted with the survey document, so that a respondents users computer need not even be configured to be able to process the survey document. Instead, the recipient module transmitted with the survey document will configure the respondent users computer.
The respondent (remote user) will generally access the survey document through their normal electronic mail procedure. Where the respondent (remote user) is not connected to electronic mail, he may receive the survey document by another communications medium, eg.
by normal mail, or by any other means. They will read the mail that has accompanied the survey document and then use their mouse to select and launch the survey document. On their screen will appear the question one (LEAVE) dialogue. They will use their mouse to select the option that applies to them. They will then click on next. Depending on their selection either the (FINISH) or the (DESTINATION) dialogue box will appear. Once they have answered all the questions the (FINISH) screen (Figure 11) will appear thanking them for the involvement in the survey. Once they press Enter or clickFinish all SUBSnlTME SHEET (R,,1n 9AN WO 96/08779 PCT/AU95/00615 37 of their answers will be transmitted back to the Survey Collator Module automatically.
The local processing apparatus, in particular the Survey Collator Module is arranged to monitor incoming transmissions via electronic mail other means, even manual entry) to identify answer documents for the particular survey. The "Survey Collator Module" is applied to gather all the incoming responses and load them in the database. In the preferred embodiment, as described below with reference to figure 12, the Survey Collator Module has a number of functions, operation of which may be dictated by the collator (local user).
Note that the Survey Collator Module may be entered on a different processing apparatus to the processing apparatus which the author (local user) used to prepare the survey document. This arrangement will be particularly useful where the author (local user) makes heavy use of a particular computer and, although he may wish to prepare the survey document using that computer, he does not wish machine time to be taken up with collation of answer documents. He can therefore designate another machine to receive and collate the answer documents.
Survey Collator Module As previously explained this module of the application gathers all the incoming responses and puts them in a database ready for analysis. When this module is first launched the collator (local user) must select the SURVEY/PROCESS menu. The collation process is automatic. An options menu is provided which enables the local user to select whether a particular survey should be "activated", "suspended" or "terminated". When a survey is "activated" the collator will automatically collate all response documents relating to that survey. When a survey is "suspended" (dl in Fig 12), the collator will receive an identify response documents relating to the survey but will not process them. It will SUBSTITUT SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 38 merely store them. When a survey is "terminated" the collator will identify all response documents relating to that survey and delete them upon arrival.
The Survey/Process menu will now attempt to logon and start the collation process. On loading the collator module it will not start the collation process until the Survey/Process menu has been selected. The way that the collator gets to know about the surveys is when the first response document comes in. When this happens the collator puts its name up on the screen along with information relating to the last date and time it received an entry and the total number of entries it has received for that survey to date. The collator will continue to collate the "activated" survey entries until the local user "suspends" the process. The local user can also decide to "terminate" the survey, in which case all incoming responses will be deleted upon arrival (see later for description of "activated, suspended, and terminated"). All surveys will list on the screen regardless of which of the three states they are in. The local user could decide to delete a survey from the list.
However, if an answer document comes in it will attempt to restart the collation process.
Figure 12(a) illustrates the main Survey Collator Module screen of this embodiment. The Survey Collator Module can handle a plurality of different surveys, exemplified in figure 12(a) by "survey 1" and "survey 2" under "survey name" Once the collator (local user) has done this the Survey Collator Module will automatically start the electronic mail if it is not already running and then start to scan for incoming responses.
On the screen the collator (local user) will notice that the Survey Collator Module tells him how many responses it has received and what percentage that amount represents of the total the survey document was sent to ("Total Read", Process"). The "total" and sUssT=n SHEET (Re 26) WO 96/08779 PCT/AU95/00615 39 "percentage process" will only appear when the survey has been sent to a known list of respondents and a pre-populated database option has been chosen. Where the database is unpopulated, obviously the collator will not know how many respondents will be required to fill the database.
If after a few days the collator (local user) notices that the responses have slowed down to a trickle he may like to send all those who have not yet responded a quick reminder. This can be done automatically by selecting the SURVEY/REMIND menu option (Fig. 12(b)).
Having done this the collator (local user) will be asked to type a brief reminder message. Once the collator (local user) presses Enter or Clicks OK the Survey Collator Module will interrogate the nominated survey database and send the mail to all the non-respondents.
This should prompt a few more to respond to the survey.
However, if in a few more days the collator (local user) still has not received all the responses he may select SURVEY/RE-SEND menu (Fig. This works the same way as REMIND but along with a message from the collator (local user) it will retransmit the survey document.
Once the collator (local user) is happy with the number or percentage of the responses received he can de-activate the survey document by selecting the SURVEY/TERMINATE menu option (Fig. 12(d) and 12(e)).
This means that Survey Collator Module will discard all responses for this survey from now on. The database will contain audience responses for each user. If the respondent (remote user) does not respond this may be indicated in an extra database column (the "respond column") There is also the option of gathering various information available automatically on the E-Mail system.
For example, postcodes, telephone numbers, etc. Various database columns would be prepared to receive this automatically gathered information, which would not be part of the survey document received by the remote user.
SUSIITJ SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 Further options include date/time stamping depending on the time the answer document was received and/or the ability to log whether this is a reply to an original survey or a reply to a reminder or a reply to a re-sent survey. Appropriate database columns would be required.
Figure 12(g) illustrates "Options" available with the survey collator.
Figure 13 shows a functional diagram of the survey system. The functional diagram shows in brief the steps discussed above of operation of the apparatus and method in accordance with the embodiment discussed above.
At 100 the author creates a survey with a survey name 101 and mails it out to a remote user 105. Further, just prior to mailing of the survey, the database is created at 102, the questionnaire is prepared at 103, and the questionnaire is mailed to the Colldtor at 104.
At the remote user end of the system, at 106 the user reads and processes the survey and creates an answer document at 107 and sends 108 by mail back to the collator.
At the local user end, at 109 the collator reads the questionnaire and notes the existence of the survey in its register. Later at 110 the collator reads the answer document and updates the database at 111 with the answer.
In operation, when the survey document has been completed prior to transmission it is a master. The document sent out is a subset of the survey master, known as the SVQ. The SVQ is saved for subsequent re-transmission, if reminders are required. At the point that the local user selects the FILE/SEND survey MENU OPTION from the file menu they are offered a dialogue box requesting them to name the SVQ file that is about to be sent out. The default name is that of the SVM. Once the local user has either selected a new name for the SVQ or accepted the default name the local user will be offered another dialogue box asking for them select the database type that they would like to create SUBSTI UTE SHEET (Rule 26) WO 96/08779 PCTAU95/00615 -41 for this survey to be collated into (see above). As discussed above, at this point the local user will be asked for either a database name and/or table name. The default will be whatever the SVQ was named, although the local user can change it. The safeguard here is that the local user will not be able to select an existing database name or table name within an existing database.
Note that the SVQ is also preferably saved in collator, as reminders will most probably be sent from them.
One advantageous feature of a preferred embodiment of the invention, as briefly discussed above relates to the naming of the database column headings when a question and allowable answer utilise a numeric field grid or check box grid. For example, referring to figure 6, which illustrates a check box grid, it will be appreciated that there are 16 possible answers (check box cells) to this question. If the remote user has more than one car, he may check more than one cell. Sixteen database columns are therefore required. Manually choosing a name for each of these database columns would be laborious. To overcome this problem, the apparatus and method of a preferred embodiment of the present invention automatically designate database column headings which are formed from components of the column and row grid headings. For example, the name for the database column heading corresponding to the top left hand corner check box cell may automatically be set at "sedan Similarly with the rest of the check box cells. This naming technique can also be applied for a numeric field grid. The column heading may be formed from combining the entire column and row headings of the grid, as above, by combining components of both of them, or by using the column or row heading only or a component thereof.
For option button grids, where only one option is allowed to be chosen, in a preferred embodiment of the MUSTIUT=,RRRT MVIAIAN36 WO 96/08779 PCT/AU95/00615 42invention, as discussed briefly above, it is only necessary for the database to contain one database column, no matter the number of possible answers. In this case, the database field value to be entered in the database column in dependence on the remote users answer is chosen from components of the column and row headings of the grid. With the option buttons grid therefore, the actual field value to be entered is named from the headings of the rows and columns of the grid box cell selected. As discussed previously, option button girds may include a series of sub-groups requiring the remote user to select a single option item in each of the sub-groups. In this case, as many columns in the database will be required as their are sub-groups.
An advantageous feature of a preferred embodiment of the invention allows the database to be fully loaded prior to the survey document being sent out, in order to test whether the apparatus can accommodate the fully loaded database.
In the embodiment described above, when the remote user receives the survey document (SVQ) and processes it on his apparatus to produce an answer document (SVR), the SVR is sent back and the original mail message and the SVQ are deleted or the remote user is told to delete, so that they cannot be used again by the remote user. A further option exists for the Survey Author (local user) however, to provide an instruction that tells the remote users not to delete the SVQ when the answer document is sent back. This enables a requirement for regular information (weekly, monthly, quarterly) to be met by the remote user by simply re-running the SVQ on a regular basis. If such an option is utilised, the databases prepared to include a "time received" database column to indicate a time at which the particular answer document is received from the particular user.
The following is a description of the structure of a software implementation of the preferred embodiment SUBSTrrUTE SHEET (p.We 26) WO 96/08779 PCT/AU95/00615 -43 of the present invention, a working example of which has been explained above generally from the point of view of user operation of the embodiment.
Software code has not been listed. The following description of the software modules and the various "features" they are required to execute will be sufficient, together with the following descriptions of the various documents (survey master document, survey question document and survey response document), and the previous description of the functions of the system, to enable a person skilled in the art to construct software.
This description does not describe the specifics of the user interface, as, except where certain operational rules are enforced, the specifics are fundamentally irrelevant to the description of the current embodiment. The operational rules will be covered at the end of this description.
The computer language used within this description when detailing structures is generic, but a person skilled in the art will easily be able to convert these details to an appropriate computer language.
Overview The preferred embodiment is composed of three separate but related software modules Survey Authoring Module herein known as the Author (local user) Survey Recipient Module herein known as the Recipient (remote user) Survey Collating Module herein known as the Collator (local user) In the current embodiment all three modules are designed as Microsoft Windows applications, having been written and complied in Microsoft Visual using Microsoft's MFC Class Library. All three modules interface to Microsoft E-Mail through the MAPI interface.
Both the Author and the Collator modules access databases through Microsoft ODBC interface, allowing the system to work with almost all available databases.
SUBSTITUT SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 44 Standard programming techniques have been used as much as possible to allow portability to other systems that support MFC.
There are three areas where slightly non-standard techniques have been used: I. The presentation of the dialogue boxes in the Respondent module (and equally their presentation in test mode within the Author module) utilises a Windows feature of being able to present a dialogue box from a template in memory instead of the usual method of presentation from a static resource. This allows dynamic control of the appearance and content of the dialogue boxes from information stored in the questionnaire
(SVQ).
2. At the point when the survey questionnaire is to be mailed to the remote users the Respondent module (Response Exe) is pre-pended to the actual questionnaire document (SVQ), given the 'file-name' of the survey master document (SVM) and the extension 'Exe' It should be noted that the SVQ is a C++ 'object', and to achieve data persistence its MFC archiving methods are used both to write it at the Author, and to reload it at Respondent.
When the remote user runs the composite file, the Respondent module start-up-code offsets the file pointer in the MFC standard archive read method to point to the SVQ section of itself. It then loads the data to 're-instantiate' itself, processes the data through the normal SVQ methods and presents the questions to the user. The composite file transmitted to the Respondents operates as a true 'object' with encapsulated SVQ data.
(Note that an 'object', as will be understood by a skilled person, is a collection of executable methods that are specific to the encapsulated data types and structure (an 'instance' of which is held within the object), and (generally) those methods are the only way for external agents (people or processes) to operate on that data).
3. Following on from above, the final size of SUBS== SHEET (Rle 26) WO 96/08779 PCT/AU95/00615 the composite file is largely determined by the number of executable SVQ methods which are mailed with the SVQ data. To increase efficiency through the E-Mail system the size of the composite file should be as small as possible. By using conditional compiles on the SVQ object, a common minimal 'set' is used by the Respondent module, while the full 'set' is available to the Author module.
The common minimal set will be a matter of choice of the skilled person, who will be able to establish the minimal set of methods required to run the SVQ by the respondent module.
The Author Module The main functions of the Author module are the design of the questionnaire, preparation of an appropriate database, and the transmission of the questionnaire to the remote users.
All Author functionality is derived from the Survey Master Document (SVM) methods.
Note: the SVM contains the Survey Questionnaire Document (SVQ) inside itself so that all SVQ methods are available to the Author. Further the SVQ contains an array of 'Question-Box objects' inside itself so that all Question-Box methods are available to the Author. The data members for the SVM/SVQ/Question-Box 'objects' and the functionality of the more relevant methods are detailed below.
The Menu structure, as will be realised form the preceding description, is based as closely as possible on Microsoft 'Office' products to achieve the highest degree of user interface compatibility with Microsoft standards and therefore facilitating ease of use.
The user interface for the dialogue box editing used in the creation of the question boxes is preferably based on several Microsoft and Borland 'dialogue editors'. Other techniques could be used.
One of the underpinning interface design criteria has been to shield the Author user from the need SUBSTITUTE SHEET (Rule 26) WO96/08779 PCT/AU95/00615 -46 to have any knowledge about databases.
The Author module generates default database field names based on the Question names, user question name as the field name. Users can change the database field names if they wish but there is no need to do so.
The database field types required are, in this preferred embodiment, deliberately limited to Boolean (Logical), Text and Numeric. Except for 'Numeric' fields, the other types are automatically deduced by the Author module, and the user is shielded from the need to set the database field types. For 'Numeric' fields the database field types default to 'Integer' but the user may change them to 'Decimal' (assumed 2 places) if they wish.
The database field length is automatically deduced for Boolean and Numeric fields, and a default calculation is performed for the length of Text fields based on the length of the field on the users's screen (which may be set by the survey author, as discussed previously).
In the interests of making life easier for the user various 'features' are designed into the system for the preferred embodiment.
For the Quenstion's goto directives the Author defaults to a system specific value of When a new Question is added, the Author module automatically retro-fits the new Question's name into the previous Question's goto directives if they were set to '{Next}' Equally if the user changes the names of a Question all other questions are scanned to see if any of the other Quenstion's goto directives point to the current Question, and if so, their goto directives are changed to reflect the new names.
The scan.test (part of the author module) tests for as wide a range of errors possible: i. 'Orphan' or 'Cul-de-sac' questions.
2. Question Box text which has not been SUBSTITUTE SHEETj (Rule 26) WO 96/08779 PCT/AU95/00615 -47 changed from the system default 'Question Text for Question No. 001' 3. Item (Option Buttons, Check Boxes, and Labels) text which has not changed from the system defaults ('Option Button Text 01', 'Check Box Text 01', and 'Label o01' respectively).
4. Duplicate database field names.
Any missing fields.
The author module automatically checks for missing, or duplicate or illegal database table names at the point of creation of the survey database.
A wide range of system defaults exist for the user to set the default size and position of the Question Box, default values for all the items, default values for the 'Never Seen Value' and the default goto directive.
The author automatically generates the last Question ('{FINISH}') when a new survey document is created.
When the user decides to mail out the survey to the remote users the following sequence occurs: 1. The user is presented with a list of E-Mail users (via the MAPI mail interface) for the remote users (or groups of remote users) to be selected.
2. The user is presented with a suitable 'Subject and Note' dialogue box to advise the remote users about the survey.
3. The user is presented with a list of E-Mail users (via the MAPI mail interface) for the Collator E-Mail address to be selected.
4. The user is presented with standard
ODBC
dialogues for the selection (or creation) of the Data Set Name (DSN) for the required database.
5. This is followed by a dialogue box where the user is asked to enter the 'table name' for the survey (defaults to the name of the survey).
6. The table is created in the ODBC database.
SUBSTTT- E SHEET (Rule 26) WO 96/08779 PCT/AU95/0061 48- 7. The SVQ section of the SVM is written to disk.
8. Respondent module (Response Exe) is pre-pended to the SVQ, given the 'file-name' of the Survey Master Document (SVM) and the extension 'Exe'.
9. The 'composite object' of Response Exe and the SVQ is mailed to the selected respondents (and to the Collator E-Mail address) via the E-Mail system.
The Respondent Module The composite file, containing both the Response Exe (the executable methods for the SVQ) and the SVQ 'persistent data', appear as an executable file attached to the E-Mail message containing the 'Subject and Note' texts (mentioned in the Author module above). When the user launches the attached executable its start-up-code offsets the file pointer in the MFC standard archive read method to point to the SVQ data section of itself. It then loads the data to 're-instantiate' itself, processes the data through the 'common minimal set' of SVQ methods and presents the questions to the user. The answers are stored in the SVQ as the user works through the questionnaire. When the user finally exits the '{Finish}' terminating question, the answers are copied to the Survey Response Document
(SVR).
As there may be hundreds (or thousands) of SVR documents arriving at the Collator's E-Mail address, the size of the SVR is extremely important. For this reason the SVR has been created separately from the SVQ. While the SVR's data members are exact copies of the associated data members in the SVQ the number of members is reduced to the bare essentials see below for a description of the SVR structure.
Collator The Collator works with 3 document types: 1. Its own 'survey register' document, which is a list of current surveys including relevant associated information see below.
2. The Survey Questionnaire document
(SVQ).
SUBSTTUTE SHEET (Rle 26) WO 96/08779 PCT/AU9S/00615 -49 3. The Survey Response Document
(SVR)
The Collator's main function is to read incoming survey response documents (SVR) and update (or add) the respondents answer information to the appropriate
ODBC
database.
The Collators other functions are: 1. To read incoming survey questionnaire documents (SVQ) and register the new survey in the Collator's 'register'.
2. To send reminders to entries in a pre-populated database that have not yet responded the Mail Received Date field is still set to the default).
3. To.re-send the Survey Questionnaire Document (SVQ) to E-Mail users that request a resend, or to entries in a pre-populated database that have not yet responded the Mail Received Date field is still set to default) Outside of the methods available to Collator through the document 'objects' that it is 'aware' of, the Collator is a straight forward and simple program.
Upon starting the Collator reads the E-Mail message queue to ascertain if there are any relevant messages of it.
If there are no relevant messages it goes to 'sleep' for a period of time controlled through its user definable options (see Figure 12).
If there are messages to process then it sits in a loop reading and processing messages up to a number specified again in its user definable options (see Figure 12), or until there are no more messages to process, where upon it will put itself to 'sleep' again.
If it has been 'asleep', it will re-enter the loop as if it had just started.
When it processes an SVR (assuming the associated survey has been registered) it will update the appropriate database and delete the E-Mail message containing the processed
SVR.
SUBSTITUTE SHEET (Rule 26) WO 96/08779 PCT/AU9500615 When it processes an SVQ it will register the new survey in its 'register' and copy the SVQ to a user definable directory for safe keeping. The surveys are registered with a default status of 'Active' but the user may choose to set that initial status to 'Suspended' to have manual control over when surveys are processed.
Collator E-Mail Messages The Collator monitors the E-Mail in-tray. It searches for 2 types of E-Mail messages.
i. The copy of the Survey Questionnaire Document (SVQ) sent by the Authoring module at questionnaire transmission time, and 2. The Survey Response Documents (SVR) returned by the respondents (remote users) Both these messages are coded with a signature so that they can be picked out from the normal E-Mail that may arrive. The signature indicates what types of message they are, but not which particular survey or database they belong to. Collator has to open the messages and read them to ascertain that specific information.
Collator Survey Status Collator maintains a 'register' where all the current and recent surveys that it is 'aware' of are listed. Each survey has an associated status as discussed previously: i. Active the survey is being processed normally.
The responses are being read, the database is being updated or added to and the read messages are being deleted once they have been successfully processed.
2. Suspended the survey responses are ignored.
Collator reads the message, ascertains that the survey is in a suspended state and advances to read the next E-Mail message. This state is set to temporarily isolate the database from the incoming E-Mail. This is useful for accessing the database before the survey is terminated, sbUsTITuTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 51 for staged analysis or repair. A suspended survey can either be re-activated or terminated.
A survey may optionally be set to suspended the instant that it is registered.
3. Terminated the survey is concluded. Any E-Mail associated with this particular survey will be read to ascertain its identity and then deleted without any processing.
Collator Survey Registration Collator registration occurs as a result of receiving either the SVQ or an SVR E-Mail message for a survey that has not yet been 'registered'. The survey is immediately stored in Collator's internal register, and the status is either set to 'Active' or "Suspended' depending on the user options that have been set. A user may choose to set the 'Suspended-on-registration' option if the user wishes to set the survey 'cut-off' values before any of the responses are processed.
The associated database and the number of responses received is also stored in the register on a survey by survey basis.
If the default status for a newly registered survey is 'Active' but a problem occurs when the associated database is being accessed, the survey will be automatically placed in a suspended state with a message indicating that an error occurred linking to the database when the survey was being registered. The E-Mail message will remain in the in-tray in this case until it is able to be processed correctly, or unless its status is changed to 'Terminated'.
A survey entry in the Collator's register can be deleted if it is old and has been previously terminated.
If an old response arrives after an entry has been deleted the Collator acts as if it is a new survey and will attempt to re-register the survey and to link to the database and process the response, unless the default registration option is to set a suspended state.
Collator Survey 'Cut-Off' Levels StBSTITUT SUEMT (Rule 2i WO96/08779 PCTAU95/00615 52 If the survey is using a pre-populated database then the exact number of responses is known and a 'cut-off' level can be set in terms of either a 'percentage complete' or a specific number of responses.
If the survey is not using a pre-populated database then the 'cut-off' level can only be set as a specified number of responses.
Once the 'cut-off' level is reached the survey status is immediately set to 'suspended'. The 'cut-off' level can be left empty and the Collator will continue to process until the survey is manually 'suspended' or terminated.
Collator Database Creation An additional feature of the Collator and the format of the Survey Response Document (SVR) is that the database can be re-created from the information in the SVR. If the original database was pre-populated the fully populated database cannot be re-created, but the correct database structure can be reproduced and Collator, being aware of the 're-creation', can change the database 'updates' to 'additions'.
This has two main advantages: If for any reason the original database has been corrupted, destroyed or lost, and a sufficient number of responses has not yet been processed, the Collator can re-create the database, and the Author does not have to burden the remote users to re-respond to a previous survey.
If the survey instigator is in a location physically removed from the original database, but wishes to run Collator and process the responses, a new database can be created.
Collator Otions The Collator can be set to process continually or to sleep for a range of minutes and then awaken to process a specified number of responses only.
The Collator 'reister' document structure WORD wNumOFSurvevs Number of Surveys SBSTIrrUTE SEET (Rde 26) WO 96/08779 PCT/AU95/00615 53
WORD
WORD
WORD
WORD
STRING
BOOLEAN
BOOLEAN
BOOLEAN
BOOLEAN
DATETIME
ARRAY
wSleepMinutes wMaximumGrab wDBNumOfRetries wDBRetryWait strSVQPathName bSortByName bAscending bHideTerminated bSuspendOnRegister LastScan SurveyRegister num of minutes to sleep max num SVRs to process max ODBC retries 100th sees between retries SVQ directory name sort by name or date sort ascending or descending hide terminated from display suspend on registration timestamp of last scan array of Survey info The Survey Register Structure WORD wSurveyStatus WORD wtotalResponses WORD wProcessedResponses WORD wDeletedResponses WORD wTotalRows WORD wCutOffCount BOOLEAN bRecreatedDatabase BOOLEAN bPrePopulated BOOLEAN bRetainAfterReply DATETIME tmRegistered DATETIME tmCurrentStatus DATETIME tmLastRead DATETIME tmRemind DATETIME tmResend Status of the survey total SVRs received number SVRs processed number SVRs deleted pre-populated total holds cut off level indicates DB recreation indicates pre-populated
DB
indicates SVQ is kept timestamp when registered timestamp of current status timestamp of last SVR read timestamp of last Reminder timestamp of last Resend STRING strSVQFileName name of SVQ file STRING strSurveyName full SVM pathfilename STRING strTableName Name of the Table STRING strDataSetName Data Set Name (DSN) STRING strDataSetConnection Full DSN Connect string ARRAY DataSetDataTypeArray Available Data Types Array The above-described modules access 3 document file formats collectively known as the Survey Documents: 1. the Survey Master Document
(SVM),
2. the Survey Questionnaire Document
(SVQ),
and SUBSTITTE SHEET (Rule 26) WO 96/08779 PCT/AU95/006 1 54 3. the Survey Response Document
(SVR).
The design of these Survey Documents underpins the preferred embodiment. Whilst the preferred embodiment is implemented for MS Windows the design of the Survey Documents could easily be transferred to any computer system. The Survey Master Document
(SVM)
contains the Survey Questionnaire Document (SVQ), and also contains additional survey 'author' information not required in the questionnaire (SVQ) section. The Survey Response Document (SVR), contains the answers and sufficient information to link to the database and sufficient information to re-create the database in the case of a catastrophic error.
The Survey Master Document
(SVM)
The SVM is composed of four main sections: 1. The Survey Questionnaire Document
(SVQ);
2. Subject and Note Texts; 3. Array of Recipients; and 4. Document defaults and options.
1) Survey Questionnaire Document
(SVQ)
The following lists the document variables in order.
String strSurveyMasterPathName PathName of this survey long name for document BOOLEAN bFlagPrePopulate Pre-populate Database BOOLEAN bFlagRetainAfterReply Retain SVQ after Reply BOOLEAN bFlagFollowUp Indicates secondary Survey String FirstQuestionName The first one to start with String SelectedQuestionName Currently selected Question Name String NextQuestionName Next Question Name to be selected WORD NumOfQuestions Number of Questions in the survey Strut ReplyToInfo The Collator's mail address String strTableName Name of the Table String strDataSetName Data Set Name (DSN) String strDataSetConnection Full DSN Connection string Array DataSetDataTypeArray Array of Data Types SUBsrrnmE SHET (le 26) WO 96/08779 PCT/AU95/00615 55 available Array QuestionsArray Each element is a "QuestionBox' The following is a description of the document variables.
The strSurveyMasterPathName is the full pathname of the survey master document itself.
The bFlagPrePopulate indicates that a prepopulated database is being used. The default value of this flag is False. If True this flag has several implications; 1. the Survey Authoring Module will create and pre-populate the database with the E-Mail name and address, default mail received date and each question's 'bypass' values; 2. the Respondent Module will set the Survey Response Document (SVR) to 'update' and not 'insert' records to the database; 3. the Collating Module responds to received SVR with this flag set to true by displaying percentage received figures as well as numbers of responses received.
Also the Collating module allows the use of 'reminds' and re-sends' if this flag is set to true; and 4. all three modules are aware that if this flag is set then the index on the database is unique only on the name and address, and does not include the mail received date.
Equally, if this flag is false it indicates to all three modules that the database is indexed on name, address and mail date received, so as to allow multiple responses from each respondent.
The bFlagRetainAfterReply indicates to the Respondent Module that it should indicate to the remote user to keep the current Survey Questionnaire Document (SVQ) rather than delete it on completion. The default SUBSTTUTE SHEET (Rol 26 WO 96/08779 PCT/AU95/00615 56 state of this flag is false.
The bFlagFollowUp indicates to the all modules that some of the mail addresses being used are from previous surveys and may no longer be valid on completion. The default state of this flag is false.
The FirstQuestionName stores the name of the question to be first selected from the QuestionsArray.
The SelectedQuestionName is simply a current storage place for the name of the current Question.
The NextQuestionName is loaded by the control logic with the name of the next Question to select.
The NumOfQuestions is simply a storage area to record the number of Questions in the survey.
The ReplyToInfo structure contains the E-Mail name and address to reply to the Collator via the E-Mail system. The structure contains: String MailName String MailAddress LONG MailEntryIDSize Array MailEntryIDData The fields are specific to MS Mail, but can be extended for any electronic mail or electronic bulletin board systems. The purpose of these fields is to store the Collator's mail address in the message that is sent to the Respondents. Note the Collator's mail address may not be the same as the Author's mail address (see previous description). The Author selects the Collator's mail address just prior to the Survey Document being sent to the Respondents.
The strTableName contains the name of the table to use within the specified database.
The strDataSetName contains the DSN that specifies on the local user's computer which database to use. The DatabaseSystem is specific to MS ODBC, but can be extended for any database system.
The strDataSetConnection contains the full ODBC connection string that is the complete identification string required to access the ODBC database.
.)UBS7rrTFE SHEr (RI 26) WO 96/08779 PCT/AU95/00615 57 The DataSetDataTypeArray is a list of the data types available for the chosen database. This information is used in the creation of the database.
The QuestionsArray is an Array of Question Box structures which contain all necessary information to present a question to the remote user. The 'QuestionBox' structure is explained after the description of the Survey Document's main sections (see "The Question Box Structure' below).
Note: the Question Box array is accessed by use of the desired Question Box's RefName'; equally when a Question Box is placed in the array the 'RefName' is extracted from the Question Box structure and used as the index associated with the array.
Note that the bFlagPrePopulate flag is set to false where, for example, the Author is sending a survey to an electronic bulletin system.
As has previously been mentioned, application of the invention to a "bulletin system" would involve posting a Survey Questionnaire Document (SVQ) on a "bulletin board" for selection and answer by any user having access to the bulletin board. That is, the users would not be preselected for the Survey Document to be sent to. In such a case, the database size would depend upon the number of answers received to the Survey Document.
As discussed above bFlagRetainAfterReply flag when false indicates to the Recipient that it should erase the copy of the composite file when the Recipient has successfully sent back an answer (SVR). However if this flag is false then the SVQ may be preserved and used again. The bFlagRetainAfterReply flag when true also tells the Author and the Collator that each recipient may send more than one answer (SVR), and therefore an extra 'DateReceived' field is generated in the database. This extra field is used to make the answer rows in the database unique for indexing purposes, and also to track the arrival of each of the multiple answers.
SUBSTITUTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 58 This facility is useful where the local user may require periodic update of the same survey, eg. political poling. Out of date information would be overwritten by the new information coming in from the remote users, and the database "date received" field would indicate the latest date which an answer has been received from the remote.
2. Subject and Note Texts String MailSubjectText E-Mail Subject Text String MailNoteText E-Mail Note Text The MailToSelection stores the operator's selection of who the mail recipients are.
The MailsubjectText is a simple one line description of the mail being sent to the Recipient.
The MailNoteText is used for a description of the survey, read by the Recipient before they begin the survey.
3) Array of Recipients The recipients data is exactly the same as reply to info accept that it is an array of them.
Array RecipientsArray Each element is a "RecipientDate' Again the actual 'RecipientDate' structure implemented in the current embodiment is specific to MS mail, but can be extended for any electronic mail system.
Note this is not a fully expanded list just simply what the operator chose. It may be any combination of individuals or E-Mail groups, or the E- Mail names and addresses of Respondents from previous surveys.
4) Document defaults and options WORD wQuestionBoxLeftMargin WORD wQuestionBoxTopMargin WORD wQuestionBoxWidth WORD wQuestionBoxHeight WORD wQuestionTextWidth WORD wQuestionTextHeight WORD wQuestionTextLeftMargin XuBSsmrTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 59
WORD
WORD
WORD
WORD
String String String String String String String String String wQuestionTextTopMargin wControlsLeftMargin wItemsLeftMargin wCentreQuestionText strNeverSeenValue strNeverSeenSelection strOptionChosenValue strOptionChosenSelection strCheckBoxTrueValue strCheckBoxTrueSelection strCheckBoxFalseValue strCheckBoxFalseSelection strNumericFieldType String StrNumericTypeSelection String strGotoDlgName String strGotoDlgSelection These fields are used as a place to store Author defaults for the creation of each of the Question Boxes by the Author. They are a convenience for the operator of the system, but not relevant to this description.
The Question Box Structure Overview From the Recipient's perspective a Question Box is simply a standard graphical user interface 'dialogue box' with: 1. The question text in an area at the top of the Question Box; 2. some user controls; either option buttons, check boxes, numeric data entry fields, or text data entry fields; and 3. two push buttons at the bottom of the Question Box, marked 'Previous' and 'Next'.
The Question Box structure must contain and/or achieve the following: 1. Sufficient information to display the Question Box via the graphical user interface; 2. define the Question Box's database field's SUBSTUTE SHEET (R 26 WO 96/08779 PCT/AU95/00615 60 name, type and size in the Author or Collator created database; 3. store the Recipient's answers in all the Question Box's database fields; 4. store the 'Never-Seen' values as the Recipient's answers in all the Question Box's database fields if the particular question is never asked due to Question Box 'branching'; 5. store the 'Branch Control Language' script for this particular question if required (see later); and 6. define the name of the next Question Box to 'goto' depending on the user's current or previous answers.
To achieve this there is a three tiered structure: 1. The Question Box or header containing several 'GroupData' structures; 2. the 'GroupData' structures which in turn contains several 'ControlData' structures; and 3. the 'ControlData' structure.
These three structures are detailed after the next section.
Constants/definitions used by all three structures Each control is assigned a 'TYPE' indicator.
This is used to ensure consistency between the control and its Group. The controls are grouped by 'TYPE'.
define CTL-TYPE-NULL Ox00000000L define CTL-TYPE-QUESTIONTEXT 0x10000000L define CTL-TYPE-NEXTPREVBUTTONS Ox20000000L define CTL-TYPE-OPTIONBUTTONS Ox00000001L define CTL-TYPE-CHECKBOX 0x00000002L define CTL-TYPE-NUMERIC Ox0000004L define CTL-TYPE-TEXT Ox000008L These defines indicate the 'TYPE' of each Group.
SUBSTITUTE SHEET (Ru 26) WO 96108779 PCT/AU95/00615 61 def ine def ine def ine def ine def ine def ine def ine def ine
GRP-TYPE-NULL
GRP -TYPE -QUESTIONTEXT GRP -TYPE -NEXTPREVBtJTTONS GRP-TYPE -OPTIONSBUTTONS GRP -TYPE -CHECKBOX
GRP-TYPE-NIJMERIC
GRP-TYPE-TEXT
GRP-TYPE-GRID
OxOOOOOOOOL 0x10000000L 0x20000000L OxO000000 iL 0x00000002L OxOOOOOOO4L 0x00000008L OxOOOO0lOOL The Question Box needs to indicate what 'TYPEs' of group/controls it contains. Note; 1. The first 4 are simple types.
2. The 'GRID' is used in conjunction with the first 4 TYPEs to indicate which TYPE of 'grid' it is.
define DLG-TYPE-NULL OxOOOOOOOOL define DLG-TYPE-BASE Ox30000000L only PUSHBUTTONS
STATICTEXT
define
DLG-TYPE-FINISH
only PUSHBUTTONS
STATICTEXT
Ox30000000L def ine def ine def ine def ine def ine DLG- TYPE-OPTIONBU~TONS
DLG-TYPE-CHECKBOX
DLG-TYPE-NUMERIC
DLG -TYPE -TEXT
DLG-TYPE-GRID
OxOOOQ00lL 0x00000002L OxO 00000 04L OxO 000000 8L OxOOOO0l0oL Following defines are for masking out the 3 sets of TYPEs: define STANDARD-TYPES-MASK OxFOOOO000L Standard (StaticText PushButtons) define ACTIVE-TYPES-MASK OxOOOOOOFFL Active (Option, Check, Numeric, Text) define COMPLEX-TYPES
-MASK
OxOOOOFFOOL SUBSfTTE SHEET (Rue 260 WO 96/08779 PCT/AU95/00615 -62 Complex (Grid and Combo indicators) The ControlData Structure The ControlData structure is mainly concerned with displaying the controls within the Question Box's dialogue; therefore they are based on MS Windows ControlData structure. However it is the additional fields that are important, as each graphical user interface will store its control's data slightly differently.
Also please note the standard MS Windows IDOK define is allocated to the 'Next' button, and the IDCANCEL to the 'Previous' button. This is pure convenience any define will do.
Attributes as per MS Windows structure WORD wX X pos in dlg units WORD wY Y pos in dlg units WORD wWidth Width in dlg units WORD wHeight Height in dlg units WORD wControlID ID for messages from the control DWORD IControlStyle Window Style Option/Check, Default, Group etc BYTE bClassID Class ID Button, Edit, Static, etc String ControlText Control Text BYTE bBytesToNextControl Always null Attributes additional to MS Windows structure DWORD lControlType Type of Control (Option Button, Check Box, etc) String FieldValueSelected Value of database-field if this Control is selected String ItemLabel Name used to reference the control through the BCL String GotoQuestionName See explanation below The IControlType is used to cross check the SUBSITUTE SHEET (Rule 26) WO 96/08779 PCr/AU95/00615 63 control within the parent group structure.
The FieldValueSelected holds the value to place in the database field should Control be selected by the Recipient's operator. Note this is only applicable to Option Buttons and Check Boxes, as Numeric Field and Text Field entries are not predetermined. The database field itself is in the parent group structure.
The ItemLabel field is used to name the control ('item' in the Author operators menu) so that it can be referenced by the 'Branching Control Language' (BCL see later). The ItemLabel must be uniquely named within the Question Box but does not have to be unique across the whole Survey Document. The Author module will produce default labels based on the item type (Option Button, Check Box, Numeric Field, etc) and its sequence number within the Question Box.
The 'GotoQuestionName' field is known by four different names when referred to from outside the ControlData structure. These are: 1. GotoQuestionName if the Control TPVD for this is a CTL-TYPE- OPTIONBUTTON, then this field contains the GOTO QuestionName, which will placed in the 'Next' buttons 'NextQuestionName', should the Recipient's operator select this control. The value (RefName) of the GotoQuestionName is chosen by the Author at design time.
if the Control ID for this is 'NEXT' ie ControlID IDOK, then this field contains the GOTO Next QuestionName chosen by 2. NextQuestionName SUBSTITUTE SHEET (Rule 26) WO 96/08779 PCTAU95/00615 64 3. PrevQuestionName 4. FieldValueUnChecked the Author at design time or by the Recipient at runtime (if Option Buttons questions).
if the Control ID for this is 'PREV' ie ControlID IDCANCEL, then this field contains the previous QuestionName that the Recipient just came from (at runtime).
if the Control TYPE for this is a CTL-TYPE- CHECKBOX, then the GOTO Name is Not Used However an extra 'UN-CHECKED' field value is required for a CheckBox so this field is used to save space.
The GroupData Structure The GroupData structure is independent from the requirements of displaying a dialogue box through the graphical user interface. The GroupData structure contains all the information about a database field, and contains an array of the ControlData structures that are associated with that database field (which contain or will contain the Recipient's answer).
Each group contains ONE database-field, so: 1. There may be MANY Option buttons in a group.
2. There may only be ONE Check box in a group.
3. There may only be ONE Numeric Data Field in a group.
4. There may only be ONE Text Data Field in a group.
Attributes DWORD 1GrpType Specifies Group Type Option, Check, Numeric, Text CString DataBaseFieldName SUBSTITE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 65 DataBase Field Name for this group of control(s) WORD wDataBaseFieldType DataBase Field Type WORD wDataBaseFieldLength DataBase Field Length String NeverSeenFieldValue Value for database field if never displayed to Recipient String ResultantFieldValue Final Value for database field when selections made WORD wSelectedControlID ID of the Control the Recipient selected BYTE bNumOfControls Number of controls in the Group Array ControlDataArray Each element is a 'ControlData' The lGrpType specifies the Group Type (Option Button, Check Box, Numeric Field, etc) and is used as a cross check against the Group's ControlData elements.
The DataBaseFieldName, wDataBaseFieldType, wDataBaseFieldLength are used in the creation of the database by the Author. Also these fields are used by the Collator when loading the Recipient's answers into the database. The DataBaseFieldName must be uniquely named across the whole Survey Document.
The NeverSeenFieldValue holds an Author designated value to be placed in the database field if the Question Box was never displayed to Recipient. When the Recipient first opens the Survey Document then the ResultantFieldValue (see next) is pre-loaded with the NeverSeenFieldValue. Equally the ResultantFieldValue are SUBSTITUTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 66 loaded with the NeverSeenFieldValue if the Recipient's operator presses the 'Previous' button thereby nullifying a selection.
The ResultantFieldValue holds the Recipient's answer to the question or the NeverSeenFieldValue field if the Question Box was never displayed to Recipient.
The wSelectedControlID holds the binary ID of the Control that the Recipient's operator selected. This is preserved in the answer document for debugging purposes, and allows the Recipient's selections to be replayed from the first Question Box.
The bNumOfControls tells the code accessing the Group structure the number of ControlData elements stored in the ControlDataArray (see next).
The ControlDataArray stores the 'ControlData' elements. Note that the mechanisms that store and retrieve ControlData elements from/to the ControlDataArray does a cross check of the Control's Type and the Group's Type.
The OuestionBox Structure The QuestionBox structure is based on MS Windows DialogHeader structure. However it is the additional fields that are important, as each graphical user interface will store its dialogue's data slightly differently.
Attributes as per MS Windows structure DWORD lQuestionStyle Specifies the Dialogue's- Window Style BYTE bNumOfControls Number of controls in the dlg box WORD wX X pos in dlg units WORD wY Y pos in dlg units WORD wWidth Width in dlg units WORD wHeight Height in dlg units String MenuName Menu Name usually nul String ClassName Class Name usually nul String Caption Title Caption on the dlg window SUBSITIUTU SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 67- WORD wPointSize Pointsize of loaded font String FontName Name of loaded font Attributes additional to MS Windows structure DWORD 1QuestionType Question Box Type String RefName Question Box reference name String PrevRefName Records where Recipient came from String NextRefName Records where Recipient went to String GotoScript Optional 'BCL' Script to be activated by 'Next' button.
WORD wQuestionNumber Records the Question creation sequence WORD wNumOfGroups Number of Groups in the Question box Array GroupArray Each element is a 'GroupData' The lQuestionType is used by this embodiment to restrict the Group 'TYPEs' per Question Box only one group of Option buttons, or several Check box groups, but not a mixture of both. The 'lGrpType' sets the 'TYPE' of the Group and does not check for compatibility with its parent question box 'TYPE' this restriction is controlled through the Question Box only allowing for extensions to multiple group 'TYPEs' if required for other embodiments.
The RefName is used when accessing the desired Question Box within the Question Box array, equally when a Question Box is placed in the array the 'RefName' is extracted from the Question Box structure and used as the index associated with the array.
The PrevRefName is used to store which 'previous' Question Box's RefName the Recipient came from, so that if the Recipient's operator presses the SUBTITTE SHEET (Rle 26) WO 96/08779 PCTAU95/00615 68 'Previous' button then the Recipient can return to the previous Question Box.
The NextRefName is used to store which 'next' Question Box's RefName the Recipient went to. This is preserved in the answer document for debugging purposes, and allows the Recipient's selections to be replayed from the first Question Box.
The GotoScript contains an optional 'BCL' (see below) program script to be activated by the 'Next' button. The 'Next' button can either: Be loaded with the RefName of the next Question Box to branch to.
Cause (in the case of option buttons) the RefName of the next Question Box to be loaded from the selected Option Button's ControlData structure.
Cause, if the GotoScript is not null, the GotoScript to read and run to compute the RefName of the next Question Box.
Note, that the GotoScript if present will override any other goto logic that may have been implemented by the Author.
The wQuestionNumber records the sequence in which the Question Boxes were created, and is used to construct an initial computer generated RefName and Caption for each Question Box.
The wNumOfGroups stores the number of Groups in the Question Box's GroupArray.
The GroupArray contains 'GroupData' elements.
Note that a variety of mechanisms exist for the storing and retrieving of GroupData elements in the GroupArray, including access with consideration of desired 'TYPE', etc.
The Survey Response Document (SVR) The SRV is fundamentally a stripped down SVQ.
It will be appreciated that having answered the questions we no longer need the question or answer texts. We simply need to store the answer values (bypassed or SUBSTITUTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 69 answered), the database field names, the database field types and the database field lengths. The strSurveyMasterPathName field of the SVQ is retained as it contains sufficient information to identify the Survey for the Collator's needs. Equally the strTableName, strDataSetName, strDataSetConnection, and DataSetDataTypeArray fields from the SVQ contain sufficient information to reconnect to or recreate the ODBC database created by the Authoring module.
The Survey Documents various stages This description refers to Figure 13.
At 103 when the Author operator chooses 'Send' the Author does the following steps: 1. The operator is asked to select an E-Mail address for the Collator, which is stored in the ReplyToInfo section of the Survey Questionnaire Document (SVQ) stored within the Survey Master Document (SVM).
2. The operator is presented with an E-Mail address selection dialogue. The operator selects various individuals and E-Mail groups. These selections are placed in the MailToSelection section of the Survey Master Document (SVM). As discussed previously, E-Mail addresses of respondents to previous surveys may also be selected.
3. The operator is also presented with a Mail Subject Text and Mail Note Text dialogue. These fields are placed in the Subject and Note Texts section of the Survey Master Document (SVM).
4. The MailToSelection is decoded by the Author into individual E-Mail addresses and stored in the Array of Recipients section of the Survey Document.
The database is then usually created, its reconnection information stored in the strTableName, strDataSetName, strDataSetConnection, and DataSetDataTypeArray section of the Survey Questionnaire Document (SVQ), and a row for each of the Recipients (assuming bFlagPrePopulate is true) is preloaded with additional fields such as the Recipient's E-Mail name and SUBSTITUTE SHEET (Rule 26) WO 96/08779 PCT/AU9500615 70 MailID, and other fields as may be set by the Options section of the program.
6. If there is no room for the full database then the operation can be aborted without having sent the survey.
7. At this point the Author saves the Survey Document with its master extension
.SVM.
At 100 the Survey Questionnaire Document
(SVQ)
section of the Survey Master Document (SVM) is extracted and written to disk, where it is combined with its associated 'methods' (Response Exe) to form a composite object (both data and executable code). The Mail Recipients and the Subject and Note texts are copied to the mail system for the SVQ to be sent to the respondents. At this point the SVQ is also mailed to the Collator E-Mail address.
At 105, 106, 107 and 108 assuming remote user completes the survey, the Respondent processes the SVQ via the following steps: i. Executes the SVQ which reads itself and presents the questions to the remote user, storing the remote users answers in SVQ itself.
2. Builds the Survey Response Document (SVR) from information contained within the SVQ.
3. Using the Collator's Mail address information it activates the MS Mail transport to send Mail messages with the attached
SVR.
At 110 and 111 the Collator processes the SVR via the following steps: 1. Reads and processes the Survey Response Document
(SVR).
2. Checks that the answer is still valid for a current survey that the associated survey exists in the Collator's register.
3. Assuming its still valid Collator updates (or inserts) the database fields with the appropriate answers extracted from each of the Question sections of the SVR.
4. Deletes the SVR and the associated message from SUBSTUTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 -71 the Mail queue.
After a certain number or percentage of returned answers, the operator will be alerted and may choose to terminate the survey by setting its status in the Collator's register. After this SVR's for this particular survey will be deleted after being identified rather than being fully processed.
6. Other features exist such as Collator sending reminders to non-responding Recipients and also resending the complete SVQ again if it has been lost by a Respondent.
Rules 1. When a new Question Box is added to the Survey Document it is created with an area at the top for the question text, and two buttons at the bottom labelled 'Next' and 'Previous'. these 3 user interface controls are regarded by the design of the Survey Document as nonactive as they contain no operator selectable answers, or database field definition information.
2. Once a new Question Box is created n the Author module it is assigned a type of 'DLG-TYPE-BASE' which is a combination of DLG-TYPE QUESTIONTEXT and DLG-TYPE-
NEXTPREVBUTTONS.
3. Once a new Question Box is created in the Author module with the type of 'DLG-TYPE-BASE' it can become any of the active or complex TPEs, however once one control is added, the Question Box becomes the TYPE of the first active/complex control. If another control type is added the question type will reflect that.
4. When a new Survey Document is created by the Author module it is made with a terminating Question Box labelled '(FINISH)'. This varies from the normal Question Box created in the Survey Document, in that it has only one button at the bottom of the Question Box.
This button is labelled 'Finish' The Survey Document master SVM is the only version of the Survey which can be edited.
6. The table creation mechanism will not allow two SUBSTUTE SHEMT (Re 26) WO 96/08779 PCT/AU95/00615 72 tables with the same name to be created within a database. If a Survey Master Document is E-Mailed again it must first specify another tablename. This safeguards the integrity of the distributed survey.
7. Through the Collator, an operator may set the cut-off point based on the number or percentage of Recipient's Survey Document answers SVR that it wishes to process. At this point the Collator will automatically set the status of this particular survey to 'suspended'.
Additional answer documents for this survey will remain in the 'in-tray' after this point has been reached in case the operator wishes to extend their chosen cut-off point.
8. Through the Collator an operator may terminate a survey by setting its status to 'terminated' in the Collator's internal register. As soon as the survey is terminated any answer documents for this survey will be erased by the Collator module.
'Branching Control Language'
(BCL)
An embodiment may utilise "branching control language" to control branching between questions in the Survey Document. This is accessed through any given question box's property dialogue and stored in the 'Next' button's ControlData structure. The 'Next' button can either: Be loaded with the RefName of the next Question Box to branch to.
Cause (in the case of option buttons) the RefName of the next Question Box to be loaded from the selected Option Button's ControlData structure.
Cause, if the GotoScript is not null, the GotoScript to read and run to compute the RefName of the next Question.Note if the GotoScript is present it will override any other goto logic that may have been implemented by the Author's operator.
The BCL allows two methods to access information from which to make branching decisions: Through the DataBaseFieldName which is uniquely SUBSITUTE SHEET (Rule 26) WO 96/08779 PCT/AU95/00615 73 named across the whole Survey Document.
Through the ItemLabel field which is uniquely named within its Question Box.
The status of any control in any Question Box, or, the selected value of any database field can be interrogated by the language.
This script has a fairly simple syntax: IF Questions(question reference).'item-label' condition AND Questions(question reference).'item-label' condition OR Questions(question reference).'item-label' condition THEN GOTO (specific question reference) ELSE GOTO (specific question reference)
ENDI)
or:
IF
AND
OR
THEN
ELSE
ENDII
F
Database('Database Field Name' value Database('Database Field Name' value Database('Database Field Name' value GOTO (specific question reference) GOTO (specific question reference)
F
Where the AND OR ELSE sections are optional.
Where represents equal to, and represents not equal to.
Where 'condition' is either 'True Selected On Checked' or 'False UnSelected Off UnChecked'.
Where 'value' is one of the possible values that the specific database field can be set to.
Both the selection status and the selected value syntaxes can be mixed together: IF Questions(question reference).'item-label' condition AND Database('Database Field Name' value THEN GOTO (specific question reference)
ENDIF
At least the preferred embodiment enables SUBSTmrTE SHET (Rule 26) WO 96/08779 PCT/AU95/00615 74 formulation by the local user of a Survey Document which incorporates complex branching pathways between questions.
Generally, any question may include a branch to any other question in the document, depending on document structure design. There may be any number of complex pathways through the document, any of which may be followed by the remote user, depending upon his given answers.
The rule is that a question cannot refer to a previously answered question, but can branch to all others. A branch can be triggered by any preceding answer or answers.
It will be appreciated that the present invention may vary from the specific features of the embodiment disclosed above. The invention has wide commercial application for information gathering purposes. It enables a user to ask any type of questions, any number of questions with any branching complexity, of hundreds or even thousands of users.
Responses are automatically processed, the pertinent information extracted and loaded into an appropriate place in a database which is automatically constructed for the local user. The user can then analyse the information anyway that he likes.
It will be appreciated by persons skilled in the art that numerous variations and/or modifications may be made to the invention as shown in the specific embodiments without departing from the spirit or scope of the invention as broadly described. The present embodiments are, therefore, to be considered in all respects as illustrative and not restrictive.
SUBSTITE SHEET (le 26) /I Object Class Definition Appendix This appendix details the header files for the object classes (data members methods) that form the three major documents types Suvey Master Document (SVM), 00 Survey Questionnaire Document (SVQ), and Survey Response Document (SVR).
Each of the three modules (Author, Respondent Collator) uses other classes not detailed herein.
The classes not covered by this appendix are specific to the particular user interface implemented for display views, the particular E-Mail transport implemented, the particular database interface system implemented in the current embodiment of the invention. As such their designs would vary from embodiment to embodiment.
The classes detailed here are those that underpin the 3 major document classes. Those document classes in turn underpin the functionality of the Author, Respondent and Collator modules in the following relationships: class CQuestionnaire The Survey Questionnaire (SVQ) underpins Author and Respondent functionality.
class CSurveyDoc The Survey Master Document (SVM) extends the SVQ for the Author module.
class CResponseDoc The Survey Response Document (SVR) underpins Respondent and Collator functionality.
U'
Whilst only the data member and method names (with occasional single line comments) is given, the names of both the data members and the methods should be sufficiently 'English' and descriptive for their function to be adequately understood.
Although only the definition of the data members methods are given when combined with the descriptions in the rest of the Patent document, a person skilled in the art should be able to readily discern how these methods would work, and be able to construct appropriate code to achieve the functionality of those classes.
As these header files are used by more than one module (common to either two or three of the modules) the following compile time definitions have been used to tailor the range of methods available to each of the modules SURVEYAUTHOR set to one if the Author module is being compiled.
SURVEY_USER set to one if the Respondent module is being compiled.
SURVEY_COLLATOR set to one if the Collator module is being compiled.
The major underpinning document classes are detailed in the following order Class CRecipientData Object for storing E-Mail Names, Addresses and UniqueIDs (MS-Mail specific) Class CRecipients Object that is an Array of CRecipients class CDlgCtlData Object for storing all control (Item) information
U
class CDlgGrpData class CDlgData Object for grouping CDlgCtlData objects, and also for holding database field information Object for storing all the Question Box information contains an array of CDlgGrpData objects Class CSurveyDataTypes Object for storing Survey's data type definitions Class CDataSetDataType Object for storing ODBC's data type definitions (MS-ODBC specific) class CQuestionnaire class CSurveyDoc The Survey Questionnaire
(SVQ)
The Survey Master Document (SVM) class CResponseGrpData Object for storing strip down information from an associated CDlgGrpData object.
class CResponseDlgData Object for storing strip down information from an associated CDlgData object.
class CResponseDoc The Survey Response Document (SVR)
IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIILIIIII/IIIIII//
Object Class Definition Appendix This appendix details the header files for the object classes (data members methods) that form the three major documents types Suvey Master Document (SVM), Survey Questionnaire Document (SVQ), and Survey Response Document (SVR).
Each of the three modules (Author, Respondent Collator) uses other classes not detailed herein.
The classes not covered by this appendix are specific to the particular user interface implemented for display views, the particular E-Mail transport implemented, the particular database interface system implemented in the current embodiment of the invention. As such their designs would vary from embodiment to embodiment.
The classes detailed here are those that underpin the 3 major document types used by this invention.
Whilst only the data member and method names (with occasional single line comments) is given, the names of both the data members and the methods should be sufficiently 'English' and descriptive for their function to be adequately understood.
Although only the definition of the data members methods are given when combined with the descriptions in the rest of the Patent document, a person skilled in the art should be able to readily discern how these methods would work, and be able to construct appropriate code to achieve the functionality of those classes.
As these header files are used by more than one module (common to either two or three of the modules) the following compile time definitions have been used to tailor the range of methods available to each of the modules SURVEY_AUTHOR set to one if the Author module is being compiled.
SURVEY_USER set to one if the Respondent module is being compiled.
SURVEYCOLLATOR set to one if the Collator module is being compiled.
The major underpinning document classes are detailed in the following order Class CRecipientData Object for storing E-Mail Names, Addresses and UniqueIDs (MS-Mail specific) Class CRecipients Object that is an Array of CRecipients class CDlgCtlData Object for storing all control (Item) information class CDlgGrpData Object for grouping CDlgCtlData objects, and also for holding database field information class CDlgData Object for storing all the Question Box information contains an array of CDlgGrpData objects Class CSurveyDataTypes Object for storing Survey's data type definitions Class CDataSetDataType Object for storing ODBC's data type definitions (MS-ODBC specific) class CQuestionnaire The Survey Questionnaire (SVQ) class CSurveyDoc The Survey Master Document (SVM) Ul class CResponseGrpData Object for storing strip down information from an associated CDlgGrpData object.
class CResponseDlgData object for storing strip down information from an associated CDlgflata object.
class CResponseDoc The Survey Response Document (SVR) /Class CRecipientData class CRecipientData public Cobject /Constructors Destructor public: CRecipientData (CString CString CRecipientData (CS tring CString
DWORD
CByteArray&: RecipientDataName, RecipientoataAddress); RecipientDataName, RecipientDataAddress, lRecipientUniqueIDSize, RecipientUniqueIDData '/Friendly' Name of Recipient IAddress of Recipient '/Friendly' Name of Recipient /Address of Recipient /Num of Bytes in Recipient tiniquelfl IRecipient UniqueID CRecipientData(lpMapiRecipDesc pRecip); virtual -CRecipientData 0; Ifserialization CRecipientData 0; DECLARESERIAL (CRecipientData) IAttributes protected: /destructor /create for serialization CString CString
DWORD
CByteArray /Operations protected: public: mrLstrRecipientName; mrkstrRecipientAddress; rL-lRecipientUniquelDSize; n_-RecipienttjniqueIDData; 'IFriendly, Name of Recipient IAddress of Recipient INUn of Bytes in Recipient UniquelD IRecipient UniqueID C1~ecipientData& CRecipientflata::operator=Cconst CRecipientData& Src); IIAssignment Operator CRecipientData& CRecipientData::operator=(lp~apiRecipDesc IpRecip); //Special Assignment Operator void Initialise 0; BOOL IsEmptyo; CString GetRecipientName 0; CString GetRecipientAddress 0; DWORD GetRecipientUniqueflSizeo 4; void GetRecipientUniqruelDData(CByteArray& RecipientUniqueIDData); void GetRecipientUniqueIDData(LPVOID pRecipientUniqueIDlfata); void SetRecipientName (CString strRecipientName); void SetRecipientAddress (CString strRecipientAddress); void SetfecipientUniqueIDData (CByteArray& RecipientUniquelDData, DWORD lRecipientUniqueIDSize void SetRecipientUniquelflData (LPVOID RecipientUniqueIDoata, DWORD lRecipientUniqueIDSize 1Implementation public: virtual void Serialize(CArchive& ar); //overridden for document i/o #ifdef -DEBUG public: virtual void AssertValid() const; virtual void Dump(CDwnpContext& dc) const; #endif 1Class CRecipients class CRecipients public Cobject /Constructors Destructor public: CRecipients 0; virtual -CRecipients0; IIdestructor /Serialization E protected: DECLARE-SERIAL(CRecipients) Attributes protected: CObArray m.ecipientArray; create for serialization only Each element is a "CRecipientData.
1/ Operations public: void void int CRecipientoata* void AddRecipient(CString strRecipientName, CString strRecipientAddress); AddRecipient (CRecipientoata* pRecipientData); GetflumOfRecipients o; GetRecipientData(int nNum); DeleteRecipientArrayo; Implementation public: virtual void Serialize(CArchive& ar); overridden for document i/o #ifdef -DEBUG public: virtual void AssertValid() const; virtual void Dump(CfumpContext& dc) const; #endif Iclass CDlgCtlData DEFINITION IThe DlgCtl is based around the creation of a dialog from a template /1in memory.
class CDlgCtlData :public CObject public: CDlgCtlData
(WORD
WORD
WORD
WORD
wX,
WY,
wWidth, wHeight, X pos in dig units Y pos in dlg units Width in dig units Height in dig units WORD WCtlID, DWORD iCtiStyle, BYTE bClassID, DWORD iCtiType, CString strCtlText); /ID for messages from the control IWindow Style Radio, Default, Group etc /Class ID Button, Edit, Static, etc /Control Type IfControl Text virtual -CDlgCtlData0; IIdestructor IISerialization protected: IIcreate from serialization only CDlgCtlData0; //create from serialization only DECLARE-SERIAL C CDlgCtlData IIAttributes as per ControlData structure WORD lluwX; pos in dlg units WORD nuLwY; IIY pos in dlg units WORD mi wWidth; IIWidth in dlg units WORD mn.wHeight; IIHeight in dlg units WORD n-wCtlID; //ID for messages from the control DWORD mrklCtlStyle; //Window Style Radio/Check, Default, Group etc BYTE m-bClassID; IfClass ID Button, Edit, Static, etc CString nrLCtlText; IIControl Text BYTE RLubBytesToNextCtl; IIAlways null IfAttributes additional to ControlData structure DWORD nr lftlType; IIControl Type (holds Survey's definition) WORD m-_wCtlSeqNumber; IICtl's creation sequence number WORD nuwAssociatedCtllD; //Associated Ctl's ID (usually Edit to Static) CString nuLSelectedFieldValue; IIValue for db-field if this ctl selected CString MGotoDlgName; //Dlg to goto if this ctl selected IfNote: If NextDlgName; Ifif the Control ID for this /1is 'NEXT' ie CtlID IDOK, //then this field contains the IIGOTO Next DlgName chosen //by the Author at design tine //or by the user at runtime (if Option Buttons questions).
//Note: II PrevDlgNane; Ifif the Control ID for this UncheckedFieldvalue; /1is 'PREV' ie CtlID IDCANCEL, IIthen this field contains the //previous DigName that the User //just came from (at runtime).
1/Note: /1if the Control ID for this is a //CHECKBOX then the GOTO Name //is Not Used! //However we require an extra //"UN-CHECKED" field value for a //Check~ox so we use this field //to save space add confusion).
CWnd mpCtlWnd; //ptr to Cti's CWnd mnt mL-nSeiectState; /Operations protected: public: CDlgCtlData& CDlgCtlData::operator=(const CDlgCtlData& Src); //Assignment Operator #if SURVEY-AUTHOR void ImportData (CString LineBuffer); #endif SURVEYAUTHOR void BuiidTempiate(CByteArray *DlgTemplate, int n); WORD GetXpos() return mrLwX; /X pos WORD GetYpos() return m-wY; IY pos WORD GetWidth() return mr wWidth; IWidth WORD GetHeight() return m.wHeight; IHeight DWORD GetCtistyle() return m CtiStyle; *void SetCtlStyle( DWORD New (mjlCtlStyle New; BYTE GetCJlassID() return n-bCiassID; mnt GetCommandlD() return (int) mrkwCtiID; void SetCommandID(int nCtiID) nwCtiID (WORD) nCtlID; CString GetGotoDlgName() return nLGotoDlgName; void SetGotoDigName(CString New) mGotoDlgName New; CString GetCtiText() return mrtCtlText; void SetCtlText(CString CtlText) mrCtiText CtiText; in dig units in dig units in dig units in dig units CString GetSelectedFieldvalue() return m._Selected'ieldValue; void SetSelectedFieldValue(CString New) m-SelectedpieldValue New; CString GetOptionChosenValue() return m-SelectedFieldValue; void SetaptionChosenValue(CString New )0 (m-SelectedFieldValue New; CString GetChecked~ieldValue() return m-SelectedFeldValue; I00 void SetCheckedFieldValue(CString New -4 {m-Selectedpieldvalue New; DWORD GetCtlType() return rnlCtlType; void SetCtlType( DWORD New m-iCtiType New; int GetCtlSeqNumber() return (int) n-wCtlSeqNumber; void SetCtlSeqNunber( mnt nNew m-wCtlSeqNumber (WORD) nNew; int GetAssociatedCtlID0( return (int) m~wAssociatedCtlID; void SetAssociatedCtlID( int nNew m-wAssociatedCtlID (WORD) nNew; mnt GetSelectStateol return mnnselectState; void SetSelectState(int nState) I mnSelectState nState;
L
1Specials :See Note re 'm.GotoDlgName' above CString GetNextDlgName 0; CString GetPrevDlgName 0; CString GetUnCheckedFieldValue 0; void SetNext~igName (CString NextDlgName I void SetPrevDlgNane (CString Prev~igName void Set~nCheckedFieldValue( CString UnCheckedFieldValue I i mplementation public: virtual void Serialize(CArchive& ar); //overridden for document i/o #ifdef -DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif
ICM
II class CDlgGrpData DEFINITION The DlgGrp is a Survey construct independant from the requirements of creating a dialog from a template in memory.
Each group contains ONE db-field, so 1) There may be MANY Option buttons in a group 2) There may only be ONE Check box in a group 3) There may only be ONE Numeric field in a group 4) There may only be ONE Text field in a group 5) There may be MANY Labels in a group class CDgGrpData public Cbject class CDlgGrpData public CObject Constructors Destructor public: CDlgGrpData(DWORD lGrpType, BYTE bNumOfCtls); virtual -CDlgGrpData(); Specifies Group Type Option, Check, Numeric or Text, etc Number of controls in the Group destructor create from serialization only create from serialization only Serialization protected: CDlgGrpData(); DECLARESERIAL(CDlgGrpData) Attributes protected:
DWORD
BYTE
CString
WORD
WORD
CString CString
WORD
WORD
CObArray m_lGrpType; m_bGrpNumOfCtls; m_DatabaseFieldName; m_wDatabaseFieldType; m_wDatabaseFieldLen; m_FieldValueResult; m_NeverSeenValue; m_wFieldSequenceNum; m_wSelectedCtlID; m_CtlArray; Specifies Group Type Option, Check, Numeric or Text, etc Number of controls in the Group Database Field Name for this (control) (group of controls) Database Field DataType Survey's Data Type Not ODBC Type Database Field Length Used only for 'Text' fields Final Value for dbfield when selections have been made Value for dbfield if never displayed to user Database Field Sequence Order For Writing To Final OutPut File ID of the Control the User Selected Each element is a "CDlgCtlData" IIoperations public: CDlgcrpData& void
WORD
DWORD
CString CString CString
WORD
WORD
WORD
WORD
void void void void void void void void CDlgCtlData* CDlgCtlData* void void void
BOOL
CDlgGrpData::operator=(const CDlgGrpData& Src); //Assignment operator Buildpemplate(CByteArray *Byte~rray); GetGrpb~umOfCtls() return inbGrpNumOfCtls; GetGrpType() return m-lGrpType; GetNeverSeenValueo) return inNeverSeenValue; GetpieldValueResult() return m-.FieldValueResult; GetDatabaseFieldNane( return 1n.DatabaseFieldName; GetoatabaseFieldType() return mrtwDatabaseFieldType;I GetDatabaseFieldten() return inywDatabaseFieldLen; Get~ieldSequenceNun( return nl-w~ieldSequenceNum; I GetSelectedCtlID() return nrkwSelectedCtlID; SetNeverSeenValue (CString NeverSeenValue) Set~ieldValueResult (CString FieldValueResult) SetDatabaseFieldNane (CString Database~ieldName) SetDatabaseFieldType (WORD wDatabaseFieldType) SetDatabase~ieldten (WORD wDatabaseFieldLen) SetFieldSequenceNum (WORD wFieldSequenceun SetSelectedCtlID WORD wSelectedCtllD Init~ieldValueResulto( in_NeverSeenValue nFieldValueResult InDatabaseFieldName mn_wDatabaseFieldType rn-wDatabaseFieldLen in_wFieldSequencewum in_wSelectedCtllD zk_FieldValueResult NeverSeenValue; FieldValueResult; DatabaseFieldName; wDatabaseFieldType; wDatabaseFieldLen; wFieldSequenceNum; wSelectedCtlID; miNeverSeenValue; GetCtlNun(int nCtlNum); GetCtlWithCtlID(int nIDCtl); AddCtlToGrp(CDlgCtlData*'& pCtlData, mnt nCtISeqNumber); RemoveCtlFroinGrp(CDlgCtlData*& pCtlData); RemoveAllCtlsFronGrpo(; RemoveCtlIDFromGrp(int nIDCtl);
BOOL
BOOL
BOOL
BOOL
IsGrpActiveo( Is~rplnterActiveoC IsGrpQuestionTexto( IsGrpNextPrevButtonso( [return BOOL (rnjlGrpType ACTIVETYPESMASK);I (return BOOL (njGrpType INTERACTIVE_TYPES_.MASK); I return BOOL (njWrpType GRP_TYPEQUESTIONTEXT);) return BOOL (in lGrpType GRPTYPENEXTPREVBUTTONS); /Implementation public: virtual void SerializeCCArchive& ar); IIoverridden for document i/o #ifdef -DEBUG public: virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif /class CDlgData DEFINITION class CDlgData public Cojalog IConstructors Destructor public: virtual CDlgData(CString RefName); IfDlg Name Constructor -CDlgDatao; IIdestructor //Serialization protected: CDlgData U; DECLARE-SERIAL (CDlgData) /create from serialization only Icreate from serialization only IAttributes protected: /Attributes as per DialogBoxHeader structure
DWORD
BYTE
WORD
WORD
WORD
WORD
CStrinq CString CString
WORD
CString mrLlDlgStyle; m~bDlgNumOfCtls; mr_wX; mrLwY; nr_wWidth; m_wfleight; mr_MenuName; mkClassName; niCaption; m..wPointSize; mr_FontName; Specifies the Dialog-window style Number of controls in the dig box p05 in dig units pos in dig units Width in dig units Height in dig units Menu Name -usually nul Class Name -usually nul Title Caption on the dig window always used as DS..SETFONT in "lDlgStyle" always used as DS-SETFONT in "lDlgStyle" /Attributes additional to DialogBoxHeader structure DWORD m-lDlgType; /1Surveys Dialog-Type RB, CHK, GRID, COMBO WORD mr_.wNumOfcrps; IINumber of Grps in the dig box CString mRefName; IIuser's reference name typically the same as m-Caption
WORD
CString CString
WORD
WORD
m_wModalFlag; mPreyName; n..NextName; mrLwDlgNumber; m_wLastCtlSeqNujm; Flag indicating its modal or nodeless Records where user came from Records where user went to Records the Dig creation sequence Records the Controls creation sequence numbers CObArray iqGrpArray; C~b~ray Gr~rra;// Each element is a "CDlgGrpData" IfNon-serialised members CByteArray m.ByteArray; //internal template HGLOBAL mrLhTemplatemenory; IICopy of handle for destructor0 void FAR m-pTemplateMemory; Ifpointer to template in memory IOperations 0.1 "0 protected: 1 void DumpTemplate 0; long BuildTemplate(DWORD lDlgStyle OL); void LoadTenplate( DWORD lDlgStyle OL); public: CDlgData& operator=(const CDlgData& Src); //Assignment Operator DWORD GetDlgStyle() return q-1DlgStyle; void SetDlgStyle( DWORD New mlDlgStyle New; DWORD, GetDlgrypeo return nj-DlgType; void SetDlgType( DWORD New f m..lDlgType New; WORD GetXC) return MwX; void SetX( WORD New nrwX New; WORD GetYC) return mwY; void SetY( WORD New. m-wY New; 00 WORD GetWidth() return m-wWidth; void SetWidth( WORD New m..yWidth New; WORD GetHeight() return mrkwHeight; void SetHeight( WORD New m~wHeight New; CString GetDlgName() return m.YefName; void SetDlgName( CString New ff mRefName New; I WORD GetPointSize() return mnwPointSize; void SetPointSize( WORD New n-wPointSize New; CString GetFontName() return mrkFontNane; void SetFontName( CString New I{ m..FontName New; CString GetPrevName() return mrLPrevName; void SetPrevName(CString New) m-PrevName New; void ClrPrevName() m._PrevName.Emptyo; I CString GetNextName() return mnNextName; void SetNextNaine(CString New) m.NextNaie New; void ClrNextName() m.LNextName. Empty() WORD GetolgNumber() return mwDlgNumber; void SetDlgNuxnber(WORD New) C mrLwDlgNunber New; int GetLastCtlSeqNum() return (int) m..ywLastCtlSeqNum; void SetLastCtlSeqNum(int nNew) n1.wLastCtlSeqNum (WORD) nNew;) CString GetCaption() return mCaption; void SetCaption(CString New) mrLCaption New; void AddGroup (WORD wGrpNun, DWORD lGrpType); void AddControl(WORD iwGrpNum, CDlgCtlData*& pCtlData); void RemoveGroup (CDlgorpData*& pGrpData); mnt GetNumOfGrps() return (int) mrLwNunOfGrps; o int int int void void void int int GetNumOfActiveGrps (DWORD lWantedGrpType); IsDuplicateOptionValue 0; IsDuplicateOptionValue(int nCtlID, CString str~ieldValue); InitAllACtiveGrps 0; SetFirst 0; ClearFirstoC; GetDlgNumOfCtls() {return i_bDlgNumOfCtls; GetGrpNumber (CDlgGrpData* pGrpData); GetGrpWithCtllD(int nIDCtl); GetCtlWithCtlID(int nIDCti); ISDlgflisplayed 0; GetGrpFroinGrpNum C mt nWantedGrpNum); CDlgGrpData* CDlgCtlData*
BOOL
CDlgGrpData* #fif SURVEY-AUTHOR
BOOL
void ScanGroups 0; ImportData(CString ImportPathNaie); BOOL GetGrpDescriptions (WORD int CString& CString& CString& CString& CString& CString& CString& wWantedGrpNun, nSelectedCtlID, GroupDescription, ControlDescription, DatabaseFieldName, NeverSeenValue, FieldValueResult, SelectedpieldValue, GotoDlgNane); Base 1 #fendif If SURVEYAUTHOR #fifdef -DEBUG void ShowValues (CString DescWhere); ifendif LIDEBUG /Implementation public: virtual void Serialize(CArchive& an); overridden for document i/o #fifdef _DEBUG public: virtual void AssertValido const; virtual void Dump(CDumpContext& dc) const; ifendif /1 Class CSurveyDataTypes class CSurveyDataTypes public CObject 00 Constructors Destructor 4 public: CSurveyDataTypes o; virtual -CSurveyataTypeso; II destructor /1 Attributes protected: CStringArray n1strDataTypeArray; CWordArray mLwDataTypeArray; II Operations public: co WORD GetDataTypeWordFromString(CString strDatabase~ield~ype); CString GetDataTypeStringFromWord(WORD wDatabaseFieldType); int GetNumberOfDataTypes o; If Implementation *ifdef DEBUG public: virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif /1 Class CDataSetDataType
'I
class CDataSetDataType public CObject SConstructors Destructor 0 a public: CDataSetDataType (CString strDataSetTypeNam4 WORD wODBCDataType, CString strPrecision, CString strCreateParams virtual -CDataSetDataType 0; I(1) The DSN's DataType Name I(2) The ODBC DataType Number The DSN's Precision The DSN's Create Params str /destructor /create for serialization only /create for serialization only 1/Serialization protected: CDataSetDataType 0; DECLARE-_SERIAL (CDataSetDataType) /Attributes protected: CString
WORD
CString CString n-strDataSetTypeName; m-wODBCDataType; m-strPrecision; mt.strCreateParams; I(1) The DSNs I(2) The ODBC I(3) The DSN's The DSN's DataType Name DataType Number Precision Create Params str IIOperations public: CDataSetDatarype& CDataSetDataType::operator=(const CDataSetDataType& Src); //Assignent operator int CString
WORD
CString CString GetDataTypeLevel (WORD wSurveyDataType); GetDataSetTypeName() return mnt strDataSetTypeName; GetODBCDataType() return nLwODBCDataType; GetPrecision() return m -strPrecision; GetCreateParams() I return nrstrCreateParams; void SetDataSetTypeName(CString strDataSetTypeNane) mstrDatasetTypeName strDatasetTypeName; void SetODBCDatarype (WORD WODBCDataType) f nuwODBCDataType =WODBCDataType; void SetPrecision(CString strPrecision) n--strPrecision strPrecision; void SetCreateParains(CString strCreateParams) Cm-strCreateParams strCreateParams; IImplementation public: virtual void Serialize(CArchive& ar); overridden for document i/o #ifdef _DEBUG public: virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif /class CQuestionnaire DEFINITION class CQuestionnaire :public Cobject friend class CSurveyDoc; IISerialization public: CQuestionnaireo; DECLARESERIAL (CQuestionnaire) //Attributes protected: 1The Document Reference Name CString m-strSurveyMasterPathName; hf The Document Flags Options BOOL mbFlagPrePopulate; BOOL m-bFlagRetainAfterReply; BOOL mbFlagFol lowUp; BOOL m~bFlagSpare; IThe DLG Info Follows CString mnstrFirstDlgName; CString m.strSelectedDlgName; CString m-strPreviousDlgName; CMapStringToOb mDlgMap; IDeclare CsurveyDoc as a friend Ifcreate for serialization only Icreate for serialization only Name of this survey long name for document /Pre-Populate Database 'Update, instead of 'Insert- /Keep for later use effects DB index to include date received /Used when running from an previous survey //Spare Ithe first one to start with IfCurrently selected Dlg Name IPreviously selected Dlg Name IEach element is a "CDlg~ata" INumber of Dlgs in the survey /Storage for Next Question Num /Storage for Next DB Field Num IE-Mail Reply To Info
WORD
WORE)
WORD
m-wNumOfDlgs; InwNextQues tionNum; m-wNextDBFieldNum; IThe E-MAIL Info Follows CRecipientData mMailReplyTolnfo; The DSN Info Follows CString zt~strTableName; CString m.s trDataSetName; CString mLstrDataSetConnection; CabArray nL.DataSetDataTypeArray; /Font Info Follows WORD m..wPointSize; CString nm._strFontName; IName of this survey's Table within the Data Set IName of this survey's Data Set /Completed Connection String for this Data Set IfEach element is a *CDatasetDataType- Ialways used as DSLSETFONT in "lMgStyle" Ialways used as DS-SETFONT in "lDlgStyle" IDataBase Options WORD n-bFieldLendBaseCompliant; IThe Following Data Members are not serialized C~lgoata m-pSelectedDlg; ptr to currently selected Dlg int m,..nCurrentQuestionNum; Storage for Current Question Num CSurveyDataTypes m-SurveyDataTypes; IfOperations protected: BOOL GetSelectedolg(CString &DlgName, CDlgData*& pDlgData); POSITION GetFirs tDlgPos 0; void GetNextDlg(POSITION& pos, CDlgData*& pDlgData); BOOL IsDlgSelectedo; BOOL DeleteDlgSub(CString &strDlgName); public: Iffirst In-Line CString GetSurveyMasterPathName() return mrkstrSurveyMasterPath~ame; void SetSurveyMasterPathName(CString strSurveyMasterPathName) mkstrSurveyMasterPathame =strsurveymasterPathame,
BOOL
BOOL
BOOL
BOOL
void void *void void
WORD
GetFlagPrePopulateo( GetFlagRetainAfterReply() GetFlag~ollowUpo( GetFlagSpare() SetFlagPrePopulate (BOOL SetFlagRetainAfterReply
(BOOL
SetFlagFollowtlp (BOOL SetFlagSpare (BOOL GetliumOfDlgs() return mnbFagPrePopulate; return m._bFlagRetainAfterReply; return mrLbFlagFollowUp; return mrkbFlagSpare; bNew) mrLb~lagPrePopulate bNew) mbFlagRetainAfterReply bNew) mbFlagFollowup bNew) mbFlagSpare return mn_wNuniOf Digs; bNew; bNew; bNew; bNew;
WORD
CString
BOOL
CString CString GetNextQuestionNum() GetFirstDlgNane0( ISFirs tDlgSelec tedoC GetSelectedDgNaneo GetPreviousDlgNaneoC return n-wNext~uestiojqum; return nLstrFirstDlgName; return I m-strFirstDlgNalne.IsEmpty0; return m,_strSelectedDlgName; return Il~strPreviousDlgName; CString GetTableNaieo) return m~strTableName; CString GetDataSetName) *return mRstrataSetqae; CString GetDataSetConnection() return rr.strDataSetCorinection; void SetTableName(CString strTablefame) m-strTableName void SetflataSetNameCCString strDataSetNane) nr strDataSetfane void SetDataSetConnection (CString strDataSetConnection) m-str~ataSetConnection Ithen normal 0 -4 strTableName; str~ataSetNane; strDataSetConnection; void DeleteContents 0; int CopyDlgToDoc(CDlgData* pDlgData, BOOL bOverWrite, int &nListAction); BOOL CopyfllgFromDoc(CString &strDlgName, CDlgData4 p~lg~ata); void GetmailReplyl'olnfo(CRecipientnata &ReplyTo); void ReportSaveLoadException(const char* pszPathNane, CException* e, BOOL bSaving, UINT nIDPflefault); IBEGIN :SURVEY AUTHOR ONLY Methods Wi SURVEY_AUTHOR Iffirst In-Line WORD GetDataTypeWordFromString( CString str~atabaseFieldrype (return in SurveyoataTypes.GetDatarypeWordFromstring( strDatabaseFieldrype CString GetoataTypeStringFronWord( WORD wDatabaseFieldType) return m..-SurveyDataTypes.GetDataTypeStringFromWord( wDatabase~ieldType 1 int GetNumberof DataTypesoC rettirn ik_SurveyDataTypes.GetNumberOfoataTypeso;
WORD
void GetPointSizeo SetPointSize( WORD New return mwPointSize; rniwPointsize New; CString GetFontName() return ni_strFontNane; void SetFontNane( CString New C mn.strFontNaine New; IIDataBase options BOOL GetFieldLendBaseComplianto Ireturn mbFieldLendBaseCompliant; void SetFieldLendBaseCompliant (BOOL bNew) {mjilenasonlit bew mbFieldLendBaseCompliant bNew; /then normal void SetFirstDlgName( CString &strDlgName); void RetrofitNextGotoDlgName cmt nEntrySequenceNumber); void RetrofitDeletedfllgName(CString &strDeletedDlgName, CString &strGotoDlgName); BOOL Deletefllg(CString &strDlgName, CString &strGotoDlgName); int RenameDlglnDoc(CDlgData* pDlgData); int GetNextFieldSequenceNumo; void SetNextFieldSeluenceNuxn(int nFieldSeqNum); void GetI~extNameFromEntrySeqNum(int nCurrentEntrySequencewumber, CString &strDlgName); void GetPreviousNameFromEntrySeqNum(int nCurrentEntrySequenceNumber, CString &strfllgName); mnt GetPreviousEntrySequenceNumber (mt nCurrentEntrySequenceNumber); void RetrofitChangedDlgName(CString &strOldDlgName, CString &strNewDlgName); BOOL IsDuplicateDatabaseField~ame (CString &strDlgName, mnt nGrpNum, CString &strDatabaseFieldName); void Ini tAllActiveGrps 0; IDisplay List Stuff Follows: int initDlgsSelectionList(CListBox *pListBox, CString &CurSelection); int InitDlgsSelectionrist(CListBox *pListBox, CString &CurSelection, mnt nSelectStyle); void SetDlgsFont 0; void InitQuestionnaireo; /E-Mail Stuff void SetMailReplyTolnfo(CRecipientlata &ReplyTo); /SVQ Save Stuff BOOL SaveQuestionnaire (const char* pszPathName); /ODBC DataTypes Stuff void AddDataSetDataType(CDataSetDataType*& pDataSetDataType); #endif //SURVEYAUTHORQ IEND SURVEY AUTHOR ONLY methods '0 I START SURVEY-RESPONSE ONLY Code /Prlt- 0 #if SURVEY-USER void BuildSurveyResponseFile(CStrig &strMailDocFileName); BOOL Openouestionnaire( const char* pszPathName #endif II if SURVEY-USER I/ END SURVEY-RESPONSE ONLY Code void DeleteDataSettataTypeArrayo; II Implementation public: virtual -CQuestionnaire 0; virtual void Serialize(CArchive& ar); II overridden for document i/o #ifdef -DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; Ln lendif II class CSurveyDoc DEFINITION class CSurveyfoc public CDocument protected: create from serialization only CSurveyDoc 0; DECLAREDYNCREATE (CSurveyDoc) II Attributes protected: II The Document Type Status LONG m_lDocumentType; Document Type Status
C
C
IThe Questionnaire Document CQuestionnaire mr.SVQ; IThe E-MAIL Info Follows CString m...strMailSubj ectText, CString lT~strMailNoteText; CRecipients m..Recipients; IThe ODBC Info Follows CabArray m_.DataSetDa taTypeArray; IQuestion Box Options WORD m...wQuestionBoxLeftMargin; WORD mwQues tionBoxTOpMargin; WORD mLwQuestionBoxWidth; WORD ml~wQuestionBoxHeight; WORD rr-yQuestionTextWidth; WORD m._wQuestionTextHeight; WORD m~wQues tionTextLeftMargin; WORD m-wQues tionTextTopMargin; WORD mrLwltemsLef tMargin; WORD m-wCentre~uestionpext; /E-Mail Subject Text IE-Mail Note Text IThe Recipients Object Each element is a "CRecipientData.
IEach element is a "C~ataSet~ataType" /Default Values CString mstrNeverSeenValue; CString m.strNeverSeenSelection; CString M-StrOptionChosenValue; CString nLBtrOptionchosenSelection; CString mstrCheckBoxTruevalue; CString mL-strCheckBoxTrueSelection; CStrimg mqs trCheckBoxFalseValue; CString m-strCheckBoxFalseSelection; CString IlustrNumericrieldType; CString m-.StrNumericTypeSelection; CString M-s trGotoDlgName; CString m~kstrGotoDlgSelection; 1View Options BOOL m-bDisplayToolBar; BOOL mbDisplayStatusBar; WORD zl-wEditStayOnTop; IIProperties Dialog Position WORD mL-wOptionButtonPropertiesjcpos; WORD M-yOptionButtonPropertiesYpos; WORD m~wCheckBoxPropertiesjXpos; WORD m..yCheckBoxProperties-Ypos; WORD m..wNuiericFieldPropertiesjXpos; WORD myt~uniericFieldProperties..pos; WORD m~wAlphaNunmericProperties-Xpos; WORD m~wAlphaNuinericProperties. Ypos; WORD mwStaticTextPropertiesjXpos; WORD mnyStaticTextProperties-Ypos; WORD m~wQuestionBoxPropertiesjcpos; WORD in.wQuestionBoxProperties-Ypos; IThe Following Data Members are not serialized CSize m..sizeDoc, CObArray int int IOperations protected: void m..DisplaylnfoArray; m..nCurrentlnfoRow; in_nListType, IEach element is a "CDisplaylnfo" ICurrently Selected 'Row' in Info Array tl Type of List For CSurveyView Display EzptyDlgsDisplayList 0; public: Ifirst In-Line CQuestionnaire *GetQuestionnaireoC CSize
LONG
BOOL
BOOL
BOOL
BOOL
void void voidvoid GetDocSize() GetDocuinentTypeoC GetFlagPrePopulateo( GetFlagRetainAfterReplyoC GetFlagFollowUpoC GetFlagSpareoC return &mSVQ;) return nr sizeDoc; return mIn~DocuinentType; return MSVQ.mr bFlagPrePopulate; return mSVQ .nbFlagRetainAfterReply; (return uLnSVQ.inrLbFlagFollowUp; (return mrLSVQ.mbFlagSpare; SetFlagPrePopulate (BOOL SetFlagRetainAfterReply (BOOL SetFlagFollowUp (BOOL SetFlagSpare (BOOL bNew) m..-SVQ.rnibFlagPrePopulate bNew) rn..SVQ.m.._bFlagRetainAfterReply bNew) ir..SVQ.inbFlagFollowUp= bNew) in.SVQ.m~bFlagSparebNew; bNew; bNew; bNew; CString GetSurveyMasterPathName C return m-..SVQ m.strSurveyMasterPathNane; void SetSurveyMasterPatNane (CString strSurveyMasterPathNane) n.L.SVQ.mnstrSurveyMasterPathNane strSurveyMasterPathNane; WORD GetNunOfDlgs() CString GetFirs tDlgNaineoC Ireturn mSVQ.mkwNunOfDlgs; return m..SVQ.strFirstDlgName; BOOL IsFirstDlgSelected() return nLSVQ.mstrFirstDlgName.IsEmptyo; I CString GetSelectedDlgNane( return nL.SVQ.mrstrSelectedlgNane; CString GetPreviousDlgNane( return mSVQ.mrstrPrevioUSDlgName; CString GetMailSubjectText() return m..strMailSubjectText; CString GetMailNoteText return m..strMailNoteText int GetMailSubjectTextLength( (return m..strMaiSubjectText.GetLengtho; int GetMailNoteTextLengtho( return m-strMailNoteText.GetLengthfl; CString GetTableNameo) return nL.SVQ.mnstrTableNane; void SetTableName (CString strTableName) rqSVQ.mnstrTableName strTableName; CString GetflataSetName() return n.SVQ.mRstroataSetName; void Set~ataSetNane (CString strDataSetName) LvSVQ.mrstrDataSetName strflataSetName; CString GetDataSetConnection() return m. SVQ.m strDataSetConnection; void SetDataSetConnection (CString strDataSetConnection) nr SVQ.rnkstrDataSetConnection strDataSetConnection; void FileSave() OnFileSave(); void FileSaveAs()( OnFileSaveAsoI; IIthen normal void SetDocumentType (LONG lDocumentType); void DeleteDat&SetDataTypeArrayo; void DeleteContents 0; int CopyDlgToDoc(CDlgData* pDlgflata, BOOL bOverWrite, BOOL bSetDocumentmodified =TRUE); BOOL CopyDlgFromDoc(CString &strDlgName, CDlgData* pDlgData); void GetMailReplyTolnfo(CRecipientData &ReplyTo); /BEGIN ±SURVEY AUTHOR ONLY Methods #if SURVEY_AUTHOR Ifirst In-Line WORD GetDataTypeWord~romString( CString strflatabaseFieldType (return surveyDataTypes.GetDatayeWordromString( strDatabasepieldType CString GetDataTypeStringFromWord( WORD wDatabaseFiedpype) (return suvyaaye.e~tayetigrmod woatabasepieldrype int GetNumberOf DataTypeso( (return SurveyDataTpes-GetNumberofDataTypeso;I int GetListType() return rL-nListType; void SetListType(int nListType) m...nListType nListType;I WORD GetPointSize() return m-SVQ.mrLwPointSize; void SetPointSize( WORD New mnSVQ.nrLwpointSize New; CString GetFontNane() return nLSVQ.mr_strFontName; void SetFontName( CString New (mr_SVQ.rn _strF'ontName New; IDataBase Options BOOL GetFieldLendBaseComplianto( void SetFieldLendnaseCompliant (BOOL bNew) IQuestion Box options WORD GetQuestionnoxneftMargin() void SetQuestionfloxLeftMargin (WORD wNew) WORD GetQuest ionBoxTopMargin void SetQuestionBoxTopMargin (WORD WNew) WORD GetQuestionBoxWidtho( void SetQuestionBoxWidth (WORD wNew) WORD GetQuest ionBoxHeight C void SetQuestionBoxHeight (WORD wNew) WORD GetQuestionTextWidtho( void, SetQuestionTextWidth (WORD wNew) WORD GetouestionTextHeighto( void SetQuestionTextHeight (WORD wNew) WORD GetQuestionTextLeftMargin() void SetQuestionTextLeftMargin (WORD wNew) WORD GetQuestionTextTopMargino( void SetQuestionTextTopMargin (WORD wNew) WORD GetltemsLeftMargino return n.SVQ.nr b~ieldLendBaseConpliant; nSVQ.n LbFieldLendBaseCompliant bNew; return n-wQuestionBoxLeftMargin; mwuestionBOXLeftMargin wNew; return n-wQuestionBoxTopMargin; nrwuestionBoxTopMargin wNew; return IlwQuestionBoxWidth; n-wQuestionBoxWidth wNew; return rl-wvuestionBoxHeight; m~wQuestionBox-eight wNew; return m..wQuestionTextWidth; m-wuestionTextWidth wNew; return m..-wQuestionpextlieight;
I
m-wQuestionTextHeight wNew; return IT.-wQuestionTextLeftMargin; nrk-wQuestionTextLeftMargin wNew; return m-wQuestionTextTopMargin; nwuestionTextTopMargin WNew;I return nl-wltemsLeftMargin; void
WORD
void SetltemsLeftMargin (WORD wNew) GetCentreQuestionTeXto( SetCentreQuestionText (WORD wNew) mwltemsteftMargin wNew; {return nMlvCentreQuestionText;I (MyCentreQuestionText WNew; IDefault Values CString GetNeverSeenValue() void SetNeverSeenValue (CString New) CString GetNeverSeeniselect ion void SetNeverSeenSelection (CString New) CString GetOptionChosenValueoC void SetOptionChosenValue (CS tring New) CString GetOptionChosenSelectiono( void SetOptionChosenSelection(CString New) CString GetCheckBoxTrueValueo( void SetCheckBoxTrueValue (CString New) CString GetCheckBoxTrueSelectiono( void SetCheckBoxTrueSelection (CString New) CString GetCheckBoxpalseValueo( void SetCheckBoxFalseValue (CString New) CString GetCheckBoxFalseSelectionoC void SetCheckBoxFalseselection (CString New) CString GetNuniericFieldrypeoC void SetNumeric~ieldType(CString New) CString GetNumericTypeSelectionoC void SetNumericTypeSelection (CString New) CString GetGotoDlgNaneOC void SetGotoDlgName(Cstring New) CString GetGotoDlgSelectiono( void SetGotoDlgSelection CCString New) return urnstrNeverSeenValue; M-strNeverSeenValue =New; return M-strNeverSeenSelection;
I
n-strNeverSeenSelection New; return rrLstrOptionChosenValue;I mLstrOptionChosenValue New; return m..strOptionChosenSelection;
I
mnstrOptilonChosenSelection New; (return m strCheck~ox~rrueValue; strCheckBoxTrueValue New; (return nikstrCheckBoxTrueSelection; rtstrCheck~oxTrueSelection New; {return mrLstrCheckBoxFals6Value;I fnm-strCheckBoxFalseValue New; return m -strCheckBoxFalseSelection; rnlstrCheckBoxpalseSelection =New; (return nukstrNuxnericFieldType; m yistrNumericField'ype New; (return mrstrNunericTypeSelection;I (mstrNmericTypeSelection =New; return nmstrGotoDlgName; m-strcotoDlgName New; return rnLstrGotoDlgSe lectioh; I IT-strGotoDlgSelection New;) IView options BOOL GetDisplayToolBaroC void SetDisplayToolBar(BOOL wNew) BOOL GetDisplayStatuslaroC return n bDisplayToolBar; I m-bDisplayrool~ar wNew; return nbDisplayStatusBar; void
WORD
void SetDisplayStatusBar (BOOL wNew) GetEditStayOnropo( SetEditStayOnTop (BOOL wNew) IProperties Dialog Position WORD GetoptionButtonPropertiesxpos C void SetaptionButtonPropertiesXpos (WORD wNE WORD GetOptionButtonPropertiesYposo( void SetOptionButtonPropertiesYpos (WORD WNE WORD GetCheckBoxPropertiesXposoC void SetCheckBoxPropertiesXpos (WORD wNew) WORD GetCheckBoxPropertiesYpos void SetCheckBoxPropertiesYpos (WORD wNew) WORD GetNumericFieldProperties-Xposo( void Setl~uxericFieldPropertieslcpos (WORD wNe WORD GetNumericFieldProperties-Yposo( void SetNumericFieldPropertiesYpos (WORD wNe WORD GetAlphaNunericProperties-Xpos 0 void SetAlphaNumericProperties-Xpos (WORD wNe WORD GetAlphaNumericPropertiesYposo( void SetAlphal'umericPropertiesYpos (WORD wNe WORD GetStaticTextProperties-Xposo( void SetStaticTextProperties.Xpos (WORD wNew) WORD GetStaticTextProperties-Yposo( void SetStaticTextProperties-Ypos (WORD wNew) WORD GetQuestionBoxPropertiesXposo void SetQu~estionoxProperties-Xpos (WORD wNew WORD GetQuestionBoxPropertiesYposo( void SetQuestionBoxProperties-Ypos (WORD wNew mbDisplayStatusaar wNew;) return mfwEditStayonTop; mfLwEditStayOnTop wNew; return m.wOptionButtonProperties-Xpos; n-woptionButtonPropertiesXpos wNew; return m -wOption~uttonProperties-Ypos; rrwOptionButtonProperties.-Ypos =wNew; return m..YwCheckBoxPropertiesXpos; n.JvwCheckBoxPropertiesXpos wNew; return rwCheckBoxProperties-Ypos; ff jwCheckBoxPropertiesYpos wNew; (return in wNuiericFieldProperties-Xpos; W) rn-wNumeric~ieldPropertiesXpos wNew; (return n wNumericFieldProperties-Ypos; W) m1w~uericFieldPropertiesYpos wNew; (return in wAlphaNumericProperties-Xpos; W) mwAlphaNumericProperties.Xpos wNew; (return in wAlphaNumericProperties-Ypos;) W) f nr -wAlphaNumericPropertiesYpos w~ew; (return m.wStaticTextProperties.Xpos; f mwStaticTextPropertiesXpos wNew; (return in..StaticTextPropertiesYpos; rkwStaticTextPropertiesYpos wNew; (return nlw~uestionBoxPropertiesjXpos; m-w~uestionBoxPropertiesXpos wNew; (return m-wQuestionBoxProperties-Ypos;) mwouestionftxPropertiesYpos wNew; I Ithen normal void SetFirstDlgNane( CString &strDlgName); void RetrofitNextGotoDlgNane (mt nEntrySequenceNunber); BOOL DeleteDlg(CString &strDlgName); int RenameDlglnDoc(CDlgData* pDlgData); void GenerateQuestionReferenceName(CString& strWork); void GenerateDatabaseFieldName(CString& strWork, mnt nPart 1; int GetNextFieldsequencek~umo; void SetNext~'ieldSequenceNum(int nFieldSeqNum); void GetNextNameFromEntrySeqNum(int nCurreritEntrySequenceNumber, CString &strDlgName); void GetPreviousNaineFromEntrySeqNun(int nCurrentEntrySequenceNumber, CString &strDlgName); -1 int GetPreviousEntrySequenceNumber (mt nCurrentEntrySequenceNumber); void RetrofitChangedDgName (CString &strOldDlgName, CString &strNewDlgName); BOO, IsDuplicateDatabaseFieldName (CString &strolgName, int nGrpNum, CString &strDatabaseFieldNaxne); void InitAllActiveGrpso; /Display List Stuff Follows: void SortDlgsDisplayList 0; void RemoveFromDlgsDisplayList(CString &strDlgNane, BOOL bSortList TRUE); void AddToDlgsDisplayList( CString &strDlgName, BOOL bSortList TRUE); 0 void BuildDlgsflisplayListo; void GetOutputLineltens(int nRow CString& strDlgName CString& DlgNumber CString& DlgDesc CString& DBaseFieldName CString& NeverSeenValue C~tring& FieldValueResult CString& FieldValueSelected CString& UnCheckedFieldvalue CString& GotoDigName CString& CroupDesc CString& CtlDesc int& nLineType int& nFieldNum int& nGrpNum int& nCtlID int GetActiveRowfl; mnt GetRowCounto; mnt GetCtlIDFromgelectedRow(int nRow); void ChangeSeleetionToRow(CView* pView, mnt nRow); void UpdateAllViewsWithDlgName(CView* pSourceView, CString &strDlgName); void UpdateAllViewsWithlow(CView* pSourceView, UINT nolgNumber); irit InitDlgsSelectionListCCListBox *pListBox, CString &CurSelection); irit InitfllgsSelectionList(CListBox *pListBox, CString &CurSelection, int nSelectStyle); void SetDIgs Font 0; void CreateExitDlgo; void InitNeverSeenValue (CComboBox *pcbNeverSeenValue, 0 CString NeverSeenValue); void InitOptionChbsenValue (CComboBox *pcbpieldValueSelected,0 CString FieldValueSelected, a BOOL bOptionButtonProperties), 4 void initCheckBoxTrueValue (CComboBox *pcbheckedFieldvalue, CString CheckedFieldValue); void InitCheckBoxFalseValue (CCoinboBox *pcbUnCheckecdFieldValue, CString UnCheckedFieldValue); void InitNumnericFieldType CCComboBox *pcbNumericFieldType, CString strNumericFieldType); void InitGotoDlgNane(CCoxnboBox *pcb~otoDlgName, CString CurrentDlgNane, CString GotofligName); void InitDatabaseFieldType (CComnboBox *pcbDatabaseFieldType, CString strDatabaseFieldType); IE-Mail Stuff void SetMailReply'rolnfo(CRecipientData &ReplyTo); void DeleteRecipientArrayo; void AddRecipient(CString strRecipientName, CString strRecipientAddress); CRecipients& GetRecipients 0; IIThe Recipients Object -Each element is a "CRecipientData" IISQSave Stuff BOOL SaveQuestionnaire(const char* pszPathName); protected: virtual BOOL OnNewDocunent 0; *endif J/ SURVEYAUTHOR /END SURVEY AUTHOR ONLY Methods /BEGIN SURVEY AUTHOR SURVEY COLLATOR ONLY Methods Wi SURVEYAUTHOR 11SURVEYCOLLATOR public: Ifirst In-Line void SetMailSubjectText(CString New) m.strMailSubjectText New; void SetMailNoteText (CString New) mustrMailNoteText New; /then normal CRecipientData* GetRecipient(int nNum);0 mnt GetNumOfRecipients 0; CoataSetflataType* GetDataSetDataType(int nNum); -4 int GetNumOfoataSetDataTypes 0; BOOL IsODBCDataTypeUsed(WORD WODBCDataType, WORD wAutolncrement); CString GetODBCTypePart(WORD wSurveyDataType, int nDatabaseFieldLen); CString BuildCreateStatenent(CStriig &strTableName); CString BuildlnitialRowCreateStatenent (CString &strTableName, CString &strMailUserName, CString &strMailUserAddress, CString &strMailDateSent, CString &strMailDateReceived); #endif //end if SURVEYAUTHOR 11SURVEY-COLLATOR /END SURVEY AUTHOR &x SURVEY COLLATOR ONLY Methods /Implementation public: virtual -CSurveyoo virtual BOOL SaveModifiedo;0 virtual void Serialize(CArchive& ar); IIoverridden for document i/o #ifdef -DEBUG virtual void AssertValid(o const; virtual void Dump(CDtumpContext& dc) const; *endif protected: void InitDocumento; /Override of CDocument virtual BOOL OnOpenDocument( const char* pszPathName /Generated message map functions protected: AFXJ4SGCCSurveyDoc) afx.jsg void OnFileSaveo; afx-msg void OnFileSaveAsfl; afx~jnsg void OnFileCloseo; It) )AFX.MSG
DECLARE_MESSAGE_MAP()
CtA #if SURVEYAUTHOR 11SURVEYLCOLLATOR
CA
BOOL GetResponselnfoFromResponseFile (CString &strMailDocFileName, CString &strSurveyName, CString &strflataSetName, CString &strDataSetconnection, BOOL &bUpdate, BOOL &bRetainAfterReply); BOOL BuildUpdateStatementFromFile (CString &strMailDocFileName, CString &strMailUserName, CString &strMailUserAddress, CString &strMailReceivedDate, CString &strUpdateStatement); BOOL BuildlnsertStateinentFromFile (CString &str~ailDocFileName, CString &strZ~ailUserName, CString &strMailUserAddress, CString &strMailDateReceived, CString &strlnsertStatement); void DataSetError(HENV hEnv, HDEC hDbc, HSTMT hStmt, CString &strFunction, CString &strRoutine, CString &strStateCode); #endif IIend if SURVEYAUTHOR 11StRVEY.-COLLATOR Iclass CResponseGrpData DEFINITION class CResponseGrpData :public CObject /Constructors Destructor public: CResponseGrpData (DWORD lGrpType); virtual -CResponseGrpData 0; //Serialization protected: CResponse~rpoata 0; DECLARE_SERIAL (CResponseGrpData) Ifdestructor /create from serialization only /create from serialization only /Attributes protected:
DWORD
BYTE
CString
WORD
WORD
CString IOperations public:m_iGrpType; mubGrpNumOfCtls; mtLDatabaseFieldName; m-woatabaseFieldType; m-wDatabaseFieldLen; m_FieldValueResult; ISpecifies Group Type Option, Check, Numeric or Text, etc /Number of controls in the Group IDatabase Field Name for this (control) (group of controls) /Database Field DataType Survey's Data Type Not ODBC Type /Database Field Length Used only for 'Text, fields IFinal Value for dbfield when selections have been made CResponseGrppata& CResponseGrplata& DWORD Gel CString Gel CString Gel WORD Gel WORD Get CResponseGrpData: :operator= (const CResponseGrpData&. Src); CResponseGrpData: :operator=(const CfllgGrpData& Src); /Assignment operator ISpecial Assignment Operator tGrpTypeo( tFieldValueResultoC tDatabaseFieldNameo( tDatabaseFieldTypeo( DatabaseFieldtenoC return nt lWrpType; return myL.ieldValueResult; return m.LDatabaseFieldName; return rl-wDatabase~ieldType; return imLwDatabaseField~en; 0 a 00 -4 void SetFieldValueResult (CString FildValueResult) m.FieldvalueResult FieldValueResult; void SetDatabaserieldName(CString DatabaseFieldName) mrLDatabaseFieldame DatabaseFieldName; void SetDatabaseFieldType(WORD wDatabaseFieldType) mr-wDatabaseFieldrype wDatabaseFieldType; void SetDatabaseFieldLen (WORD wDatabaseFieldLen) m-wDatabaseFieldLen wDatabaseField~en; IImplementation public: virtual void Serialize(CArchive& ar); /1overridden for document i/o #ifdef _DEBUJG public: virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif /class CResponseDlgData DEFINITION class CResponseDlgData public Cflialog /Constructors Destructor public: virtual CResponsefllgData(CString RefName); //Dig Name Constructor -CResponseDlgDatao; /1destructor IISerialization protected: CResponseDlgflatao; DECLARE_SERIAL (CResponseDlgData) /Attributes /create from serialization only create from serialization only protected:
WORD
CString mrj CString rIL CString m CObArray m_ IOperations public: CResponseDlgData& CResponseDlgData& WNumOfGrps; RefName; PreyName; .1extNaine; ~rpArray; /Number of Active Grps in the dig box /user's reference name typically the same as maption /Records where user came from IRecords where user went to /Each element is a "CResponseGrpData" operator=(const CResponseDlglata& Src); operator=(const CDlgData& Src); /Assignment Operator ISpecial Assignment Operator CString void CStrimg void GetPrevNameoC SetPrevName (CString New) GetNextNameoC SetNextName (CString New) return m..PrevName; m-PrevName New; return im..NextName; mrkNextName New; int GetNumafGrps() return (int) m..wNumOfGrps; mnt GetNumOfActiveGrps (DWORD lWanted~rpType); mnt GetGrpNumber (CRespomseGrpData* pGrpData); CResponseGrpData* GetGrp~romGrpNumdint nWantedGrpNum); IImplementation public: virtual void Serialize(CArchive& ar); //overridden for document i/o #ifdef -DEBUG public: virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; lendif /class CResponseDoc DEFINITION class CResponseDoc public CObject friend class CQuestionnaire; IIDeclare CQuestionnaireas a friend //Serialization public:± CResponseDoco; DECLARESERIAL (CResponseDoc) /1Attributes protected: IThe Document Reference Name CString R-strSurvey4asterPat,~ame; IThe Document Flags Options BOOL n-bFlagPrePopulate; BOOL mLbFlagRetainAfterReply; CMapStringToOb m-ResponseMap; create for serialization only /create for serialization only /Name of this survey long name for document /Pre-Populate Database 'Update- instead of 'Insert' /Keep for later use effects DB index to include date received /Each element is a "CResponseolgData" /Number of Dlgs in the survey /Name of this survey's Table within the Data Set /Name of this survey's Data Set /Completed Connection String for this Data Set /Each element is a "CDataSetDataType*
WORD
ITLwNumOfDlgs; /The DSN Info Follows CString m.strTableNane; CString rLstrDataSetName; CString m-strDataSetConnection; CObArray BmDataSe tDataTypeArray; //DataBase Options WORD n-bFieldLendnasecompliant; IThe Following Data Members are not serialized CResponseDlgData rl-pSelectedResponseDlg; CSurveyDataTypes mr SurveyDataTypes; 1/Operations ptr to currently selected ResponseDig protected: BOOL GetSelectedResponseDlg(CString &DlgName, CResponseDlgData*& PResponseDlgData); POSITION GetFirstResponseDlgPos 0; void GetNextResponseDlg(POSITION& pos, CResponseolgData*& pResponseDlgData); public: Ifirst In-Line CString GetSurveyMasterPatNajne( return mstrSurveyMasterPat~ae; void SetSurveyMasterPat~ae (CString strSurveyMasterPathjame) Im__strSurveyMasterPathame strSurveyMasterPathame; BOOL GetFlagPrePopulate() return nqb~lagPrePopulate; BOOL GetFlagRetainAfterReply() return nrkbFlagRetain~fterReply;
I
void Set~lagPrePopulate (BOOL bNew) mr bFlagPrepopulate bN4?w; void SetFlagRetainAfterReply(BOOL bNew) nrLbFlagRetainAfter~eply bNew; I WORD GetNumOfolgs() return mwNumnofDlgs; C'String GetTablewame() return zn-strTableName; void SetTablewame (CString strrableName) M_.strTableName strTableNaie;I CString GetDataSetName(o return u~strDataSetName; void SetDataSetName (CString str~ataSetwame) (mr stroataSetName strflataSetName; CString GetflataSetCorlnection() return m-stroataSetConnection; void SetDataSetConnection (CString stroataSetConnection) mr strlataSetConnection stroataSetConnection; 1then normal0 void DeleteContents 0; int CopyDlgToDoc(CD~gData* pDlgData); //Special Copies 'Full' Dig to SVR BEGIN :SURVEY AUTHOR and COLLATOR ONLY Methods #if SURVEY_AUTHOR IISURVEY _COLLATOR /first In-Line WORD GetoataTypeWordpromString( CString strDatabase~ieldType (return mnSurveyDataTyes.GetDataTyeWordromString( strDatabaseFieldrype CString GetoataTypeStringpromWord( WORD wDatabaseFieldType) (return m-uvyaaye.e~aayetigrmod wDatabaseField~ype int GetNumberOfoataTypeso( {return nr SurveyDataTypes.etNumerOfData~.ypeso IDataBase Options BOOL GetFieldLendnaseCompliant() return nr bFieldLendBaseCompliant; void Set~ieldLendnaseCompliant (BOOL bNew) xtbiededaemlit=bewI rk-bFieldLendBaseCompliant bNew; Ithen normal /SVR Save Stuff0 BOOL SaveResponse (const char* PszPathName); -4 IODEC DataTypes stuff void AddDataSetDataType (CDataSetDataType*& pDataSetDatarype); #endi f //if SURVEYAUTHOR 11 SURVEY-COLLATOR IIEND SURVEY AUTHOR and COLLATOR ONLY /START :SURVEY-RESPONSE ONLY Code #if SURVEY_-USER 0 void BuildSurveyResponseFile (CString &strMailDocFileName); #endif IIif SURVEY-USER 1END SURVEY-RESPONSE ONLY Code void DeleteDataSetriataTypeArray 0; /Implementation public: virtual -CResponseDoc 0; virtual void Serialize(CArchive& an); overridden for document i/o *ifdef _DEBUG virtual void, AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif #if SURVEYAUTHOR 11 SURVEY-COLLATOR BOOL GetResponsenfoFromesponse~.ile (CString &strMailDoc~'ileName, CString &strSurveyName, CString &strDataSetName, CString &strDataSetConnection,.BOOL &bUpdate, BOOL &bRetainAfterReply); BOOL BuildUpdateStatementpromFile (CString &strMailDocFileNane, CString &strMailUserName, CString &strMailUserAddresso CString &strMai1ReceivedDate, CString &strt~pdateStatement); BOOL BuildlnsertStatemefltFrOmFile (CString &strMailDocFileName, CString &strMailt~serName, CString &strMailUserAddress, CString &strMailDateReceived, CString &strlnsertStatement); void DataSetError(HENV hEnv, HDBC hflbc, HSTMT hStmt, CString &strFunction, CString &strRoutine, CString &strStateCode); 00 CAo 0\ Ic 0t

Claims (56)

1. A system for obtainina and collatinq survey information from a plurality of computer users, said system comprisinq a processinq apparatus includinq an input means via which a survey author may input data, and a survey authoring means enablinQ construction of a survey questionnaire document for each of a plurality of associated surveys, each survey questionnaire document includinq at least one question, for the respective associated survey, formulated in response to data input by a survey author; transmission means for transmittinq the survey questionnaire document for each survey to a plurality of respondents for each survey; and a processing apparatus including a collation means arranqed to receive transmissions from the transmission means, to identify a response document responsive to a survey questionnaire document, which include responses to the at least one question from the plurality of respondents, and to process the response document for at least one of updatinq S: records and adding records to a database associated with the survey for the particular survey document, in accordance with the responses. 9*
2. A system in accordance with claim 1, wherein the survey authoring means is arranqed to construct a database for receiving database field values in response to the at least one question.
3. A system in accordance with claim 2 wherein each field in the database is identified by a "column" label associated with the at least one question and a "row" label associated with the identity of the respondent who is providing the 113 response.
4. A system in accordance with claim 3, wherein the collating means is arranged to add the "row" labels in response to the processing of received responses. A system in accordance with claim 3, wherein the survey authoring means is arranqed to construct the database including the "row" label in response to data input by the survey author.
6. A system in accordance with claim 1, wherein the survey authoring means enables construction of a survey document containing a plurality of questions.
7. A system in accordance with claim 6, the survey authoring means enabling the construction of a survey questionnaire document structure in which at least one of the plurality of questions is linked, so that a determination of whether to ask additional questions of a respondent is dependent on responses provided by the respondent to S previously asked questions. *i 8. A system in accordance with claim 6, the survey @WCS authoring means including a branch control means which 0 enables construction of the linked survey questionnaire document structure on the basis of data input by the survey 0* author, the branch control means including branch control operator commands selectable by the survey author to govern the linked structure.
9. A system in accordance with claim 3, wherein the survey authoring means is arranged to enable preparation of a 114 survey questionnaire document which specifies a plurality of allowable answers to the at least one question so that respondents receiving the survey questionnaire document may select at least one of the allowable answers as a response. A system in accordance with claim 9, wherein the survey authoring means is arranged to enable construction of a survey questionnaire document wherein, for a question, the plurality of allowable answers are specified by an option button grid, having rows and columns providing a matrix of cells for selection.
11. A system in accordance with claim 10, the option buttons grid having title heads for each row and column in the matrix, and wherein a database field value to be entered in the appropriate database field if the associated allowable answer is specified, is desiqnated from components of the row 999999 and column head for the particular grid cell. 9 o9
12. A system in accordance with claim 9, wherein the Ssurvey authoring means is arranged to enable construction of 9* a survey questionnaire document wherein for a question, the plurality of allowable answers are specified by at least one *994 S: of a check box grid and numeric field grid, having rows and columns providing a matrix of cells for receiving the allowable answers. 999***
13. A system in accordance with claim 12, wherein the grids have row and column heads and wherein the survey authoring means is arranged to construct the database with a separate column label for each allowable answer available in at least one of the check box grid and numeric field grid, and the column labels are derived from components of row and 115 column heads.
14. A system in accordance with claim 13, wherein the survey authoring means is arranged to enable construction of a survey questionnaire document wherein, for a question, an allowable answer is in the form of at least one of a text and a numeric format to be input by the respondent. A system in accordance with claim 14, wherein the survey authoring means enables the survey author to an allowable field length for the text or numeric answer.
16. A system in accordance with claim 3, wherein the survey authoring means enables construction of the survey questionnaire document so that if a question is not asked of a respondent a "never seen" value is included as the database field value in the database field for that question for that respondent.
17. A system in accordance with claim 9, wherein the survey authoring means enables construction of a survey .3 0e questionnaire document wherein, for a question, the allowable answers are specified by a mixture of at least two of a numeric field grid, option button, grid, check box grid, text OQO• 0. a field and numeric field. 0:0:18. A system in accordance with claim 9, wherein the survey authoring means enables construction of a survey .i questionnaire document wherein, for a question, the allowable answers are specified by at least one of a check box, a plurality of check boxes, an option button, and a plurality of option buttons. 116
19. A system in accordance with claim 3, wherein the survey authoring means enables the survey author to determine the column label for a particular question on the basis of data input by the survey author. A system in accordance with claim i, wherein the survey authoring means is arranged to provide a respondent control means for transmission with the survey questionnaire document the respondent control means being arranged to control a respondent users computer to process the survey questionnaire document.
21. A system in accordance with claim 1, further comprising a respondent processing means including a respondent control means arranged to control the respondent processing means to process the survey questionnaire document.
22. A system in accordance with claim i, wherein the processing of the survey questionnaire document on the respondent's computer is arranged to result in production of the response document including responses formulated from data input by the respondent, and further includes an identifier which identifies which survey questionnaire S document the response document was produced from. 0000 "23. A system in accordance with claim 22, wherein the processing is arranged to automatically transmit the response document to the collating means. 00000. O*eo0
24. A system in accordance with claim 1, wherein the o0oo• transmission means is electronic mail, and the survey questionnaire document is transmitted to an electronic mail 117 address. A system in accordance with claim 24, wherein the electronic mail address may be at least one of a bulletin board address and an electronic mail address of at least one of individuals, groups and respondents to previous survey questionnaire documents.
26. A system in accordance with claim 24, wherein the survey authoring means is arranged to construct the survey questionnaire document to include the electronic mail address of the collation means.
27. A system in accordance with claim 25, wherein the processing results in a response document which includes the address of the collation means is attached to mail message which includes the address of the collation means.
28. A system in accordance with claim 24, wherein the collation means is arranged to scan all electronic mail received at the processing apparatus, for response documents, to identify the response documents and to identify and locate the database for the particular survey questionnaire and to ~load the database.
29. A system in accordance with claim 28, wherein the collation means is arranged to identify electronic mail addresses of respondent users from response documents and 9*9999 S messages accompanying response mail, and to load the database with the electronic mail addresses. A system in accordance with claim i, further including a scan test means arranged to scan a survey document to test 118 for errors in the construction of the survey document, and to notify the survey author of any errors.
31. A system in accordance with claim 22, wherein the response document includes a database construction means which is used to construct the database from information contained in data input by the respondent user.
32. A method for obtaining and collating survey information from a plurality of computer users, comprising the steps of operating a processing apparatus including an input means via which a survey author may input data, and a survey authoring means enabling construction of a survey questionnaire document for each of a plurality of associated surveys, in order to produce a survey document including at least one question for a respective associated survey; transmitting the survey document to a plurality of computer users; operating a processing apparatus which includes a collation means arranged to receive transmissions, to S identify a response document responsive to the survey questionnaire document, which includes responses to the at least one question from a plurality of respondents, to S process the response document for at least one of updating S records and adding records to a database associated with the survey for the particular survey document, in accordance with the responses.
33. A method in accordance with claim 32, further comprising the step of operating the processing apparatus to automatically construct the database including a field for S receiving responses to the at least one question. 119
34. A method in accordance with claim 33, wherein the step of constructing the database includes the step of identifying each field in the database by a "column" label associated with the at least one question and a "row" label associated with the identity of the respondent providing the response used to load the particular field. A method in accordance with claim 32, the step of constructing the survey questionnaire document including constructing it to contain a plurality of questions.
36. A method in accordance with claim 35, wherein the step of constructing the survey questionnaire document including linking the plurality of questions to each other so that whether more than one question is asked of the respondent is dependent on responses by the respondent user to previously asked questions and is also dependent on whether at least one question is asked of a respondent.
37. A method in accordance with claim 36, wherein the step of linking a plurality of questions includes providing branching control commands with the survey questionnaire document, the branching control commands governing the linked structure and being selectable by the survey author.
38. A method in accordance with claim 34, wherein the step of constructing the survey questionnaire document includes the step of specifying a plurality of allowable answers to the at least one question, so that respondents S receiving the survey document may select at least one of the allowable answers as a response.
39. A method in accordance with claim 38, wherein the 120 step of constructing the survey questionnaire document includes, for a question, the step of specifying the plurality of allowable answers by an option buttons grid, having rows and columns providing a matrix of cells for selection. A method in accordance with claim 39, the step of specifying the option buttons grid including specifying title heads for each row and column in the matrix, and the step of designating the database field value to be entered in the appropriate database field if the associated allowable answer is specified, involves formulating the database field value from components of the row and column head for the particular grid cell.
41. A method in accordance with claim 38, wherein the step of specifying a plurality of allowable answers for a question includes specifying at least one of a check box grid and a numeric field grid, having rows and columns providing a matrix of cells for selecting the allowable answers. ae S42. A method in accordance with claim 41, wherein the step of specifying at least one of a numeric field grid and check box grid includes the step of specifying row and column heads, and wherein the step of constructing the database includes the step of constructing the database with a separate column label for each allowable answer available in at least one of the check box grid and numeric field grid, *4aaaa aoo and deriving the column labels from components of row and S column heads. S• 43. A method in accordance with claim 38, wherein the step of constructing the survey questionnaire document 121 involves specifying an allowable answer in the form of at least one of a text and a numeric answer to be input by the respondent, and the further step of specifying an allowable field length for the answer.
44. A method in accordance with claim 38, wherein the construction of a survey questionnaire document includes the step of including a command in the survey document that if a question is not asked of a responding user, then, on collation, a "never seen" value will be included in the database field for that question for that respondent user. A method in accordance with claim 37, wherein the step of constructing the survey questionnaire document involves specifying, for a question, the allowable answers as a combination of at least two of a numeric field grid, option buttons grid, check box grid, and text field.
46. A method in accordance with claim 32, wherein the step of constructing the survey document includes providing a respondent control means for transmission with the survey oo questionnaire document the respondent control means being arranged to control a respondent users computer to process the survey questionnaire document.
47. A method in accordance with claim 32, further comprising the step of controlling a respondent users computer to process the survey questionnaire document.
48. A method in accordance with claim 46, wherein the step of controlling the respondent's terminal includes processing of the survey questionnaire document to produce a response document including a response formulated from data 122 input by the respondent user.
49. A method in accordance with claim 32, wherein the step of processing the survey questionnaire document includes providing a response document with a database construction means which enables a database to be constructed on collation. A method in accordance with claim 47, including the step of automatically transmitting the response document to a location where the document will be collated, on completion of the processing to produce the response document.
51. A method in accordance with claim 32, wherein transmissions of the survey document and response document are by electronic mail.
52. A method in accordance with claim 51, wherein the electronic mail address may be at least one of a bulletin board address and an electronic mail address of individuals and groups.
53. A method in accordance with claim 52, wherein the step of constructing the survey questionnaire document S includes constructing the document to include the electronic mail address of the processing means which will carry out 9 collation. 9* S" 54. A method in accordance with claim 51, wherein the step of collating includes scanning all electronic mail received at the collation means address for response documents, to identify and locate the database for the survey and to load the database in accordance with the response. 123 A method in accordance with claim 54, wherein the step of collating includes controlling the collating processing means to identify electronic mail addresses of respondent users from response documents or attached messages and to load the database with the electronic mail addresses.
56. A method in accordance with claim 31, wherein the step of collating includes controlling the collating processing means to identify electronic mail addresses of respondents from response documents or attached messages and to load the database with the electronic mail addresses.
57. A processing apparatus for enabling construction of a survey questionnaire document, comprising an input means via which a survey author may input data, a survey authoring means enabling construction of a survey questionnaire document for each of a plurality of associated surveys, each survey questionnaire document including at least one question, for the respective associated survey, formulated from data input by the survey author and a location address of a processing apparatus including a collator means arranged to collate response documents produced by respondents processing the survey questionnaire document, by at least one of updating records and adding records to a database 9 S associated with the survey for the particular survey questionnaire document, in accordance with the responses. 4*
58. A survey questionnaire document structure, the document being employable by digital document processing systems to gather information from a plurality of respondent computer users, the document structure including: a location address for a collation means for receiving response documents to the survey questionnaire document from 124 respondent users, and the collation means being arranged to add to or update a database in accordance with responses from the response documents; and directions enabling control of a computer to display one or more questions to-be answered by a user.
59. A processing apparatus for collating response documents received from a plurality of respondents in response to their receiving a survey questionnaire document from a processing apparatus in accordance with claim 57, including a collator means arranged to monitor incoming transmissions from a transmission means and identify response documents transmitted to the processing apparatus, which include responses, to process the response documents by identifying the associated survey and to add to or update a database associated with the survey in accordance with the responses. A processing apparatus for receiving and processing survey questionnaire documents produced by an apparatus in accordance with claim 57, including a respondent ~control means arranged to process the survey questionnaire document in accordance with data input by a respondent, to produce a response document including a response to the at S least one question. 9999
61. A computer-readable memory including a set of S instructions for enabling a computer to enable construction 9*9999 S of a survey questionnaire document, the document being 999999 S employed to gather information from a plurality of respondents, the instructions providing the computer with a S* survey authoring means enabling construction of a survey document for each of a plurality of associated surveys, each 125 survey document including at least one question, for the respective associated survey, formulated from data input to the computer by a survey author, and a location address for a collation means for receiving and collating response documents from respondent users in response to their processing the survey questionnaire document by at least one of updating records and adding records to a database associated with the survey for the particular survey questionnaire document in accordance with the responses.
62. A computer-readable memory storing a set of instructions that provide a computer with a collator means, for collating response documents in response to a survey questionnaire document produced by a processing apparatus in accordance with claim 57, the collator means operating the computer to monitor incoming transmissions for response documents to identify the survey associated with the response documents, and to add to or update a database associated with the survey in accordance with responses. roooo
63. A computer-readable memory storing a set of commands that provide a computer with a respondent control means for processing a survey questionnaire document produced by the apparatus of claim 57, to produce a response document Sincluding a response to the at least one question, to be S transmitted to a location of a collation means for collating responses. 9**0*0 S" 64. A method of controlling a processing apparatus to construct a survey questionnaire document for obtaining information from a plurality of respondent users, the S* processing apparatus including an input via which a survey author may input data, and a survey authoring means enabling 126 construction of a survey questionnaire document for each of a plurality of associated surveys, in order to produce a survey document including at least one question for a respective associated survey the method comprising the steps of: controlling the processing apparatus to donstruct a survey questionnaire document including at least one question formulated from data input to the processing apparatus by a survey author; and to include a location address of a processing means for collating responses to the survey from respondent users to add to or update a database associated with the survey for the particular survey document, in accordance with the response. A method of collating response documents prepared by respondent users in response to a survey document constructed in accordance with claim 64, the method comprising the steps of: controlling a processing apparatus to monitor incoming transmissions to the processing apparatus and identify response documents to the survey questionnaire document is transmitted to the processing apparatus and to process the o response documents to add to or update a database in accordance with the responses to the at least one question. a
66. A method of controlling a processing apparatus to process a survey questionnaire document produced in accordance with the method of claim 64 to produce a response document formulated from data input by a respondent user, the method comprising the steps of: o controlling the processing apparatus to display the at S least one question for input of a response by the respondent user; and 127 controlling the respondents computer to prepare a response document for transmission to the collating processor.
67. A processing apparatus in accordance with claim 57, wherein the survey authoring means is arranged to construct the database for receiving database field values in response to the at least one question.
68. A processing apparatus in accordance with claim 57, wherein the survey authoring means enables construction of the survey questionnaire document to include a plurality of questions in which some or all of the plurality of questions are linked, so that whether or not one or more questions are asked of a respondent user may depend on preceding responses to another or others of the plurality of questions or whether a question or questions are a question is asked of a respondent user.
69. A processing apparatus in accordance with claim 68, wherein the survey authoring means including a branch control means which enables construction of a linked survey o document structure on the basis of data input by the survey author, the branch control means including branch control operator commands selectable by the survey author to govern the linked structure. V*
70. A processing apparatus in accordance with claim 67, wherein column headings of the database are automatically ree prepared from components of the question. r S" 71. A processing apparatus in accordance with claim 57, wherein a respondent control means is provided for transmission with the survey questionnaire document, the tT 128 respondent control means being arranged to control a respondent user's computer to process the survey questionnaire document.
72. A processing apparatus in accordance with claim 57, wherein the survey questionnaire document is produced by the survey authoring means to include an electronic mail address and the survey questionnaire document is arranged to be transmitted by electronic mail.
73. A processing apparatus in accordance with claim 72, wherein the survey authoring means is arranged to construct the survey questionnaire document to include the electronic mail address of the collator means.
74. A processing apparatus in accordance with claim 57, wherein the survey authoring means beingarranged to construct survey questionnaire documents for transmission to respondent users who have previously answered surveys, the respondent users transmitted to being determined on the basis of previous responses. I' 75. A survey questionnaire document structure in accordance with claim 58, including a plurality of questions S in a linked structure, so that whether or not one or more questions are asked of a respondent user may depend on S responses to another or others of the plurality of questions or whether a question or questions are asked of a respondent user. 9 "76. A survey questionnaire document structure in accordance with claim 75, wherein the link structure is controlled by a branch control means. 129
77. A survey questionnaire document structure in accordance with claim 58, wherein the location address is an electronic mail address.
78. A processing apparatus in accordance with claim 59, wherein the collator means is also arranged to add the electronic mail address of the respondent user to the database.
79. A process apparatus in accordance with claim wherein the response document includes information which enables a collator means to create a database with answers in accordance-with the responses. A process apparatus in accordance with claim wherein the respondent means producing the response document includes an option for the respondent user to retain the response document on the processing apparatus thereby enabling re-issue of the response document at a later stage. t 0
AU35581/95A 1994-09-14 1995-09-14 A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources Expired AU715279B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU35581/95A AU715279B2 (en) 1994-09-14 1995-09-14 A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
AUPM8133A AUPM813394A0 (en) 1994-09-14 1994-09-14 A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources
AUPM8133 1994-09-14
AU35581/95A AU715279B2 (en) 1994-09-14 1995-09-14 A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources
PCT/AU1995/000615 WO1996008779A1 (en) 1994-09-14 1995-09-14 A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources

Publications (2)

Publication Number Publication Date
AU3558195A AU3558195A (en) 1996-03-29
AU715279B2 true AU715279B2 (en) 2000-01-20

Family

ID=25623355

Family Applications (1)

Application Number Title Priority Date Filing Date
AU35581/95A Expired AU715279B2 (en) 1994-09-14 1995-09-14 A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources

Country Status (1)

Country Link
AU (1) AU715279B2 (en)

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
GRAPHICS, VISUALISATION AND USABILITY CENTRE, "HTML INFORMATION SURVEY FORM", JAN 1994, SEE WHOLE DOCUMENT. *
GVU CENTRE'S WWW USERS SURVEYS, 25 MAY 1994. WHOLE DOCUMENT. *

Also Published As

Publication number Publication date
AU3558195A (en) 1996-03-29

Similar Documents

Publication Publication Date Title
US5842195A (en) Method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources
WO1996008779A9 (en) A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources
US5548753A (en) Automatic electronic mail notification of database events
US5566291A (en) Method and apparatus for implementing user feedback
US5874953A (en) Database graphical user interface with outline view
US5949413A (en) Database graphical user interface with tabbed user view
US5732200A (en) Integration of groupware with quality function deployment methodology via facilitated work sessions
US5898431A (en) Database graphical user interface with calendar view
AU2006241364B2 (en) System and method for real-time observation assessment
US6052121A (en) Database graphical user interface with user frequency view
US8819084B2 (en) Service desk data transfer interface
US6370575B1 (en) Web-based status/issue tracking system based on parameterized definition
US8296173B2 (en) Method and apparatus for network-based sales force management
US7454362B1 (en) Method and system for dynamically providing materials and technology information
Padwick et al. Using Microsoft Outlook 2000
US20030115550A1 (en) Methods and apparatus for preparation and administration of training courses
AU2002320579A1 (en) System and method for real-time observation assessment
WO2000049534A1 (en) Document transfer over network using cgi script
US8121871B2 (en) System, method and software application for accessing and processing information
Johnson et al. Improving software quality through computer supported collaborative review
US20050125273A1 (en) System and method for interactive coordination of time schedules and project opportunities
AU715279B2 (en) A method and apparatus for preparation of a database document in a local processing apparatus and loading of the database document with data from remote sources
US20020091698A1 (en) System and method for accessing and presenting representative appointment information
JP3441926B2 (en) Electronic manual providing apparatus, method, and program storage medium
JP2004126401A (en) History information utilization type education method and history information utilization type education system

Legal Events

Date Code Title Description
FGA Letters patent sealed or granted (standard patent)