Well let's assume I would use another type of GUI then. What type would you suggest and how can I save and retrieve the user/data inputs to and from a file that is not beyond my abilities to accomplish
I can¡¯t speak for your abilities, but what you are proposing is going to require a lot of computational expertise. You¡¯ve mentioned several issues, so let¡¯s consider data issues first and then the GUI issues.
What you have described is unlikely to be meaningfully resolved with any kind of flatfile solution. I do not know how many sets of data you are proposing. If it¡¯s just a few, then an XML file, written by the XML writer may be of interest. An XML file is a self-describing hierarchically organized data system, readable with Notepad. Internally an XML file looks like this:
< xml version="1.0" encoding="utf-8" standalone="yes" >
<Directory>
<Service>
<ServiceName>Abuse and Neglect Services</ServiceName>
<Description>Help for an abused or neglected child</Description>
<Para1>The organizations listed below provide services for abused or neglected children and their families.</Para1>
<Para2>For each of the organizations listed below you will find information about the ages they serve, the languages spoken and eligibility criteria.</Para2>
<Para3>More complete information about these organizations's location, contact person, hours of operation and a description of their programs can be found in Part II - Directory of Organizations starting on page xx.</Para3>
<Narrative>More complete information about these organization's locations, contact person, hours of operation, fees charged and a description their programs can be found in part II, the directory of organizations starting on page PAGENUM</Narrative>
<ServiceDetail>
<SrvDetail>General</SrvDetail>
<Organization>
<Organization-Phone>Associates For Renewal In Education (555) 111-9424</Organization-Phone>
<Ages>2-6; 7-12; 13-2(Also adults)</Ages>
<Languages><![CDATA[English;]]></Languages>
<Eligibility><![CDATA[All]]></Eligibility>
</Organization>
<Organization>
<Organization-Phone>Center for Adoptive Families (of AdoptionsTogether, Inc.)* (555) 111-2900</Organization-Phone>
<Ages>0-6; 7-12; 13-18</Ages>
<Languages><![CDATA[Portuguese; Spanish]]></Languages>
<Eligibility><![CDATA[Children and their families affected by adoption or foster\line care]]></Eligibility>
</Organization>
<Organization>
<Organization-Phone>Center for Child Protection and Family Support, Inc. (555) 111-6175</Organization-Phone>
<Ages>4-6; 12; 13-17</Ages>
<Languages><![CDATA[English]]></Languages>
<Eligibility><![CDATA[Child victims of neglect, physical abuse, sexual abuse or\line with a report from the police regarding child abuse or\line neglect. ;]]></Eligibility>
</Organization>
<Organization>
As you can see, XML supports replicated entities quite well and be well suited to your application if there is not a large number different sets of data, like Agency A, Agency B, etc. Variables are known by labels. If there is, I think a database is indicated be it either Access or SQL Express.
So let¡¯s talk about a GUI solution. The interesting thing about this was that all the data was entered via a single textbox. We know the questions will be the same for each Organization so I was write software that know how to prompt for the data and to collect it.
Each question has a structure associated with that systematically prompts the user for information. Descriptors for doing that might look like this:
InqArray(ciOID).DBModifiableField = False
InqArray(ciOID).MandatoryField = False
InqArray(ciOID).UserModifiableField = False
InqArray(ciOID).CmbIndex = -1
InqArray(ciOID).DisplayAsChoice = False
InqArray(ciOID).[Protected] = True
InqArray(ciOID).DBFieldName = "O_ID"
InqArray(ciOID).ControlType = Cntrltyp.None
TextBoxTemplate.DBModifiableField = True ' Set up the template
TextBoxTemplate.MandatoryField = False ' Make the default - User's Options to fill in the form
TextBoxTemplate.ControlType = Cntrltyp.Textbox
TextBoxTemplate.UserModifiableField = True
TextBoxTemplate.DisplayAsChoice = True
TextBoxTemplate.tbmaxlen = 50 ' in characters
TextBoxTemplate.tbNoofLines = 1 ' 20 pixels perline
InqArray(ciName) = TextBoxTemplate
InqArray(ciName).tbmaxlen = 100
InqArray(ciName).CmbIndex = 0 ''
InqArray(ciName).MandatoryField = True
InqArray(ciName).Name = OrgFields(0)
InqArray(ciName).Instruction = "FQLR|'s Name."
InqArray(ciName).DBFieldName = "O_Name"
InqArray(ciContact) = TextBoxTemplate
InqArray(ciContact).CmbIndex = 1 ''
InqArray(ciContact).Name = OrgFields(1)
InqArray(ciContact).MandatoryField = True
InqArray(ciContact).Instruction = "FQLR|'s contact person's name."
InqArray(ciContact).DBFieldName = "O_Contact"
InqArray(ciAddress) = TextBoxTemplate
InqArray(ciAddress).CmbIndex = 2 ''
InqArray(ciAddress).Name = OrgFields(2)
InqArray(ciAddress).MandatoryField = True
InqArray(ciAddress).Instruction = "FQLR| street address."
InqArray(ciAddress).DBFieldName = "O_Address"
As you can see this structure supplies information for prompting the user as well as collecting and storing the data. Once it¡¯s all collected it¡¯s committed to the database.
There were also back and forward controls to allows the user to go back and make corrections. These suggestions I think would suit you well.