How to make an app that does not loose data when it's closed?

3 views (last 30 days)
I have an app kind of a calculator. It stores data in a UITable with a special property that increases with each pressing on the button to store the data in the app. UITable and its variable are reset when the app restarted. Is there a way to prevent the them to get reset and continue from the previous work?

Accepted Answer

dpb
dpb on 24 Nov 2023
Edited: dpb on 24 Nov 2023
Do you want/need the UITable to contain the previous data, too? Or just add onto the saved data what is new in the user table each time?
Since you're using a table component anyway, it would be simplest to use writetable and its companion; there's a named parameter-value pair 'WriteMode' with the value 'Append' for precisely the purpose of adding to the existing data.
If you want the table repopulated first, then read the file and put into the table; you'll then need to keep a pointer to how much was already there (or, if the user can change something before, then just rewrite the whole file). If not, but starting with a new, clean user interface, you're essentially done.
  3 Comments
piston_pim_offset
piston_pim_offset on 27 Nov 2023
Now app can save the data without overwriting.
But there is another problem:
Can we rewrite a row of the data if one element is the same in a row?
dpb
dpb on 30 Nov 2023
Need more complete description of the problem; if the table is user-editable and the user changes an existing line, it will be rewritten as changed. If you are continuing to populate the table with the complete content as you first described, then simply read/writing the whole table every time is by far the simplest expedient.
If you're not repopulating the user table, but adding new content and appending, then it would take background work to read the file portion and compare to the new data to find any duplicate entries.
We simply don't have a sufficient description of how your app works to be able to know what it is you're trying to do...

Sign in to comment.

More Answers (1)

Angelo Yeo
Angelo Yeo on 24 Nov 2023
I understand you do not want to overwrite previous files and want to make new name everytime. I suggest you save data with time marker of present time. For example,
filename = "myfile_"+string(datetime('now', 'format', 'yyyyMMddHHmmss'))+".mat";
save(filename, 'mydata')
When you come back, you can use the latest data among the "mat" based on the filenames.
  3 Comments
piston_pim_offset
piston_pim_offset on 24 Nov 2023
Edited: piston_pim_offset on 24 Nov 2023
Can we save all data in a single file (excel if probable) @Angelo Yeo? I tried ".xlsx" extension for excel, but it gave an error. And l also tried to fit all the data in a single file by using a cell array as a private property, again an error line appeared saying "variable could'nt found" or something like that.
Angelo Yeo
Angelo Yeo on 24 Nov 2023
If you only specify the filename, all variables in base workspace will be saved as "mat".
If you want to save files as xlsx, try to use writetable.

Sign in to comment.

Categories

Find more on Develop Apps Using App Designer in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!