1. 程式人生 > 其它 >MATLAB-利用下拉框進行搜尋查詢,並把搜尋後的結果列印到edit控制元件上

MATLAB-利用下拉框進行搜尋查詢,並把搜尋後的結果列印到edit控制元件上

以內部材料為例

先是在下拉框裡面設定引數 然後在“查詢”按鈕裡面寫程式碼

程式碼:

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 按照不同的格式列印