先是在下拉框里面设置参数 然后在“查询”按钮里面写代码
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
因为数据有多行 并且需要按照特定的格式进行输出 因为定义了一个变量num来统计匹配的个数
get(handles.popupmenu2,'String')
上面这个是用来获取popupmenu里面所有的参数 返回string类型
get(handles.popupmenu2,'Value')
这个是获取popupmenu里面选择的值的索引 返回1、2、3、4、5...。这种
根据索引就可以找出对应的下拉框显示的值
来进行匹配判断
个数为1直接打印 个数超过1 按照不同的格式打印