June 26, 2008, 02:59 PM
<Vijaya_settu>data entry form in Maintain
I am creating a data entry form in Maintain. I have one key field "STUDENT_ID"in SQL database. So it is taking only unique value. For example, if I enter this STUDENT_ID "1111" in my form , it allow me to enter first time . But I want to enter the same field STUDENT_ID value “1111" Many times. I want to make this field "STUDENT_ID" as second key. Is it possible, Can I define a new field in the master file and make it as Primary key field? I appreciate any suggestion regarding this issue.
My Master file Below:
FILENAME=ASSISTLEARNLAB, SUFFIX=SQLMSS , $
SEGMENT=ASSISTLEARNLAB, SEGTYPE=S0, $
FIELDNAME=STUDENT_ID, ALIAS='Student ID', USAGE=A7V, ACTUAL=A7V,
TITLE='Student ID', $
FIELDNAME=LAST_NAME, ALIAS='Last Name', USAGE=A50, ACTUAL=A50,
MISSING=ON,
TITLE='Last Name', $
FIELDNAME=FIRST_NAME, ALIAS='First Name', USAGE=A50, ACTUAL=A50,
MISSING=ON,
TITLE='First Name', $
FIELDNAME=DATE, ALIAS=Date, USAGE=YYMD, ACTUAL=DATE,
MISSING=ON, $
FIELDNAME=COURSE, ALIAS=Course, USAGE=A10, ACTUAL=A10,
MISSING=ON, $
FIELDNAME=DETAILED_REASON_FOR_VISIT, ALIAS='Detailed Reason for visit', USAGE=A50, ACTUAL=A50,
MISSING=ON,
TITLE='Detailed Reason for visit', $
FIELDNAME=TUTOR, ALIAS=Tutor, USAGE=A50, ACTUAL=A50,
MISSING=ON, $
My Access file below:
SEGNAME=ASSISTLEARNLAB, TABLENAME=Maintain.webfocus.AssistLearnLab,
CONNECTION=MAINTAIN, KEYS=1, $
My Maintain Code:
MAINTAIN FILE assistlearnlab
$$Declarations
Declare CNT / I2 ;
Case Top
Infer assistlearnlab.ASSISTLEARNLAB.STUDENT_ID into AddAssistlearnlabStk2;
Infer assistlearnlab.ASSISTLEARNLAB.STUDENT_ID into GetAssistLearnStack;
Winform Show_Inactive Form1;
Compute Form1.cssname = '/APPROOT/MAINTAIN/FAN.CSS';
Winform Show Form1;
-* Replace the Winform Show command with the following code
-* when to display your form in a non-persistent state
-* Winform Show_and_exit Form1;
EndCase
Case AddAssistLearn
For all include assistlearnlab.ASSISTLEARNLAB.STUDENT_ID from AddAssistlearnlabStk2;
Reposition assistlearnlab.ASSISTLEARNLAB.STUDENT_ID ;
Stack clear AddAssistlearnlabStk2 ;
EndCase
Case GetAssistLearn
Reposition assistlearnlab.ASSISTLEARNLAB.STUDENT_ID ;
Stack clear GetAssistLearnStack;
For all next assistlearnlab.ASSISTLEARNLAB.STUDENT_ID into GetAssistLearnStack ;
EndCase
Case UpdateAssitLearn
Update assistlearnlab.ASSISTLEARNLAB.LAST_NAME
assistlearnlab.ASSISTLEARNLAB.FIRST_NAME
assistlearnlab.ASSISTLEARNLAB.DATE
assistlearnlab.ASSISTLEARNLAB.COURSE
assistlearnlab.ASSISTLEARNLAB.DETAILED_REASON_FOR_VISIT
assistlearnlab.ASSISTLEARNLAB.TUTOR from GetAssistLearnStack(GetAssistLearnStack.FocIndex) ;
EndCase
Case DeleteAssistLearn
Delete assistlearnlab.ASSISTLEARNLAB.STUDENT_ID from GetAssistLearnStack(GetAssistLearnStack.FocIndex) ;
IF GetAssistLearnStack.FocCount=GetAssistLearnStack.FocIndex THEN
BEGIN
COMPUTE GetAssistLearnStack.FocCount = GetAssistLearnStack.FocCount-1;
COMPUTE GetAssistLearnStack.FocIndex = GetAssistLearnStack.FocIndex-1;
ENDBEGIN
ELSE
BEGIN
COMPUTE CNT = GetAssistLearnStack.FocIndex;
Stack copy from GetAssistLearnStack(CNT+1) into GetAssistLearnStack(CNT) ;
COMPUTE GetAssistLearnStack.FocCount = GetAssistLearnStack.FocCount-1;
ENDBEGIN
Winform close UpdatedeleteAssitlearn;
EndCase
END
June 27, 2008, 04:35 PM
Maintain WizardMaintain requires that your key fields are first n fields in your Master. So, you COULD enter a second field and make that and STUDENT_ID the key fields, but you will have to recreate the database. Here I am adding STUDENT_CNT (count) as the second key in the Master. You also have to change the KEYS in the Access file to 2.
FILENAME=ASSISTLEARNLAB, SUFFIX=SQLMSS , $
SEGMENT=ASSISTLEARNLAB, SEGTYPE=S0, $
FIELDNAME=STUDENT_ID, ALIAS='Student ID', USAGE=A7V, ACTUAL=A7V,
TITLE='Student ID', $
FIELDNAME=STUDENT_CNT, ALIAS='Student Count', USAGE=I3, ACTUAL=I3,
TITLE='Student Count', $
FIELDNAME=LAST_NAME, ALIAS='Last Name', USAGE=A50, ACTUAL=A50,
MISSING=ON,
TITLE='Last Name', $
FIELDNAME=FIRST_NAME, ALIAS='First Name', USAGE=A50, ACTUAL=A50,
MISSING=ON,
TITLE='First Name', $
FIELDNAME=DATE, ALIAS=Date, USAGE=YYMD, ACTUAL=DATE,
MISSING=ON, $
FIELDNAME=COURSE, ALIAS=Course, USAGE=A10, ACTUAL=A10,
MISSING=ON, $
FIELDNAME=DETAILED_REASON_FOR_VISIT, ALIAS='Detailed Reason for visit', USAGE=A50, ACTUAL=A50,
MISSING=ON,
TITLE='Detailed Reason for visit', $
FIELDNAME=TUTOR, ALIAS=Tutor, USAGE=A50, ACTUAL=A50,
MISSING=ON, $
My Access file below:
SEGNAME=ASSISTLEARNLAB, TABLENAME=Maintain.webfocus.AssistLearnLab,
CONNECTION=MAINTAIN, KEYS=2, $
Now you can have multiple student IDs and just increment STUDENT_CNT each time.
Mark
June 29, 2008, 05:47 PM
WazMark is right, make sure the first n fields are your keys, and set the Keys in the ACX to match.
I would suggest using a date time field for the other Key, as you will not have to keep track of any counter to increment.