Hi Michael,
That sounds a reasonable way. With x number of multiple choices, using the
DPMouse marker to skip the field sounds a really good idea... I will scout
around for that formula a little more... I did it a long time ago, and
subsequently dropped the idea in favour of something different, I might have
a backup of the version which included it... I can't even rememeber all
the steps but I think it involved a couple of fields, it may have even been
3 with a recursive link, and the edit order was important so that a formula
triggered so the conditions in combination with the edit order caused the
value to toggle. But it was overly complicated for what I needed, and I
eventually found myself working on it for purely academic value.
The next complex problem for you would be getting them to act like radio
buttons.
I tend to like to get things working in DP before moving to the web even if
the interface in DP is poor, as it at least gives me a chance to move simply
test the application logic.
Bye
Brian
----- Original Message -----
From: "Michael Iannantuoni" <[EMAIL PROTECTED]>
To: "DataPerfect Users Discussion Group" <[email protected]>
Sent: Saturday, December 02, 2006 9:44 PM
Subject: Re: [Dataperf] Questionnaire/Survey with DataPerfect
Hi Brian,
Thanks again for your comments & ideas.
What I have done so far is this:
The questionnaire contains multiple choice question with one having 14
options!
I have set up in the Response Panel 14 U1 fields as "tick boxes" and each
has associated with it, and next to it, a calculated A1 field. In the
QuestionWording Panel I list the Response labels and have a field which
indicates how many there are. This is used in the Response Panel to set
the A1 fields to either "" or ASCII 249, the marker used by DPMouse to
skip a field with this next to it (it can be left or right). Thus in a Yes
or No response only the first two "tick boxes" are available and in a five
question Lickert only the first five etc. The Response Labels are
displayed above their appropriate "tick boxes". If the number of Responses
allowed is set to zero all "tick boxes" are unavailable but a free form
text field is accessible.
At present the "tick boxes" accept either letter which becomes an "X" or
space bar to clear it. I tried toggling with the space bar but couldn't
get it to work even using a recursive link. DP seems to sometimes not
differentiate between ""(null) and " " (space). If you can find your
formula I'd be eternally grateful.
Using a web front end is something I may look at later but I would like to
get something working in DP first even though it may not be elegant!
Regards,
Michael
Brian Hancock wrote:
Hi Michael,
mmm, the interface issues are always the most awkward. For a start have
you looked at DPMouse? Although I have never used it, its ability to
conditionally allow entry to a field could be useful.... I am sure
there are some people out there who might be able to add some comment to
that...
That absolute easiest, but perhaps less friendly way for the survey
repondent, is to have one field for the entry of each question, and to
code the entry, so for example every response marks A, B, C, D, E, as in
a multiple choice question. In this case, it is easy to display those
choices in a calculated field, and also to restrict entry to a specific
set of values.
Because there is only one question per page, you have plenty of screen
real estate to play with. You could have say a Lickert scale Question
with a Calculated Text Field, to display the valid choices,
eg
P1F1:GZZZ9::H (SurveyID)
P1F2:GZZZ9::H (ResponseID)
P1F3:GZ9::N (QuestNum) P1F4:A50A2::C (QuestWording)
P1F5:A50A8::C (UserInstructions)
P1F6:U1 (UserResponse)
eg
Q2. I love DataPerfect.
Please indicate you agreement with the above statement using the
following:
A. Strongly Agree
B. Strongly Disagree
C. Neutral
D. Disagree
E. Strongly Disagree
F. Not applicable
and then after entering your response press F9
__
or
Q3 I will be use DP for my next project?
A. Yes,
B. No.
and then after entering your response press F9
__
The formula in P1F4 comes directly from the link to the QuestionWording,
thru a DataLink on P1F3 on SurveyID, QuestionNum P1F3PxFy
The formula in P1F5 Also looks at the DataLink thru P1F3 to the
questions, but then looks something like
IF P1F3 = 0 THEN
cat.t["Thank you for completing this survey";2;", You can use the
UpArrow to review your answers and when finished Press F7 to exit"]
ELSE
IF P1F3PxFz="Lickert" OR P1F3PxFz="ReverseLickert" THEN
cat.t["Please indicate your agreement blah blah...";2;A. Strongly
Agree";1;"B. Agree";1;"C.. Blah blah...."]
ELSE
cat.t[1; "A. Yes";2;"B. No"]
ENDIF cat.c[1;"and then after entering your response press F9"]
ENDIF
and then a formula in P1F6 the user response field,
IF P1F3PxPz="Lickert" etc THEN
IF contains["ABCDEF;"*" P1F6 "*"] THEN
P1F6
ELSE
""
ENDIF
ELSE
IF contains["AB;"*" P1F6 "*"] THEN
P1F6
ELSE
""
ENDIF
ENDIF
Its not necessarily pretty for the user, it is nonetheless easy to use,
relatively goofproof and simple to implement.
The idea of a binary mask is fine, except that DP does not have
convenient tools for manipulating binary values, and bitwise logical
operations... But I really do not think they will be needed. I once
worked out a formula using a recursive panel link where you could press
the Spacebar on a field and toggle its value from blank to X which
simulated a windows checkbox, but I for the life of me can't find it. It
strikes me that with a few extra bits that it could have worked as a
radio button, but it was an awful lot of work.
In fact this is where things like web enabling of DP really come into
their own... When I create a survey with DP all that comes out from DP
is an XML file which basically just includes the question number, the
question working, and the Scale type, and I then use an XSLT template to
generate the Question Page, which includes all the questions, and they
have radio buttons, or text fields for the user to interact with. I then
post the results back of each question, to DP and let a DP report
populate all the relevant fields. In this way you do not need to get user
interface get too much in the way of good data structures. DP basically
forces you into making data compromises or interface compromises, whereas
putting it out it the browser and separating database and application,
from interface unleashes DP.
Hope this helps,
Good luck
Brian
----- Original Message ----- From: "Michael Iannantuoni"
<[EMAIL PROTECTED]>
To: "DataPerfect Users Discussion Group" <[email protected]>
Sent: Friday, December 01, 2006 11:56 PM
Subject: Re: [Dataperf] Questionnaire/Survey with DataPerfect
Thanks Brian,
Numbering now working so I will give some more thought to the answers. I
have considered using a calculated field as a check on what is allowed
as a response: Yes/No questions if answered with tick boxes could be
considered as two-question Lickert (assuming that "normal" Lickerts are
also answered with tick boxes). The calculated field would sum the ticks
(tick = 1, blank = 0) but would not allow a total other than "1". For
multiple option questions, no check would be needed.
Does this make any sense?
I had also considered a binary looking number in the calculated check
field which would allow 10 or 01 for Yes/No questions or would allow
10000, 01000, 00100, 00010, 00001 for a five question Lickert.
What do you think?
Regards,
Michael
Brian Hancock wrote:
Hi Michael,
I presume you mean how each question in each survey gets a new number
restarting from zero? or how does the question in the response link up
the question wording?
I thought point out that I used simple ::IN numbering fields, on each
of the panels except the Response Instance panel, just to make it
quicker and more obvious. Normally I would use the Ralph Alvy
autonumbering system of which I am greatly indebted...
In the STR on each child panel I have a G9::H field initialised to the
value "1" for each record on create. That Keeps a Total back to a
counter on the parent panel. from the counter I have a Panel Link
pointing back the other way. On the child record add "1" to the value
in the Keep a Total Target to get the next question number, in either
the creation of the question wording, or in the user responding to the
survey.
I start with a Parent SurveyMaster table with a Survey ID.
Then on the survey creation side I have a Question Wording Table which
includes includes the SurveyID and Question Number, plus the above
numbering to generate each question number.
On filling in side I have a Response Table, with its own ID, and a
child of that being the Response Instance panel. In the Response
instance I use the Survey ID, and another instance of the above
numbering system. So for each question the user is answering the
Survey ID and a question number exist.
From this I can have a DataLink bypassing the parent, directly to the
Question Wording Panel, and then displayed the Question Wording using
SurveyID-QuestionNumber data link When the questions run out, ie their
is no more question wordings to link it displays a message thanking
them for completing the the survey and asks them press F7 to exit.
That structure is pretty basic, but the real value comes into the fact
that during analysis, you do not have the to worry about the hundreds
of fields used in the cross tabulation for results that have been
suggest you watch out for. You can do any analysis, with a very simple
report, and the survey can be from one to any number of questions,
without making the report any more complex. Since DP has Average and
StdDev formula, you can provide numerical weighting for question, eg 0
for no, 1 for yes, 5-for Strongly agree, 1-for strongly Disagree for
Likert scaling, or for reverse Likert (ie 5 for Strongly Disagree to 1
for Strongly Agree) http://en.wikipedia.org/wiki/Likert and create an
averaging, which together with tabulations, and StdDev will give you
details about the spread of the results. By the way a tip for the
simple cross tabbing, is to create a virtual subreport link to each
question, and doing the cross tabs average and standard deviation,
separately for each question.
(As an aside, the reason you would use both likert and reverse likert,
is so that you can group opposites, for instance I could ask agreement
with the statement, "I liked xyz", and then later you could ask as a
control the opposite, "I disliked xyz", as a reverse likert, so you can
group them together as an average value rather and know that your
It may seem unwieldy having each response to each question as a
separate record, because when you do the maths it can look bad. I know
when I first wrote my first surveying module, I tried the multiple
question per record, a panel-ful of questions, and although easy to
code, was totally inflexible and hard to report from. When I looked
that each survey might be of 2000 or so students, and there might be 25
questions, on each, the thought that I would have 50,000 response
instance records,(if I broke it up to such granularity; this seemed
daunting, but ultimate very fast and very easy.
That database was written first in Access 97 and then Access 2000, and
performed over 10000 surveys (each with different question wording) of
an average of 14 question, responded to by an average of 120 students,
(ie over 15 million instance records), and the reporting of anyone of
survey in single user mode (including generating of graphics) takes
less than 5 seconds.
Other than the control of the interface the same methodology could be
used with DP.
Good luck
Brian
----- Original Message ----- From: "Michael Iannantuoni"
<[EMAIL PROTECTED]>
To: "Dataperfect Mailing List" <[EMAIL PROTECTED]>
Sent: Wednesday, November 29, 2006 9:19 PM
Subject: [Dataperf] Questionnaire/Survey with DataPerfect
Hi Brian,
I am obviously missing something but I can't quite figure out how your
question numbering system works in the STR you sent me - any further
explanation appreciated.
Best wishes,
Michael
_______________________________________________
Dataperf mailing list
[email protected]
http://lists.dataperfect.nl/mailman/listinfo/dataperf
_______________________________________________
Dataperf mailing list
[email protected]
http://lists.dataperfect.nl/mailman/listinfo/dataperf
_______________________________________________
Dataperf mailing list
[email protected]
http://lists.dataperfect.nl/mailman/listinfo/dataperf
_______________________________________________
Dataperf mailing list
[email protected]
http://lists.dataperfect.nl/mailman/listinfo/dataperf
_______________________________________________
Dataperf mailing list
[email protected]
http://lists.dataperfect.nl/mailman/listinfo/dataperf
_______________________________________________
Dataperf mailing list
[email protected]
http://lists.dataperfect.nl/mailman/listinfo/dataperf