2016-09-14 108 views
0

我有數據庫名爲'數據',在gui我有3個編輯框,這是名稱,GPA,工資和一個按鈕。在數據庫中的數據是這樣的:索引超過MATLAB矩陣數據庫中的矩陣尺寸誤差

field= {'name','gpa','salary'} 
newdata = {'Andre',3.2,$1000} 

我的程序是這樣的:

conn = database('db1_mysql','root',''); 
sql = ['select * from data where name =','''',handles.name,'''']; 
data = fetch(conn,sql) 
handles.data = data; 
guidata(hObject,handles) 
if isempty(data) 
    msgbox('data not found') 
    set(handles.gpa,'String','') 
    set(handles.salary,'String','') 
else 
    set(handles.gpa,'String',data(1,2)) 
    set(handles.salary,'String',data(1,3)) 
end 

我想要的是,如果我在貴名編輯框中鍵入安德烈,他的GPA和薪水在其他編輯框中顯示出來。但我收到錯誤:索引超過矩陣尺寸。我的數據庫有1行,3列。它怎麼能不工作。即時通訊使用matlab R2016a

+0

是什麼'data'看,如果你調用'DISP(數據),如' – Suever

+0

如果鍵入安德烈在編輯框結果是---名稱:{'Andre'}, gpa:3.2000, 工資:$ 1000 –

+0

那麼它是一個'struct'嗎?請與'類(數據)' – Suever

回答

0

在你的情況下fetch的結果將是一個結構,因此訪問您需要使用dot referencing而不是()索引的個別元素。

set(handles.gpa, 'String', data.gpa) 
set(handles.salary, 'String', data.salary) 

如果你想顯示的薪水作爲一個整體數字,你可以把它用num2str

set(handles.salary, 'String', num2str(data.salary, '%d')) 
+0

謝謝你,它工作得很好!。還有1件事,先生,如果薪水顯示如此'1e + 06'如何解決?非常感謝 –

+0

@AlfiNugraha更新 – Suever

+0

先生,你想幫我解決這個問題嗎? http://stackoverflow.com/questions/39488338/reference-to-non-existent-field-error-when-showing-database-data-to-editbox-in-g。謝謝b4 –