Preformance tuning,its urgent,i would appreciate ur help
hi
I have some problem with performance tuning
SELECT stlty
stlnr
stlkn
stpoz
idnrk
FROM stpo
INTO TABLE t_detail
FOR ALL ENTRIES IN t_header
*MOD04{
WHERE stlnr eq t_header-stlnr
AND postp EQ p_postp
AND lkenz NE c_pos
AND stlty NE c_null.
WHERE
stlty IN s_stlty
AND stlnr EQ t_header-stlnr
AND postp EQ p_postp
AND lkenz EQ space.
*}MOD04
*}MOD03
IF sy-subrc <> 0. "t_detail[] IS INITIAL.
MESSAGE s045. "No Data found for the given selection criteria
LEAVE LIST-PROCESSING.
ELSE.
SORT t_detail BY stlnr.
ENDIF. "t_detail[] IS INITIAL.
iam getting some problem in performance tuning,its displaying as fetch request as 65% from stpo
i have to use some other table other than stpo,there is no other table than stpo,how to do it.even i cheked the indexes used as well
i would be extremely thankfull for ur valuable answers
Hi,
chk this you might get some idea...
Performance Analysis
Interpreting and correcting performance violations
PURPOSE
Each and every rule is outlined that results in a performance violation and explained in detail as to what to avoid while coding a program and correcting such performance violations if they exist in the code.
It is a general practice to use Select * from <database>
This statement populates all the values of the structure in the database.
The effect is many fold:-
It increases the time to retrieve data from database
There is large amount of unused data in memory
It increases the processing time from work area or internal tables
It is always a good practice to retrieve only the required fields. Always use the syntax Select f1 f2
fn from <database>
e.g. Do not use the following statement:-
Data: i_mara like mara occurs 0 with header line.
Data: i_marc like marc occurs 0 with header line.
Select * from mara
Into table i_mara
Where matnr in s_matnr.
Select * from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Instead use the following statement:-
Data: begin of i_mara occurs 0,
Matnr like mara-matnr,
End of i_mara.
Data: begin of i_marc occurs 0,
Matnr like marc-matnr,
Werks like marc-werks,
End of i_marc.
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
The objective here is to identify all select statements in the program where there is a possibility to restrict the data retrieval from database. It identifies all select statements, which do not use the where condition effectively. It is a good practice to restrict the amount of data as this reduces the data retrieval time, improves the processing time and occupies less memory. Always use as many conditions in the where clause as possible.
e.g. Do not use the following statement:-
Select matnr from mara
Into table i_mara.
Loop at i_mara.
If i_mara-matnr+0(1) A.
Delete i_mara index sy-tabix.
Endif.
Endloop.
Instead use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr like A%.
Limit the access to database as far as possible. Accessing the same table multiple times increases the load on the database and may affect other programs accessing the same table. It is a good practice to retrieve all the relevant data from database in a single select statement into an internal table. All the processing should be done with this internal table.
e.g. Do not use the following statement:-
Select vbeln vkorg from vbak
Into table i_vbak
Where vbeln in s_vbeln.
Loop at i_vbak.
Case i_vbak-vkorg.
When IJI1.
Select hkunnr from kunh
Into table i_kunh
Where vkorg = IJI1.
When IJI2.
Select hkunnr from kunh
Into table i_kunh
Where vkorg = IJI2.
When IJI3.
Select hkunnr from kunh
Into table i_kunh
Where vkorg = IJI3.
When IJI4.
Select hkunnr from kunh
Into table i_kunh
Where vkorg = IJI4.
Endcase.
Endloop.
Instead use the following statement:-
Select vbeln vkorg from vbak
Into table i_vbak
Where vbeln in s_vbeln.
Select hkunnr from kunh
Into table i_kunh
Where vkorg in (IJI1,IJI2,IJI3,IJI4).
Loop at i_vbak.
Case i_vvbak-vkorg.
When IJI1.
Read table i_kunh where vkorg = i_vbak-vkorg.
When IJI2.
Read table i_kunh where vkorg = i_vbak-vkorg.
When IJI3.
Read table i_kunh where vkorg = i_vbak-vkorg.
When IJI4.
Read table i_kunh where vkorg = i_vbak-vkorg.
Endcase.
Endloop.
When the size of the record or the number of records in the internal table is large, doing a linear search is time consuming. It is always a good practice to search a record by binary search (Always Sort the table before doing a binary search). The difference is felt especially in the production environment where the live data is usually huge. As of release 4.0 there are new types of internal tables like SORTED and HASHED which can be effectively used to further reduce the search time and processing time.
e.g. Do not use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
Select matnr werks from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Loop at I_mara.
Read table i_marc with key matnr = I_mara-matnr.
Endloop.
Instead use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
Select matnr werks from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Sort I_marc by matnr.
Loop at I_mara.
Read table i_marc with key
matnr = I_mara-matnr
binary search.
Endloop.
It is a good practice to search records from internal tables using a binary search. But extreme caution needs to be applied as it may either increase the time or may cause run time termination if it is not sorted.
Always the sort the internal table by the required keys before performing a binary search.
e.g. Do not use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
Select matnr werks from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Loop at I_mara.
Read table i_marc with key matnr = I_mara-matnr binary search.
Endloop.
Instead use the following statement:-
Select matnr from mara
Into table i_mara
Where matnr in s_matnr.
Select matnr werks from marc
Into table i_marc
For all entries in i_mara
Where matnr eq i_mara-matnr.
Sort I_marc by matnr.
Loop at I_mara.
Read table i_marc with key
matnr = I_mara-matnr
binary search.
Endloop.
It is a general practice to use Read table <itab>
This statement populates all the values of the structure in the workarea.
The effect is many fold:-
It increases the time to retrieve data from internal table
There is large amount of unused data in work area
It increases the processing time from work area later
It is always a good practice to retrieve only the required fields. Always use the syntax Read table <itab> transporting f1 f2
FN
If just a check is being performed for existence of a record use Read table <itab> transporting no fields
e.g. Do not use the following statement:-
data: i_vbak like vbak occurs 0 with header line.
data: i_vbap like vbap occurs 0 with header line.
Loop at i_vbak.
read table i_vbap with key
vbeln = i_vbak-vbeln binary search.
If sy-subrc = 0 and i_vbap-posnr = 00010.
endif.
Endloop.
Instead use the following statement:-
data: i_vbak like vbak occurs 0 with header line.
data: i_vbap like vbap occurs 0 with header line.
Loop at i_vbak.
read table i_vbap transporting posnr with key
vbeln = i_vbak-vbeln binary search.
If sy-subrc = 0 and i_vbap-posnr = 00010.
endif.
Endloop.
There are many ways in which a select statement can be optimized. Effective use of primary and secondary indexes is one of them. Very little attention is paid especially to the secondary indexes. The following points should be noted before writing a select statement:-
Always use the fields in the where clause in the same order as the keys in the database table
Define the secondary indexes in the database for the fields which are most frequently used in the programs
Always try to use the best possible secondary index in the where clause if it exists
Do not have many secondary indexes defined for a table
Use as many keys both primary and secondary as possible to optimize data retrieval
As of release 4.5 it is now possible to define the secondary index in the where clause using %_HINT.
e.g. Do not use the following statement:-
Assuming a secondary index is defined on the field vkorg in table vbak
Select vbeln vkorg from vbak
Into table i_vbak
Where vbeln in s_vbeln.
Loop at i_vbak.
Case i_vbak-vkorg.
When IJI1.
When IJI2.
Endcase.
Endloop.
Instead use the following statement:-
Select vbeln vkorg from vbak
Into table i_vbak
Where vbeln in s_vbeln and
Vkorg in (IJI1,IJI2).
Loop at i_vbak.
Case i_vbak-vkorg.
When IJI1.
When IJI2.
Endcase.
Endloop.
This rule identifies all select statements in the program which use Select
UP TO 1 ROWS
It is a general practice to use this syntax to retrieve a single record from database table. If all the primary keys of a table are used in the where clause it is a good practice to use Select SINGLE
e.g. Do not use the following statement:-
select matnr up to 1 rows from mara
into mara-matnr
where matnr = itab-matnr.
Instead use the following statement:-
select single matnr from mara
into mara-matnr
where matnr = itab-matnr.
Table buffering is used to optimize data access from database. However if buffering is used on tables which are updated frequently, it has an adverse effect. The buffer area is updated at regular intervals by the system. If selection is done from this table before the buffer is updated the values are fetched first from the buffer and then from the database as the buffer is outdated. This increases the load on the system and also the processing time.
It is always a good practice to bypass buffer in the select statement for tables, which are buffered but are updated at regular frequently.
e.g. Do not use the following statement:-
select matnr from mara
into table i_mara
where matnr in s_matnr.
Instead use the following statement:-
select matnr bypassing buffer
from mara
into table i_mara
where matnr in s_matnr.
Most of the performance issues are related to database. It should be an inherent practice to reduce the access to database as far as possible and use it in the most optimal manner.
Just as in select statements, database updates also affect the performance. When records are to be inserted in database table do it in once. Populate the internal table completely, with which the records are to be inserted. Then update the table from the internal table instead of updating it for each record within the loop.
e.g. Do not use the following statement:-
Loop at i_mara.
Insert into mara values i_mara.
Endloop.
Instead use the following statement:-
Loop at i_mara.
Modify i_mara.
Endloop.
Insert mara from table i_mara.
Read statement fetches the record from the internal table using implicit key or explicit key. When no key or index is specified for the search criteria the key in the WA of the internal table is used implicitly for searching. SAP recommends explicit search criteria. Here the key or index is explicitly specified which is used for searching the records from internal table. This is faster than an implicit search.
e.g. Do not use the following statement:-
Loop at i_mara.
i_marc-matnr = i_mara-matnr.
read table i_marc.
Endloop.
Instead use the following statement:-
Loop at i_mara.
read table i_marc with key
matnr = i_mara-matnr.
Endloop.
When an internal table is sorted without specifying the keys the default is used. This may affect he performance. Always specify the keys when sorting.
e.g. Do not use the following statement:-
Data : begin of i_mara occurs 0,
ersda like mara-ersda,
ernam like mara-ernam,
laeda like mara-laeda,
aenam like mara-aenam,
vpsta like mara-vpsta,
End of i_mara.
Sort i_mara.
Loop at i_mara.
Endloop.
Instead use the following statement:-
Data : begin of i_mara occurs 0,
ersda like mara-ersda,
ernam like mara-ernam,
laeda like mara-laeda,
aenam like mara-aenam,
vpsta like mara-vpsta,
End of i_mara.
Sort i_mara by matnr aenam.
Loop at i_mara.
Endloop.
Whenever values need to be passed in a subroutine have type declarations assigned to the formal parameters. If no specific type declaration is possible then use TYPE ANY. This improves the performance. It is also recommended by SAP and can be noticed during extended program check (EPC) for the program.
e.g. Do not use the following statement:-
perform type_test using p_var1 p_var2 p_var3.
form type_test using p_var1 p_var2 p_var3.
endform.
Instead use the following statement:-
perform type_test using p_var1 p_var2 p_var3.
form type_test using p_var1 type c
p_var2 type any
p_var3 like mara-matnr.
endform.
This is similar to type declarations for subroutines explained in Rule 13. Except that type declarations need to be maintained for field-symbols. More help is provided by SAP under TYPE ASSIGNMENTS.
e.g. Do not use the following statement:-
field-symbols: <fs1>, <fs2>, <fs3>.
Instead use the following statement:-
field-symbols: <fs1> type c,
<fs2> like mara-matnr,
<fs3> like marc-werks.
The Do
Enddo loop does not have a terminating condition. This has to be handled explicitly within the loop construct. This has some affect on the performance. On the other hand While
Endwhile loop has a condition to satisfy before entering the loop. Hence will improve the performance and is also safe to use.
e.g. Do not use the following statement:-
Do.
If count > 20.
Exit.
Endif.
Count = count + 1.
Enddo.
Instead use the following statement:-
While ( count < 20 ).
Endwhile.
Do not use the CHECK construct within Loop
Endloop. The end condition for check statement varies with the type of loop structure. For example within loop
endloop it moves to the next loop pass whereas in form
endform it terminates the subroutine. Thus the outcome may not be as expected. It is always safe to use If
Endif.
e.g. Do not use the following statement:-
Loop at i_mara.
Check i_mara-matnr = 121212
Endloop.
Instead use the following statement:-
Loop at i_mara.
If i_mara-matnr = 121212
Endif.
Endloop.
This rule is similar to rule 16 except that it is for Select
Endselect statements. The affect is similar to that in loop
endloop.
e.g. Do not use the following statement:-
Select matnr from mara
Into table i_mara.
Check i_mara-matnr = 121212
Endselect.
Instead use the following statement:-
Select matnr from mara
Into table i_mara.
If i_mara-matnr = 121212
Endif.
Endselect.
This feature is also available in SAP Tips & Tricks. As can be seen the time measured for the same logical units of code using if
elseif
endif is almost twice that of case
endcase.
It is always advisable to use case
endcase as far as possible.
e.g. Do not use the following statement:-
IF C1A = 'A'. WRITE '1'.
ELSEIF C1A = 'B'. WRITE '2'.
ELSEIF C1A = 'C'. WRITE '3'.
ELSEIF C1A = 'D'. WRITE '4'.
ELSEIF C1A = 'E'. WRITE '5'.
ELSEIF C1A = 'F'. WRITE '6'.
ELSEIF C1A = 'G'. WRITE '7'.
ELSEIF C1A = 'H'. WRITE '8'.
ENDIF.
Instead use the following statement:-
CASE C1A.
WHEN 'A'. WRITE '1'.
WHEN 'B'. WRITE '2'.
WHEN 'C'. WRITE '3'.
WHEN 'D'. WRITE '4'.
WHEN 'E'. WRITE '5'.
WHEN 'F'. WRITE '6'.
WHEN 'G'. WRITE '7'.
WHEN 'H'. WRITE '8'.
ENDCASE.
Sort by Clause should be used instead of Order by at database level especially in the cases where the number of records is less. When using Order by clause we need to ensure that it uses an index. This is not the case in sort by. Also the performance is significantly high for Sort by Clause especially for small number of records.
e.g. Do not use the following statement:-
SELECT * FROM SBOOK
WHERE
CARRID = 'LH ' AND
CONNID = '0400' AND
FLDATE = '19950228'
ORDER BY PRIMARY KEY.
ENDSELECT.
Instead use the following statement:-
SELECT * FROM SBOOK
WHERE
CARRID = 'LH ' AND
CONNID = '0400' AND
FLDATE = '19950228'
SORT BY PRIMARY KEY.
ENDSELECT.
It is observed that break points are hard coded in the program during testing. Some are soft break points some are hard coded and also user specific. These are left in the program during transports and cause production problems later. This rule helps you to identify all the hard coded break points that are left in the program.
This rule is self-explanatory. Hence no examples are provided.
Similar Messages
-
Would like to comment/review regarding Newton Magazine and its app. Do not know how. Would appreciate your help. Many thanks.
WexmallHi there,
You may find the article below helpful.
iTunes Store: Writing a review
http://support.apple.com/kb/ht3928
-Griff W -
My camera Canon G3 (i know it's old) no longer connects to iPhoto (8.1.2) on my iMac, I have checked with my friends iMac same model iPhoto version and it works fine using my cable, I would appreciate any help getting this sorted
As a Test:
Hold down the option (or alt) key and launch iPhoto. From the resulting menu select 'Create Library'
Import a few pics into this new, blank library. Is the Problem repeated there? -
Iphoto diet & iphoto 6 error!! would appreciate any help/feedback
I recently installed iPhoto 6.0.6. and since then, when I run iPhoto Diet (3.1) an apple script error message comes up.
It says: File alias Macintosh HD:Users:michellechin:Pictures:iPhoto Library:Modified: wasn't found. (-43)
HELP! what does this mean? and how can I make iPhoto Diet run properly again?
Would appreciate any help very very very much.
Thanks in advance,
Michelle.
Powerbook G4 12" Mac OS X (10.4.9)Michelle
It means that the application cannot find the Modified folder, which should be in your iPhoto Library Folder (inside your Pictures Folder).
Have you contacted the developers of iPhoto Diet?
http://www.rhythmiccanvas.com/software/iphotodiet/
Regards
TD -
In iTunes, I have a number of tones stored. I don't know how to access them to add to listed people on my iPhone. I would appreciate any help.
Drap and drop the tones from iTunes onto the phone. Select the contact you wish you add the tone to. Click edit and select ringtone.
-
I am having a problem with adding selected numbers in a column. When I select "sum" the whole column is added, not just the selected cells. I would appreciate any help how to rectify? Many thanks. Francis Anthony
I don't know if this is the best way but it's pretty easy.
1.) Select the cell you want the sum in.
2.) Select the sum function
3.) In the line where you see =sum(B2:B8) using your finger tap the B2:B8
4.) Use the backspace key to delete the B2:B8 and it will then show "value"
5.) You can now tap any cell you want in the sum
6.) When finished tap the green check mark button at the end of the sum line.
That pretty much sums it up.
Good luck.
Steve -
I would appreciate your help on how to configure a gmail in a way it ask for the password everytime I connect?. In the only way I can configure it I have to include the pw when configuring the account and after that it do not ask for pw so everyone that shares my iPad can oppen my mail with no pw required.
ThankThe iPad is designed to be a single user device, and there is currently no way to password protect the Mail app - even removing the account password from Settings > Mail, Contacts, Calendars will just prevent new mail being downloaded, it won't hide those that have already been downloaded. There is this work-around for the app : https://discussions.apple.com/message/13127632#13127632 . Also there might be third-party email apps that feature password protecting.
-
Would appreciate some help here still fairly new to MAC
Ok I've made the mistake of installing a program called Anacron which is supposed to help with the maintenance of OS X. Well I found out after the fact that there is no need to install ANY programs for maintenance as it is all built into the OS now. So I went to uninstall it and wow has this been a headache . First off there is NO uninstaller and when following the read me file that I found to uninstall it, part of it works and part of it doesn't. This is the information to just disable it (not delete it):
How do I disable or remove anacron?
To disable anacron, run the following commands in a terminal:
cd /Library/LaunchDaemons
sudo launchctl unload -w ./anacron.plist
cd /System/Library/LaunchDaemons
sudo launchctl load -w ./com.apple.periodic-daily.plist
sudo launchctl load -w ./com.apple.periodic-weekly.plist
sudo launchctl load -w ./com.apple.periodic-monthly.plist
The above worked, but the info which is supposed to help you delete it all together does NOT work and I would appreciate some help/comments on why it doesn't. Here is the info for deleting it:
To completely remove anacron from your system, delete (trash):
/usr/local/sbin/anacron
/usr/local/share/man/man5/anacrontab.5
/usr/local/share/man/man8/anacron.8
/Library/LaunchDaemons/anacron.plist
/etc/anacrontab
/var/spool/anacron
/Library/Receipts/Anacron.pkg
When I use Terminal to get in there and delete that stuff, when I try and delete Anacron, I'm given a list of file attributes (I guess) .. it looks something like this:
override rwxr-xr-x root/wheel for anacron?
What in the world does this mean and how in the world can I get this crap deleted from my system? Seems like everything I do is not enough to get this stuff deleted.
Thank you for your time"Are you borrowing some frined's account, you have lots of messages here for a guy fairly new to mac"
No, the mac is mine, and this is my account. I still consider myself pretty new to MAC OS X. The time of me registering here is right at the same time I received my iMac which is just over a year. To me that is still pretty new I may have a buttload of posts, but that doesn't mean I know a lot about MAC OS X and the MAC computers.
I certainly appreciate your help with this problem. It worked flawlessly. This is very much like DOS in windows......yuk, just reflecting on the past. Thank you again, sooo much. I now feel much better, what a relief.
Edit: Oh by the way, just answering "Yes" gave me, if I remember correctly, something about forbidden. But doing it the way you described above using the sudo lines worked great and it asked me for my user password, I put it in, then everything was ok, it deleted everything I wanted it to.
Message was edited by: QuickDraw -
I'm trying to convert an m4a voice note to either mp3 or wav and can't seem to get a straight answer on how to do it without a lot of jargon. Would appreciate the help.
Yes it does.
Audio formats supported: AAC (8 to 320 Kbps), Protected AAC (from iTunes Store), HE-AAC, MP3 (8 to 320 Kbps), MP3 VBR, Audible (formats 2, 3, 4, Audible Enhanced Audio, AAX, and AAX+), Apple Lossless, AIFF, and WAV
http://www.apple.com/ipad/specs/ -
I've had my new iMac for about a week now and am totally sick ofthe vagueries of Mavericks,
I would appreciate any help you guys could give me to help me 'downgrade' to Mountain Lion.
I understand that Mountain Lion has never been released on disc, so that would seem to be the major problem.
Thanks in advance
Roy136.If the Mac came pre-installed with Mavericks you can't downgrade. Have a look at mine and den.thed's comments here:
https://discussions.apple.com/message/23946758#23946758 -
How can I reset my Mac to default settings? Or how can I reset it to a prior date? My Mac has a virus and I would like to get rid of it. I would appreciate your help concerning this matter.
To restore it follow these instructions: What to do before selling or giving away your Mac.
Before you do the above check out the following;
Helpful Links Regarding Malware Problems
If you are having an immediate problem with ads popping up see The Safe Mac » Adware Removal Guide, AdwareMedic, or Remove unwanted adware that displays pop-up ads and graphics on your Mac - Apple Support.
Open Safari, select Preferences from the Safari menu. Click on Extensions icon in the toolbar. Disable all Extensions. If this stops your problem, then re-enable them one by one until the problem returns. Now remove that extension as it is causing the problem.
The following comes from user stevejobsfan0123. I have made minor changes to adapt to this presentation.
Fix Some Browser Pop-ups That Take Over Safari.
Common pop-ups include a message saying the government has seized your computer and you must pay to have it released (often called "Moneypak"), or a phony message saying that your computer has been infected, and you need to call a tech support number (sometimes claiming to be Apple) to get it resolved. First, understand that these pop-ups are not caused by a virus and your computer has not been affected. This "hijack" is limited to your web browser. Also understand that these messages are scams, so do not pay any money, call the listed number, or provide any personal information. This article will outline the solution to dismiss the pop-up.
Quit Safari
Usually, these pop-ups will not go away by either clicking "OK" or "Cancel." Furthermore, several menus in the menu bar may become disabled and show in gray, including the option to quit Safari. You will likely have to force quit Safari. To do this, press Command + option + esc, select Safari, and press Force Quit.
Relaunch Safari
If you relaunch Safari, the page will reopen. To prevent this from happening, hold down the 'Shift' key while opening Safari. This will prevent windows from the last time Safari was running from reopening.
This will not work in all cases. The shift key must be held at the right time, and in some cases, even if done correctly, the window reappears. In these circumstances, after force quitting Safari, turn off Wi-Fi or disconnect Ethernet, depending on how you connect to the Internet. Then relaunch Safari normally. It will try to reload the malicious webpage, but without a connection, it won't be able to. Navigate away from that page by entering a different URL, i.e. www.apple.com, and trying to load it. Now you can reconnect to the Internet, and the page you entered will appear rather than the malicious one. -
I have a MacBook Pro and would like to play VCD, which is not a supported disc. I opend the Quicktime and it showed up in the Dock but did not get a menu. Would appreciate any help.
Download a program called VLC.
http://www.videolan.org/vlc/download-macosx.html -
This week is my 8thweek of learning java and I am finding it tougher and tougher as the weeks go by. I have been working on this StudentSystem program for about a week now. I have done all I could but I am left with one part which I am finding it tough to handle.
I would appreciate if a good samaritan could add this code for me. I am at my wits end.
The program I am trying to write is supposed to add students with their personal information and then display them in a GUI.
I should be able to select a student and add a grade for that student.
Finally I should be able to get the average for all the grades added for this student and display the average grade.
My challenge is how to obtain all the added scores and show the students average in a new model.
I was thinking of adding a "Get Average" button , which will pop up a new window(Average) displaying the average of all the scores for the Student.
I just can't figure how to link this average display window to the Get Average button.
A student can have any number of grades.
Your help will be very much appreciated
Thanks in advance
Little Delmarie.
THIS IS WHAT I HAVE DONE SO FAR . IT COMPILES nicely in DOS and Visual age
// CODE GradeSystem
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
* UsingJLists.java
* This is a sample program for the use of JLists. You can add a student by entering their
* information a clicking on add. You can remove a student by entering their information and
* clicking on remove. They must be in the list to be removed. You can modify a student by
* entering their information and clicking add. You will be asked for the new student
* information when using modify. The add and remove buttons will disappear when modifying
* is underway and the new information is being collected for updating.
* @author Delmarie
public class GradeSystem extends JDialog {
Vector studentGrades = new Vector();
JButton add, modify, remove;
JList theJList;
JPanel buttonPanel, textPanel, labelPanel, masterPanel, jlistPanel, infoPanel;
JTextField score, possibleScore, gradeType;
JLabel label1, label2, label3;
public class ModifyHandler implements ActionListener {
public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
// get the student info from the text boxes
double dScore = 0;
double dPossibleScore = 0;
try {
String str1 = score.getText();
if (str1 != null) dScore = Double.parseDouble(str1);
String str2 = possibleScore.getText();
if (str2 != null) dPossibleScore = Double.parseDouble(str2);
catch(NumberFormatException e) {}
String sGradeType = gradeType.getText();
Grade grade = (Grade)theJList.getSelectedValue();
if (grade == null) {
score.setText("");
possibleScore.setText("");
gradeType.setText("");
return;
grade.setScore(dScore);
grade.setPossibleScore(dPossibleScore);
grade.setGradeType(sGradeType);
theJList.repaint();
public class RemoveHandler implements ActionListener {
public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
int removeIndex = theJList.getSelectedIndex();
if (removeIndex == -1) {
score.setText("");
possibleScore.setText("");
gradeType.setText("");
return;
DefaultListModel model = (DefaultListModel) theJList.getModel();
model.removeElementAt(removeIndex);
studentGrades.removeElementAt(removeIndex);
// clear the textboxes
score.setText("");
possibleScore.setText("");
gradeType.setText("");
public class AddHandler implements ActionListener {
public void actionPerformed(ActionEvent actionEvent) {
// get the student info from the text boxes
double dScore = 0;
double dPossibleScore = 0;
try {
String str1 = score.getText();
if (str1 != null) dScore = Double.parseDouble(str1);
String str2 = possibleScore.getText();
if (str2 != null) dPossibleScore = Double.parseDouble(str2);
catch(NumberFormatException e) {}
String sGradeType = gradeType.getText();
// get the model and add the student to the model
Grade g = new Grade();
g.setScore(dScore);
g.setPossibleScore(dPossibleScore);
g.setGradeType(sGradeType);
studentGrades.add(g);
DefaultListModel model = (DefaultListModel) theJList.getModel();
model.addElement(g);
// display the added element
theJList.setSelectedValue(g, true);
public class WindowHandler extends WindowAdapter {
public void windowClosing(WindowEvent e) {
setVisible(false);
/** Creates a new instance of UsingJLists */
public GradeSystem(JFrame owner, boolean modal) {
super(owner, modal);
// create all of the components, put them in panels, and put the panels in JFrame
add = new JButton("Add");
modify = new JButton("Modify");
remove = new JButton("Remove");
score = new JTextField("");
score.setColumns(10);
possibleScore = new JTextField("");
gradeType = new JTextField("");
label1 = new JLabel("score");
label2 = new JLabel("possibleScore");
label3 = new JLabel("gradeType");
FlowLayout flow = new FlowLayout();
FlowLayout flow1 = new FlowLayout();
FlowLayout flow2 = new FlowLayout();
GridLayout grid1 = new GridLayout(7,1);
GridLayout grid2 = new GridLayout(7,1);
BorderLayout border3 = new BorderLayout();
buttonPanel = new JPanel(flow);
buttonPanel.add(add);
buttonPanel.add(modify);
buttonPanel.add(remove);
labelPanel = new JPanel(grid1);
//labelPanel.setBorder(BorderFactory.createLineBorder(Color.black));
labelPanel.add(Box.createVerticalStrut(20));
labelPanel.add(label1);
labelPanel.add(Box.createVerticalStrut(20));
labelPanel.add(label2);
labelPanel.add(Box.createVerticalStrut(20));
labelPanel.add(label3);
labelPanel.add(Box.createVerticalStrut(20));
textPanel = new JPanel(grid2);
//textPanel.setBorder(BorderFactory.createLineBorder(Color.black));
textPanel.add(Box.createVerticalStrut(20));
textPanel.add(score);
textPanel.add(Box.createVerticalStrut(20));
textPanel.add(possibleScore);
textPanel.add(Box.createVerticalStrut(20));
textPanel.add(gradeType);
textPanel.add(Box.createVerticalStrut(20));
infoPanel = new JPanel(new FlowLayout());
infoPanel.setBorder(BorderFactory.createTitledBorder("Grade Information"));
infoPanel.add(Box.createHorizontalStrut(10));
infoPanel.add(textPanel);
infoPanel.add(Box.createHorizontalStrut(10));
infoPanel.add(labelPanel);
infoPanel.add(Box.createHorizontalStrut(10));
theJList = new JList(new DefaultListModel());
theJList.addListSelectionListener(new javax.swing.event.ListSelectionListener(){
public void valueChanged(ListSelectionEvent evt) {
Grade grade = (Grade)theJList.getSelectedValue();
if (grade == null) {
score.setText("");
possibleScore.setText("");
gradeType.setText("");
return;
score.setText(Double.toString(grade.getScore()));
possibleScore.setText(Double.toString(grade.getPossibleScore()));
gradeType.setText(grade.getGradeType());
//JLabel theLabel = new JLabel("Students");
jlistPanel = new JPanel(border3);
jlistPanel.setBorder(BorderFactory.createTitledBorder("List of Scores"));
jlistPanel.add(new JScrollPane(theJList));//, BorderLayout.SOUTH);
masterPanel = new JPanel(new GridLayout(1, 2));
masterPanel.setBorder(BorderFactory.createLineBorder(Color.black));
// masterPanel.add(Box.createHorizontalStrut(10));
masterPanel.add(infoPanel);
// masterPanel.add(Box.createHorizontalStrut(10));
masterPanel.add(jlistPanel);
// masterPanel.add(Box.createHorizontalStrut(10));
BorderLayout border = new BorderLayout();
this.getContentPane().setLayout(border);
Container theContainer = this.getContentPane();
theContainer.add(buttonPanel,BorderLayout.SOUTH);
theContainer.add(masterPanel, BorderLayout.CENTER);
// now add the event handlers for the buttons
AddHandler handleAdd = new AddHandler();
ModifyHandler handleModify = new ModifyHandler();
RemoveHandler handleRemove = new RemoveHandler();
add.addActionListener(handleAdd);
modify.addActionListener(handleModify);
remove.addActionListener(handleRemove);
// add the event handler for the window events
WindowHandler handleWindow = new WindowHandler();
this.addWindowListener(handleWindow);
setSize(600,300);
* Insert the method's description here.
* Creation date: (2/24/03 4:20:07 PM)
* @param v com.sun.java.util.collections.Vector
public void setStudentGrades(Vector v) {
studentGrades = v;
DefaultListModel model = (DefaultListModel) theJList.getModel();
model.removeAllElements();
int size = v.size();
for (int i = 0; i < size; i++) {
model.addElement(v.get(i));
score.setText("");
possibleScore.setText("");
gradeType.setText("");
setVisible(true);
// CODE2 StudentSystem
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.awt.*;
* UsingJLists.java
* This is a sample program for the use of JLists. You can add a student by entering their
* information a clicking on add. You can remove a student by entering their information and
* clicking on remove. They must be in the list to be removed. You can modify a student by
* entering their information and clicking add. You will be asked for the new student
* information when using modify. The add and remove buttons will disappear when modifying
* is underway and the new information is being collected for updating.
* @author Delmarie
public class StudentSystem extends JFrame {
StudentGradeBook studentGradeBook = new StudentGradeBook();
GradeSystem gradeSystem = new GradeSystem(this, true);
JButton add, modify, remove, bGrade;
JList theJList;
JPanel buttonPanel, textPanel, labelPanel, masterPanel, jlistPanel, infoPanel;
JTextField name, address, email, phone, courseName, courseDescription;
JLabel label1, label2, label3;
StudentSystem tempObjectRef; // used to hold a class level reference to object for dispose
boolean getStudentInfo = false;
int saveIndexInObject;
public class ModifyHandler implements ActionListener {
public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
// get the information for the student to modify
String studentName = name.getText();
String studentAddress = address.getText();
String studentEmail = email.getText();
if (!getStudentInfo) { // set up to get student info
// find the correct element of the model to remove and save in class variable
int removeIndex = -1;
DefaultListModel model = (DefaultListModel) theJList.getModel();
for (int i = 0; i < model.size(); i++) {
String temp = (String) model.elementAt(i);
if (temp.equals(name.getText())) {
removeIndex = i;
break;
saveIndexInObject = removeIndex;
if (removeIndex == -1) return;
// change the text on the border of the info box
infoPanel.setBorder(BorderFactory.createTitledBorder("Enter new Student Info"));
// set up to get the modified info and remove some of the buttons
getStudentInfo = true;
buttonPanel.removeAll();
buttonPanel.add(modify);
buttonPanel.add(bGrade);
buttonPanel.repaint();
else {
// reset the border and change the element at the provided index (from if above)
getStudentInfo = false;
infoPanel.setBorder(BorderFactory.createTitledBorder("Student Information"));
DefaultListModel model = (DefaultListModel) theJList.getModel();
model.setElementAt(name.getText(), saveIndexInObject);
Student student = studentGradeBook.findStudent(saveIndexInObject);
student.setName(name.getText());
student.setAddress(address.getText());
student.setEmail(email.getText());
student.setPhone(phone.getText());
student.setCourseName(courseName.getText());
student.setCourseDescription(courseDescription.getText());
// clear the textboxes
name.setText("");
address.setText("");
email.setText("");
phone.setText("");
courseName.setText("");
courseDescription.setText("");
// restore all of the buttons
buttonPanel.removeAll();
buttonPanel.add(add);
buttonPanel.add(modify);
buttonPanel.add(remove);
buttonPanel.add(bGrade);
buttonPanel.repaint();
public class RemoveHandler implements ActionListener {
public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
// get the student info from the text boxes
String studentName = name.getText();
String studentAddress = address.getText();
String studentEmail = email.getText();
// find the element to remove by name (you could use email address etc also)
int removeIndex = -1; // = theJList.getSelectedIndex();
DefaultListModel model = (DefaultListModel) theJList.getModel();
for (int i = 0; i < model.size(); i++) {
String temp = (String) model.elementAt(i);
if (temp.equals(name.getText())) {
removeIndex = i;
break;
if (removeIndex == -1) return;
// remove the element at the index from the for loop
model.removeElementAt(removeIndex);
Student student = studentGradeBook.findStudent(removeIndex);
studentGradeBook.removeStudent(student);
// clear the textboxes
name.setText("");
address.setText("");
email.setText("");
phone.setText("");
courseName.setText("");
courseDescription.setText("");
public class AddHandler implements ActionListener {
public void actionPerformed(java.awt.event.ActionEvent actionEvent) {
// get the student info from the text boxes
String studentName = name.getText();
String studentAddress = address.getText();
String studentEmail = email.getText();
String studentPhone = phone.getText();
String studentCourseName = courseName.getText();
String studentCourseDescription = courseDescription.getText();
// get the model and add the student to the model
studentGradeBook.addStudent(studentName, studentAddress, studentEmail, studentPhone,
studentCourseName, studentCourseDescription);
DefaultListModel model = (DefaultListModel) theJList.getModel();
model.addElement(studentName);
// reset the text boxes
name.setText("");
address.setText("");
email.setText("");
phone.setText("");
courseName.setText("");
courseDescription.setText("");
public class WindowHandler extends WindowAdapter {
public void windowClosing(WindowEvent e) {
gradeSystem.dispose();
tempObjectRef.dispose();
System.exit(0);
/** Creates a new instance of UsingJLists */
public StudentSystem() {
// create all of the components, put them in panels, and put the panels in JFrame
add = new JButton("Add");
modify = new JButton("Modify");
remove = new JButton("Remove");
bGrade = new JButton("Grades");
name = new JTextField("");
name.setColumns(10);
address = new JTextField("");
email = new JTextField("");
phone = new JTextField("");
courseName = new JTextField("");
courseDescription = new JTextField("");
label1 = new JLabel("name");
label2 = new JLabel("address");
label3 = new JLabel("email");
JLabel label4 = new JLabel("phone");
JLabel label5 = new JLabel("courseName");
JLabel label6 = new JLabel("courseDescription");
FlowLayout flow = new FlowLayout();
FlowLayout flow1 = new FlowLayout();
FlowLayout flow2 = new FlowLayout();
GridLayout grid1 = new GridLayout(13,1);
GridLayout grid2 = new GridLayout(13,1);
BorderLayout border3 = new BorderLayout();
buttonPanel = new JPanel(flow);
buttonPanel.add(add);
buttonPanel.add(modify);
buttonPanel.add(remove);
buttonPanel.add(bGrade);
bGrade.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
int index = theJList.getSelectedIndex();
if (index == -1) return;
Student student = studentGradeBook.findStudent(index);
gradeSystem.setStudentGrades(student.getStudentGrades());
labelPanel = new JPanel(grid1);
//labelPanel.setBorder(BorderFactory.createLineBorder(Color.black));
labelPanel.add(Box.createVerticalStrut(20));
labelPanel.add(label1);
labelPanel.add(Box.createVerticalStrut(20));
labelPanel.add(label2);
labelPanel.add(Box.createVerticalStrut(20));
labelPanel.add(label3);
labelPanel.add(Box.createVerticalStrut(20));
labelPanel.add(label4);
labelPanel.add(Box.createVerticalStrut(20));
labelPanel.add(label5);
labelPanel.add(Box.createVerticalStrut(20));
labelPanel.add(label6);
labelPanel.add(Box.createVerticalStrut(20));
textPanel = new JPanel(grid2);
//textPanel.setBorder(BorderFactory.createLineBorder(Color.black));
textPanel.add(Box.createVerticalStrut(20));
textPanel.add(name);
textPanel.add(Box.createVerticalStrut(20));
textPanel.add(address);
textPanel.add(Box.createVerticalStrut(20));
textPanel.add(email);
textPanel.add(Box.createVerticalStrut(20));
textPanel.add(phone);
textPanel.add(Box.createVerticalStrut(20));
textPanel.add(courseName);
textPanel.add(Box.createVerticalStrut(20));
textPanel.add(courseDescription);
textPanel.add(Box.createVerticalStrut(20));
infoPanel = new JPanel(new FlowLayout());
infoPanel.setBorder(BorderFactory.createTitledBorder("Student Information"));
infoPanel.add(Box.createHorizontalStrut(10));
infoPanel.add(textPanel);
infoPanel.add(Box.createHorizontalStrut(10));
infoPanel.add(labelPanel);
infoPanel.add(Box.createHorizontalStrut(10));
theJList = new JList(new DefaultListModel());
theJList.addListSelectionListener(new javax.swing.event.ListSelectionListener(){
public void valueChanged(ListSelectionEvent evt) {
int index = theJList.getSelectedIndex();
if (index == -1) return;
Student student = studentGradeBook.findStudent(index);
name.setText(student.getName());
address.setText(student.getAddress());
email.setText(student.getEmail());
phone.setText(student.getPhone());
courseName.setText(student.getCourseName());
courseDescription.setText(student.getCourseDescription());
//JLabel theLabel = new JLabel("Students");
jlistPanel = new JPanel(border3);
jlistPanel.setBorder(BorderFactory.createTitledBorder("List of Students"));
jlistPanel.add(new JScrollPane(theJList), BorderLayout.SOUTH);
masterPanel = new JPanel(flow1);
masterPanel.setBorder(BorderFactory.createLineBorder(Color.black));
masterPanel.add(Box.createHorizontalStrut(10));
masterPanel.add(infoPanel);
masterPanel.add(Box.createHorizontalStrut(10));
masterPanel.add(jlistPanel);
masterPanel.add(Box.createHorizontalStrut(10));
BorderLayout border = new BorderLayout();
this.getContentPane().setLayout(border);
Container theContainer = this.getContentPane();
theContainer.add(buttonPanel,BorderLayout.SOUTH);
theContainer.add(masterPanel, BorderLayout.NORTH);
// now add the event handlers for the buttons
AddHandler handleAdd = new AddHandler();
ModifyHandler handleModify = new ModifyHandler();
RemoveHandler handleRemove = new RemoveHandler();
add.addActionListener(handleAdd);
modify.addActionListener(handleModify);
remove.addActionListener(handleRemove);
// add the event handler for the window events
WindowHandler handleWindow = new WindowHandler();
this.addWindowListener(handleWindow);
// make the frame visible and set its size and show it.
this.setVisible(true);
this.pack();//setSize(600,300);
this.show();
public static void main (String [] args) {
StudentSystem mainObject = new StudentSystem();
mainObject.setTempObjectRef(mainObject);
public void setTempObjectRef(StudentSystem obj) {
// set up a reference to this object for use in closing the window method dispose
tempObjectRef = obj;
// CODE 3 Student
import java.util.*;
* Insert the type's description here.
* Creation date: (2/24/03 11:23:58 AM)
* @author: Delmarie
public class Student {
private String name, address, phone, email, courseName, courseDescription;
private Vector studentGrades;
* Student constructor comment.
public Student() {
studentGrades = new Vector();
* Insert the method's description here.
* Creation date: (2/24/03 11:39:56 AM)
* @param score double
* @param possibleScore double
* @param gradeType java.lang.String
public void addGrade(double score, double possibleScore, String gradeType) {
Grade g = new Grade();
g.setScore(score);
g.setPossibleScore(possibleScore);
g.setGradeType(gradeType);
studentGrades.add(g);
* Insert the method's description here.
* Creation date: (2/24/03 11:47:01 AM)
* @return Grade
* @param index int
public Grade findGrade(int index) {
return (Grade)studentGrades.get(index);
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @return java.lang.String
public java.lang.String getAddress() {
return address;
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @return java.lang.String
public java.lang.String getCourseDescription() {
return courseDescription;
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @return java.lang.String
public java.lang.String getCourseName() {
return courseName;
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @return java.lang.String
public java.lang.String getEmail() {
return email;
* Insert the method's description here.
* Creation date: (2/24/03 11:48:03 AM)
* @return java.util.Iterator
public Iterator getGradeIterator() {
return studentGrades.iterator();
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @return java.lang.String
public java.lang.String getName() {
return name;
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @return java.lang.String
public java.lang.String getPhone() {
return phone;
* Insert the method's description here.
* Creation date: (2/25/03 10:56:13 AM)
* @return java.util.Vector
public java.util.Vector getStudentGrades() {
return studentGrades;
* Insert the method's description here.
* Creation date: (2/24/03 11:41:52 AM)
* @param grade Grade
public void removeGrade(Grade grade) {
studentGrades.remove(grade);
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @param newAddress java.lang.String
public void setAddress(java.lang.String newAddress) {
address = newAddress;
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @param newCourseDescription java.lang.String
public void setCourseDescription(java.lang.String newCourseDescription) {
courseDescription = newCourseDescription;
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @param newCourseName java.lang.String
public void setCourseName(java.lang.String newCourseName) {
courseName = newCourseName;
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @param newEmail java.lang.String
public void setEmail(java.lang.String newEmail) {
email = newEmail;
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @param newName java.lang.String
public void setName(java.lang.String newName) {
name = newName;
* Insert the method's description here.
* Creation date: (2/24/03 11:28:57 AM)
* @param newPhone java.lang.String
public void setPhone(java.lang.String newPhone) {
phone = newPhone;
* Insert the method's description here.
* Creation date: (2/25/03 10:56:13 AM)
* @param newStudentGrades java.util.Vector
public void setStudentGrades(Vector newStudentGrades) {
studentGrades = newStudentGrades;
//CODE 4 StudentGradeBook
import java.util.*;
* Insert the type's description here.
* Creation date: (2/24/03 11:50:35 AM)
* @author: delmarie
public class StudentGradeBook {
private Vector allStudents;
* StudentGradeBook constructor comment.
public StudentGradeBook() {
allStudents = new Vector();
* Insert the method's description here.
* Creation date: (2/24/03 11:54:01 AM)
* @param name java.lang.String
* @param address java.lang.String
* @param email java.lang.String
* @param phone java.lang.String
public void addStudent(String name, String address, String email, String phone) {
Student student = new Student();
student.setName(name);
student.setAddress(address);
student.setEmail(email);
student.setPhone(phone);
allStudents.add(student);
* Insert the method's description here.
* Creation date: (2/24/03 11:54:01 AM)
* @param name java.lang.String
* @param address java.lang.String
* @param email java.lang.String
* @param phone java.lang.String
public void addStudent(String name, String address, String email, String phone,
String courseName, String courseDescription) {
Student student = new Student();
student.setName(name);
student.setAddress(address);
student.setEmail(email);
student.setPhone(phone);
student.setCourseName(courseName);
student.setCourseDescription(courseDescription);
allStudents.add(student);
* Insert the method's description here.
* Creation date: (2/24/03 12:00:53 PM)
* @param index Student
public Student findStudent(int index) {
return (Student)allStudents.get(index);
* Insert the method's description here.
* Creation date: (2/24/03 12:02:43 PM)
* @return java.util.Iterator
public Iterator getStudentIterator() {
return allStudents.iterator();
* Insert the method's description here.
* Creation date: (2/24/03 11:59:41 AM)
* @paFirst of all, this is an extremely advanced project for someone only having 8 weeks of experience. I'm not sure what the "real story" (e.g., the professor teaching the course majored in Public Speaking, student told counselor that she could handle skipping the preliminary course, student transferring from college that used another language as the core language) is but I'll give you my 2 cents anyway.
Suggestions:
I personally would start over keeping the following in mind.
1.) Write a student class that encapsulates/holds the student's personal information, history of grades, computes average and whatever eles is needed from the student.
--the history of grades can be stored in any list structure, preferably some sort of array, since all you going to do with them is average them.
2.) Keep your window display as simple as possible. Basically from my understanding you'll need at a minimum:
JTextField First_Name, Last_Name, Street_Address, City, State, Zip, Average_Grade;
You can either have labels for these or fill them in with their respective labels if they are empty.
JButton New, Average, Add
I don't know the components name, but I'm sure Java has some sort of drop down list that you will need so you can add students' names to it as they are added.
The following is a scenario of how this will come together, initially assuming there are no students:
Your program starts with all the JTextFields containing their repsective labels and grayed out, it's an option or method in JTextField. The drop down list is empty. The teacher has to press the New button, at which time the grayed out text fields become editable. Teacher completes filling out the form and presses the Add button. At this point, your program gathers the information from the text fields (First_Name, Last_Name...) and instantiates or creates a new Student object from your Student class and adds the student name to the drop down list. Now that the new Student object has been created and constructed, you need to store it in you lists structure for later retrieval or writing to disk later.
Now there is a student in the database. So the teacher comes along and wants to average Davey's grades. The teacher goes to the dropdown list and selects Davey's name, which triggers an event in you program. You retrieve the name of the student from your window's drop down list, pull the Student record from your list structure, ask it for the average grade and populate the other text fields in your window with the records information (First_Name, Last_Name, Address...). The Average_Grade text field is made editable and the value of getAverage from the Student object is inserted. The chain of envents keep rolling much in the same manner.
If you made it this far and much of what I said is confusing, then I believe you are in over your head and I'm sorry. If much of what I said sounds similar to what you have or at least you understand a majority of what I said, then let me comment on where you started going awry.
Regarding this project, I believe you envisioned each chain of events spawning a new window, such as user clicks the New button so your program would spawn a new window titled "Enter new Student Information."
You can represent all the task and modes required in this project using a single window display by manipulating the components within the window. If you are looking at a window and suddenly a text box is grayed out, the program is sending a signal to you that its mode has changed.
I hope this helps and good luck. -
Hi, I'm new to this forum want help from you...
I've a Power Mac (7200/120) & been using for almost 10 years. Now the light of the Monitor is fadeing within five min. I've huge files
written in Bengali Language with a font named BengaliCS. I want to convert this files to Windows so that I can edit those files into
window. I heard there are softwares that convert Mac to Window but don't know they can convert to regional language.
I would appreciate if one can help me on this.
thankschand@007 wrote:
I've huge files
written in Bengali Language with a font named BengaliCS. I want to convert this files to Windows so that I can edit those files into
window.
You need to tell us A) what app did you create those files with? and B) what format are they in (.doc, .txt, etc)?
It may be possible to just transfer the files and your font to another machine without conversion depending on how they were made.
Where did you get the BengaliCS font? -
I have a huge mess I would appreciate any help possible with Itunes!
I've had Itunes forever now and it's been fine. With this last upgrade, it's created some problems. Half of my new playlists created have disappeared. The music is still there in the library, just the playlists are gone which was enough to fill a 60 gb ipod. Itunes now reads at the bottom I have 1022 GB of music - my hard drive is 250gb so that's obviously incorrect. My iphone will not recognize my calendar or my contacts in Office 2003 with all updates - so basically it's hosed. Someone had given me a link to uninstall it which I did. I restarted. Then I uninstalled apple mobile something or other and restarted. Then I deleted the itunes folder from program files emptied recycle bin and then restarted. I then proceeded to re-download and install itunes. I went through the hour process of uninstall and restart then install. I get everything finished and open itunes expecting to see a fresh clean slate and it's exactly the same. What did I do wrong since I followed these instructions at the bottom for uninstalling http://docs.info.apple.com/article.html?artnum=305845
I need help. I figure at this point I'll take my losses with my playlists I have spent years building just to have everything working again. I appreciate any help you can give.Assume you mean "invitations" and not "innovations"?
If you have pages 4, just do File > New From Template Chooser and select Invitations under the Page Layout category.
Maybe you are looking for
-
Can multiple hosts exist on single instance
Hi B2B gurus, I would like to present a scenario i am trying to work out. Lets say there are 2 buyers B1 and B2 And 2 suppliers S1 and S2. The buyers send a PO to the supplier and the lets say the Supplier sends an Invoice to the Buyer. Also there ar
-
Error Undeploying a EAR File Containing Resource Adapter
Hi, I am trying to undeploy a ear file that contains a 1) one inbound R.A(resource adapter), 2) one outbound R.A and 3) few EJBs. The undeploy command "java -jar admin.jar undelpoy..." executes without any error, however the thread process started by
-
HELP I cant install itunes 10.5 on Vista
My husband is going to kill me...I was trying to update iTunes so I could update my iPad and I kept getting the same error message, "The installer has insufficient priviledges to modify this file: C\programfile\apple software update\softwareupdate.re
-
Hi Please rename the wage type XXXX-" Anniversary gift HAIL" as "Retention Bonus u2013 HAIL" as we are not using wage type XXXX. So for the above, What all the steps do I need follow.Can you please assist me. Thanks, Spaul.
-
User Crontab not started automaticaly
Dear all I have following problem with my "user" crontabs: OD Master (OS 10.5.1) with different users defined. I log into that server with ssh with a "user" account (not admin). I define an cron job with crontab -e. Everything now works like expected