MATLAB-利用下拉框進行搜尋查詢,並把搜尋後的結果列印到edit控制元件上
阿新 • • 發佈:2022-05-23
以內部材料為例
先是在下拉框裡面設定引數 然後在“查詢”按鈕裡面寫程式碼
程式碼:
list2=get(handles.popupmenu2,'String'); list3=get(handles.popupmenu3,'String'); list4=get(handles.popupmenu4,'String'); list5=get(handles.popupmenu5,'String'); val1=get(handles.popupmenu1,'String');%顆粒型別 val2=get(handles.popupmenu2,'Value');%顆粒型別 val3=get(handles.popupmenu3,'Value');%衝擊角度 val4=get(handles.popupmenu4,'Value');%溫度 val5=get(handles.popupmenu5,'Value');%壓力 A1=val1;%顆粒型別 A2=num2str(list2{val2});%顆粒型別 A3=num2str(list3{val3});%衝擊角度 A4=num2str(list4{val4});%溫度 A5=num2str(list5{val5});%壓力 sqldata=load('data.mat'); sqldata=struct2cell(sqldata); sqldata=sqldata{1,1}; B=sqldata(1:25,:); flag=0; num=[]; for i=1:25 if strcmp(A1,B{i,4}) && strcmp(A2,B{i,5}) && strcmp(A3,B{i,6}) && strcmp(A4,B{i,7}) && strcmp(A5,B{i,8}) num=[num;i]; flag=1; end end if length(num)==1 set(handles.edit8,'String',B{num(1),1});%組別 set(handles.edit9,'String',B{num(1),10});%磨損量 set(handles.edit10,'String',B{num(1),11});%磨損率 set(handles.edit11,'String',B{num(1),9});%衝擊時間 end if length(num)>1 m=length(num); c=num2str(B{num(1),1});%組別 d=B{num(1),10};%磨損量 e=B{num(1),11};%磨損率 f=B{num(1),9};%衝擊時間 for j=2:m c=strcat(c,'/'); c=strcat(c,num2str(B{num(j),1})); d=strcat(d,'/'); d=strcat(d,B{num(j),10}); e=strcat(e,'/'); e=strcat(e,B{num(j),11}); f=strcat(f,'/'); f=strcat(f,B{num(j),9}); end set(handles.edit8,'String',c);%組別 set(handles.edit9,'String',d);%磨損量 set(handles.edit10,'String',e);%磨損率 set(handles.edit11,'String',f);%衝擊時間 end if flag==0 errordlg('沒有查詢到該資料','錯誤');%內容,標題 end
查詢結果:
1.單行資料(先拿PAT展示)
2.多行資料
3.沒有資料
解析
因為資料有多行 並且需要按照特定的格式進行輸出 因為定義了一個變數num來統計匹配的個數
get(handles.popupmenu2,'String')
上面這個是用來獲取popupmenu裡面所有的引數 返回string型別
get(handles.popupmenu2,'Value')
這個是獲取popupmenu裡面選擇的值的索引 返回1、2、3、4、5...。這種
根據索引就可以找出對應的下拉框顯示的值
來進行匹配判斷
個數為1直接列印 個數超過1 按照不同的格式列印