Error using matlab.ui.control.EditField/set.Value 'Value' must be a character vector or a string scalar.
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Forrest Ward
am 2 Jun. 2020
Kommentiert: Forrest Ward
am 2 Jun. 2020
So I've using App Designer to import a file. I'm giving the user an option to pick Beginning and Endings dates for the file that they are importing. Here is some of my code that I've used in the past (as a function) to check to see if the user put anything for the Beginning dates and if they did, it uses 'datetime' and 'timerange' to and the dates to the readtable function.
if ~isempty(app.BeginningEditField.Value)
app.BeginningEditField.Value = datetime(app.BeginningEditField.Value,'InputFormat',app.OutputDateTimeStringFormat);
app.EndingEditField.Value = datetime(app.EndingEditField.Value,'InputFormat',app.OutputDateTimeStringFormat);
TR = timerange(app.BeginningEditField.Value, app.EndingEditField.Value, 'closed');
InTable = InTable(TR,:);
end
The variable app.OutputDateTimeStringFormat is set to 'yyyy/MM/dd HH:mm:ss'
Whever I type in a date in the Beginning and Ending Edit Field (with the same format as the app.OutputDateTimeStringFormat) I get this error.
Error using matlab.ui.control.EditField/set.Value (line 98)
'Value' must be a character vector or a string scalar.
I've tried using 'num2str(app.BeginningEditField.Value)' to possible change that into a string which could be used with this function but that does not work.
P.S. this error occurs on the 2nd and 3rd line. (where it uses 'datetime' function)
2 Kommentare
Sampath Rachumallu
am 2 Jun. 2020
Are you using 'datepicker' to ask user to select the dates or an edit field?
Akzeptierte Antwort
Fangjun Jiang
am 2 Jun. 2020
Bearbeitet: Fangjun Jiang
am 2 Jun. 2020
- The value for "app.BeginningEditField.Value" needs to be a character vector or string scalr. datetime() returns an object of the "datetime" class. That is the mismatch.
- Try datestr() instead of num2str()
- You are re-assign "app.BeginningEditField.Value" in the code. Would using a separate variable avoid this problem?
if ~isempty(app.BeginningEditField.Value)
StartValue = datetime(app.BeginningEditField.Value,'InputFormat',app.OutputDateTimeStringFormat);
EndValue = datetime(app.EndingEditField.Value,'InputFormat',app.OutputDateTimeStringFormat);
TR = timerange(StartValue, EndValue, 'closed');
InTable = InTable(TR,:);
end
4 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Tables finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!