Changing the dictionary during the actual survey

Other discussions about CSPro
Post Reply
AriSilva
Posts: 369
Joined: July 22nd, 2016, 3:55 pm

Changing the dictionary during the actual survey

Post by AriSilva » July 18th, 2019, 5:45 pm

When using a text file (.dat) to store the cases, it was possible to add variables to the end of each record in the dictionary. The new questionnaires using the new dictionary would have values for those new variables, whereas the old questionnaires already collected would have notappl for those new variables.
Now, using the csdb files, can we use the same strategy? Can we add new variables at the end of the records?
Another question: suppose we have an alphanumeric variable of 100 bytes. Can we change the dictionary splitting it into two separate variables, one with 85 bytes and another one with 15 bytes (in the same record position of the original one)?
Finally, is it possible to modify a dictionary after having collected some real questionnaires?
Best
Ari
Best
Ari

Gregory Martin
Posts: 1328
Joined: December 5th, 2011, 11:27 pm
Location: Washington, DC

Re: Changing the dictionary during the actual survey

Post by Gregory Martin » July 19th, 2019, 7:42 am

1) Yes, even with .csdb, there will be no problem adding items to the end of a record.

2) You can definitely split variables. This is always fine with text files, and often useful, but when using .csdb you may have problems if splitting ID items. However, any non-ID item is fine.

3) You can modify the dictionary during data collection, you just have to be careful and make sure that you follow the rules (basically: don't change the length the items, add items to the end of a record).

AriSilva
Posts: 369
Joined: July 22nd, 2016, 3:55 pm

Re: Changing the dictionary during the actual survey

Post by AriSilva » July 31st, 2019, 1:23 pm

Suppose I need to change the valueset of a variable, inserting a new category.
I change the dictionary and then I deploy the application to be used by the interviewers.
So far so good. But...
I already have a bunch of questionnaires in the server, in the csdb file, that used the old dictionary. What is going to happen when the interviewers start uploading questionnaires with the new dictionary?
Is it necessary to change the dictionary that is in the server? How do I do that preserving the questionnaires already there?
Best
Ari

Gregory Martin
Posts: 1328
Joined: December 5th, 2011, 11:27 pm
Location: Washington, DC

Re: Changing the dictionary during the actual survey

Post by Gregory Martin » August 1st, 2019, 8:43 am

The value sets have no bearing on the structure of the data, so you can add/remove/change value sets as much as you'd like without impacting your data.

How are you planning on downloading your data from the server? If you're using a batch application with syncdata calls, then your new dictionary will be used. However, if you're using Data Viewer, it's going to use the (old) dictionary that exists on the server. Are you using the Deploy Application tool to update your application on the server? If so, that should update the dictionary.

AriSilva
Posts: 369
Joined: July 22nd, 2016, 3:55 pm

Re: Changing the dictionary during the actual survey

Post by AriSilva » August 1st, 2019, 5:06 pm

I´m using a batch program with syncconnect and syncdata to download the data from the server.
And I´m using the Deploy to update the CSEntry application in the server, but I did not know if this deploy updated also the dictionary in the server.
So, as far as I understand, I´m safe, right? I can change the valuesets and deploy the new application version .
Best
Ari

Gregory Martin
Posts: 1328
Joined: December 5th, 2011, 11:27 pm
Location: Washington, DC

Re: Changing the dictionary during the actual survey

Post by Gregory Martin » August 2nd, 2019, 10:46 am

If you're using a batch program, it will use the dictionary associated with that when generating the .csdb file. The server dictionary will be used when you use Data Viewer to download a file from scratch (because there is no other dictionary to use at that point).

Post Reply